From: Henning Schild <henning.schild@siemens.com>
To: "Hombourger, Cedric" <Cedric_Hombourger@mentor.com>
Cc: Jan Kiszka <jan.kiszka@siemens.com>,
"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: Re: [PATCH 1/1] dpkg: acquire lock when calling reprepro
Date: Wed, 22 Aug 2018 15:41:45 +0200 [thread overview]
Message-ID: <20180822154145.07d4a2ca@md1pvb1c.ad001.siemens.net> (raw)
In-Reply-To: <004d3802fb104470a68eada0c12fae1f@svr-ies-mbx-02.mgc.mentorg.com>
My first reaction was the same, but in the other direction. I would
prefer a bitbake lock over the flock, if possible.
Henning
Am Wed, 22 Aug 2018 12:48:14 +0000
schrieb "Hombourger, Cedric" <Cedric_Hombourger@mentor.com>:
> Thanks Jan for your quick feedback. I have submitted a v2 with
> isar.lock removed
>
> Cedric
>
> -----Original Message-----
> From: Jan Kiszka [mailto:jan.kiszka@siemens.com]
> Sent: Wednesday, August 22, 2018 2:20 PM
> To: Hombourger, Cedric <Cedric_Hombourger@mentor.com>;
> isar-users@googlegroups.com Subject: Re: [PATCH 1/1] dpkg: acquire
> lock when calling reprepro
>
> On 2018-08-22 13:34, Cedric Hombourger wrote:
> > As bitbake performs multi-threaded builds, packages may be built
> > while others get deployed. A lock was already acquired within
> > dpkg_runbuild but accesses to the isar-apt database were not
> > protected from do_deploy_deb. Move the lock from the buildchroot to
> > the isar-apt repository and acquire the (same) lock from
> > dpkg_runbuild, repo_clean and do_deploy_deb.
>
> I think I've seen this issue once but forgot to dig into the details.
> It looks consistent.
>
> >
> > Signed-off-by: Cedric Hombourger <Cedric_Hombourger@mentor.com>
> > ---
> > meta/classes/dpkg-base.bbclass | 8 ++++++--
> > meta/recipes-devtools/buildchroot/files/build.sh | 2 +-
> > meta/recipes-kernel/linux/files/build-kernel.sh | 2 +-
> > 3 files changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/meta/classes/dpkg-base.bbclass
> > b/meta/classes/dpkg-base.bbclass index a41df2c..7137968 100644
> > --- a/meta/classes/dpkg-base.bbclass
> > +++ b/meta/classes/dpkg-base.bbclass
> > @@ -71,6 +71,8 @@ do_build() {
> > mount -t proc none ${BUILDCHROOT_DIR}/proc
> > fi'
> >
> > + # Create database lock file here so we own it (not root) and
> > perform actual build
> > + touch ${DEPLOY_DIR_APT}/${DISTRO}/db.lock
> > dpkg_runbuild
> >
> > sudo umount ${BUILDROOT} 2>/dev/null || true @@ -82,7 +84,8
> > @@ CLEANFUNCS += "repo_clean"
> > repo_clean() {
> > PACKAGES=$(cd ${S}/..; ls *.deb | sed 's/\([^_]*\).*/\1/')
> > if [ -n "${PACKAGES}" ]; then
> > - reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \
> > + flock ${DEPLOY_DIR_APT}/${DISTRO}/db.lock \
> > + reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \
> > --dbdir ${DEPLOY_DIR_DB}/${DISTRO} \
> > -C main -A ${DISTRO_ARCH} \
> > remove ${DEBDISTRONAME} \ @@ -93,7 +96,8 @@
> > repo_clean() {
> > # Install package to Isar-apt
> > do_deploy_deb() {
> > repo_clean
> > - reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \
> > + flock ${DEPLOY_DIR_APT}/${DISTRO}/db.lock \
> > + reprepro -b ${DEPLOY_DIR_APT}/${DISTRO} \
> > --dbdir ${DEPLOY_DIR_DB}/${DISTRO} \
> > -C main \
> > includedeb ${DEBDISTRONAME} \
>
> There is also
>
> do_deploy_deb[lockfiles] = "${DEPLOY_DIR_APT}/isar.lock"
>
> in that file. I suppose that can now be dropped, can't it?
>
> > diff --git a/meta/recipes-devtools/buildchroot/files/build.sh
> > b/meta/recipes-devtools/buildchroot/files/build.sh
> > index e2dabab..e8a9c17 100644
> > --- a/meta/recipes-devtools/buildchroot/files/build.sh
> > +++ b/meta/recipes-devtools/buildchroot/files/build.sh
> > @@ -50,7 +50,7 @@ install_cmd="apt-get -o
> > Debug::pkgProblemResolver=yes --no-install-recommends -y
> >
> > # Install all build deps
> > mk-build-deps $set_arch -t "${install_cmd}" -i -r
> > debian/control -) 42>/dpkg.lock
> > +) 42>/isar-apt/db.lock
> >
> > # If autotools files have been created, update their timestamp to
> > # prevent them from being regenerated diff --git
> > a/meta/recipes-kernel/linux/files/build-kernel.sh
> > b/meta/recipes-kernel/linux/files/build-kernel.sh
> > index 8b58e93..2ff5a1e 100644
> > --- a/meta/recipes-kernel/linux/files/build-kernel.sh
> > +++ b/meta/recipes-kernel/linux/files/build-kernel.sh
> > @@ -34,7 +34,7 @@ REPACK_LINUX_IMAGE_DIR="${REPACK_DIR}/linux-image"
> > REPACK_LINUX_HEADERS_DIR="${REPACK_DIR}/linux-headers"
> >
> > # Lock-protected because apt and dpkg do not wait in case of
> > contention -flock /dpkg.lock \
> > +flock /isar-apt/db.lock \
> > apt-get install -y -o Debug::pkgProblemResolver=yes \
> > --no-install-recommends ${KBUILD_DEPENDS}
> >
> >
>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate
> Competence Center Embedded Linux
>
next prev parent reply other threads:[~2018-08-22 13:41 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-22 11:34 [PATCH 0/1] acquire database " Cedric Hombourger
2018-08-22 11:34 ` [PATCH 1/1] dpkg: acquire " Cedric Hombourger
2018-08-22 12:20 ` Jan Kiszka
2018-08-22 12:48 ` Hombourger, Cedric
2018-08-22 13:41 ` Henning Schild [this message]
2018-08-22 13:47 ` Hombourger, Cedric
2018-08-22 13:48 ` Jan Kiszka
2018-08-26 6:21 ` [PATCH v3 1/3] dpkg: move installation of dependencies into dpkg_prepare Cedric Hombourger
2018-08-26 6:21 ` [PATCH v3 2/3] linux: leverage dpkg_prepare to install build dependencies Cedric Hombourger
2018-08-26 6:21 ` [PATCH v3 3/3] dpkg+linux: use Isar's lock via do_prepare[lockfiles] instead of flock Cedric Hombourger
2018-08-28 12:12 ` [PATCH v3 1/3] dpkg: move installation of dependencies into dpkg_prepare Maxim Yu. Osipov
2018-08-31 8:10 ` Jan Kiszka
2018-08-31 8:15 ` chombourger
2018-08-31 8:21 ` Jan Kiszka
2018-08-31 8:28 ` Jan Kiszka
2018-08-31 8:33 ` chombourger
2018-08-31 8:41 ` Jan Kiszka
2018-08-31 9:05 ` Jan Kiszka
2018-09-01 6:58 ` Jan Kiszka
2018-09-01 8:44 ` Cedric Hombourger
2018-09-01 9:31 ` Jan Kiszka
2018-08-22 11:58 ` [PATCH 0/1] acquire database lock when calling reprepro Alexander Smirnov
2018-08-22 12:07 ` Hombourger, Cedric
2018-08-22 12:47 ` [PATCH v2] dpkg: acquire " Cedric Hombourger
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=20180822154145.07d4a2ca@md1pvb1c.ad001.siemens.net \
--to=henning.schild@siemens.com \
--cc=Cedric_Hombourger@mentor.com \
--cc=isar-users@googlegroups.com \
--cc=jan.kiszka@siemens.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