From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6488313435861811200 X-Received: by 10.25.202.4 with SMTP id a4mr372019lfg.32.1511190432772; Mon, 20 Nov 2017 07:07:12 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.25.215.94 with SMTP id o91ls199343lfg.13.gmail; Mon, 20 Nov 2017 07:07:12 -0800 (PST) X-Google-Smtp-Source: AGs4zMb0xdWo4i3QQYVGorjYA3aUBs4Rn04w2Zp3YdmkX8SVzUhJxqNLDjaUMu2DANlwStNJVXXs X-Received: by 10.46.2.71 with SMTP id 68mr464303ljc.16.1511190432049; Mon, 20 Nov 2017 07:07:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511190432; cv=none; d=google.com; s=arc-20160816; b=x5kcicdnf+vlA2GDR2+g/+H0M7Tt0wlnIplHmMg8iJcpnVq/Tt72YtXptSsyNcCiaZ SLguNzeNSkSdrvznKdRX6LUFRb14qNZw02XuxdbjlgLCoSgYE844zxsvEYsj4tpHVyKh HuEBT7jZKtb5WTn9C2Yyz0nHGX/7wJppP8qb1elhH94lI0Uiwty52SHrlv/pVSfT5/S0 0+qllR6k/CuaukC1HQQHqhZKt5dChad4fGIwIttF1VOyVdFGzv9RviGaC+U9V/PHPla7 dOyWyKEVgSc77r+aF9MsvJa/lLwGgOpTcEZdA7HJTrhn8drZXUzWi3nbGT9H1A0QEx3E 58pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=ZYpKiefiF30PrHQksdq0FkdmXqIZv7O/VEkuaEgJ3DY=; b=cvoKpbTnLFAwak0Q/LUvYsSDfNlYH0kOWQPnpAbbhT8uzrcifDD1DGXmymkkFKPHoQ HmRzxVoKHukUQn0btsutR5c356vAkb/ZQFxBUf+KkjORLlLTtZO86lJ0NcxVhHnxLoOM QhE7PvZxWjuJ8GcmmpKF04/qZm0FeciOscg49SecH4CUjjW4sq1AWuZqPAC1qzlrRmFi R6/Bln5GKnd0+97VEYEjaTOdF8dHQGuyTOoUTxtF0CBBG9Fs8eLui3vjsJj7EsrbsPYP sHBzia3jz7DsR2a8cP8Jo9N0ZZkEVLB+eI9AntQRbp5O5TsNgv/D4JVFgT8nkJJNGdv4 TAuw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Return-Path: Received: from aqmola.ilbers.de (aqmola.ilbers.de. [85.214.62.211]) by gmr-mx.google.com with ESMTPS id 198si201879ljj.1.2017.11.20.07.07.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Nov 2017 07:07:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) client-ip=85.214.62.211; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: best guess record for domain of asmirnov@ilbers.de designates 85.214.62.211 as permitted sender) smtp.mailfrom=asmirnov@ilbers.de Received: from localhost.localdomain ([188.227.110.165]) (authenticated bits=0) by aqmola.ilbers.de (8.14.4/8.14.4/Debian-4+deb7u1) with ESMTP id vAKF6sQf030584 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Nov 2017 16:06:59 +0100 From: Alexander Smirnov To: isar-users@googlegroups.com Cc: Alexander Smirnov Subject: [PATCH] Map git objects to buildchroot Date: Mon, 20 Nov 2017 18:06:41 +0300 Message-Id: <20171120150641.9645-1-asmirnov@ilbers.de> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171120103728.08714150@md1em3qc> References: <20171120103728.08714150@md1em3qc> X-TUID: kZKZNH5002/e Hi Christian, The patch above has 2 major issues: 1. It mounts ${GITDIR} to buildchroot during package building. This variable is static, so it's the same for each recipe. This means that if several packages are building in parallel, the folder ${BUILDCHROOT_DIR}/${GITDIR} could be mounted/unmounted while there is active I/O operation by another package. To be honest, I don't know what could happen, but believe in worst case. 2. Using host configuration in buildchroot could lead to some problems. Lets consider the following example: - User override ${DL_DIR} to point it to local cache, let's say: /home/builder/XXX - Isar uses the following path to build package YYY: /home/builder/YYY - If XXX equals YYY, you will probably experience some problems, because your source tree will be overriden by incorect mount. So I'd see the more generic solution like patch below: 8<-- dpkg-base: Map git objects to buildchroot This patch mounts git repository to buildchroot into the respective folder: /git/$REPO_NAME Also it updates git alternative to correctly point to objects in buildchroot. Signed-off-by: Alexander Smirnov --- meta/classes/dpkg-base.bbclass | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 35af6d5..147cfce 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -19,12 +19,25 @@ dpkg_runbuild() { # Wrap the function dpkg_runbuild with the bind mount for buildroot do_build() { + if [ -d ${WORKDIR}/git/.git ]; then + OBJ_PATH=$(cat ${WORKDIR}/git/.git/objects/info/alternates) + REPO_PATH=$(dirname $OBJ_PATH) + REPO_NAME=$(basename $REPO_PATH) + sudo mkdir -p ${BUILDCHROOT_DIR}/git/$REPO_NAME + sudo mount --bind $REPO_PATH ${BUILDCHROOT_DIR}/git/$REPO_NAME + echo "/git/$REPO_NAME/objects" > ${WORKDIR}/git/.git/objects/info/alternates + fi + mkdir -p ${BUILDROOT} sudo mount --bind ${WORKDIR} ${BUILDROOT} _do_build_cleanup() { ret=$? sudo umount ${BUILDROOT} 2>/dev/null || true sudo rmdir ${BUILDROOT} 2>/dev/null || true + if [ -d ${WORKDIR}/git/.git ]; then + sudo umount ${BUILDCHROOT_DIR}/git/$REPO_NAME + sudo rm -rf ${BUILDCHROOT_DIR}/git/$REPO_NAME + fi (exit $ret) || bb_exit_handler } trap '_do_build_cleanup' EXIT -- 2.9.5