From: Henning Schild <henning.schild@siemens.com>
To: Alexander Smirnov <asmirnov@ilbers.de>
Cc: <isar-users@googlegroups.com>
Subject: Re: [PATCH] Map git objects to buildchroot
Date: Mon, 20 Nov 2017 16:32:16 +0100 [thread overview]
Message-ID: <20171120163216.494df210@md1em3qc> (raw)
In-Reply-To: <20171120150641.9645-1-asmirnov@ilbers.de>
Am Mon, 20 Nov 2017 18:06:41 +0300
schrieb Alexander Smirnov <asmirnov@ilbers.de>:
> 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.
True, that must not happen!
> 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 <asmirnov@ilbers.de>
> ---
> 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
I would not do this either. There should be one mount in buildchroot.bb
and one umount. Additional umounts could be allowed in exception
handlers, in case they can not call out to functions from buildchroot.
Henning
next prev parent reply other threads:[~2017-11-20 15:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-14 16:48 [PATCH] dpkg-base: mount git source folder into buildchroot Christian Storm
2017-11-17 15:17 ` Alexander Smirnov
2017-11-17 17:05 ` Christian Storm
2017-11-20 9:37 ` Henning Schild
2017-11-20 11:30 ` Christian Storm
2017-11-20 15:06 ` [PATCH] Map git objects to buildchroot Alexander Smirnov
2017-11-20 15:32 ` Henning Schild [this message]
2017-11-20 15:54 ` Alexander Smirnov
2017-11-21 8:14 ` Christian Storm
2017-11-21 14:52 ` Alexander Smirnov
2017-11-21 8:20 ` Henning Schild
2017-11-21 8:57 ` Alexander Smirnov
2017-11-21 9:07 ` Henning Schild
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171120163216.494df210@md1em3qc \
--to=henning.schild@siemens.com \
--cc=asmirnov@ilbers.de \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox