From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: The unshared changes give a problem with build after doing git pull on next Date: Tue, 27 Aug 2024 11:01:38 +0100 Message-ID: <70B6F98B-8230-4830-BDC1-7DA5EA984456@ipfire.org> In-Reply-To: <91674f78-8fb9-4ec3-8a8e-8530dc820a91@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2574436063803922492==" List-Id: --===============2574436063803922492== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello, > On 24 Aug 2024, at 09:33, Matthias Fischer = wrote: >=20 > On 21.08.2024 16:28, Michael Tremer wrote: >> Hello Matthias, >=20 > Hi Michael, >=20 >> As you might have seen I played around with this all more=E2=80=A6 There i= s either a kernel bug, or a bug in unshare which causes these problems=E2=80= =A6 >>=20 >> So if we mount /proc manually later this works for me on Ubuntu 22.04 LTS: >>=20 >> https://git.ipfire.org/?p=3Dipfire-2.x.git;a=3Dcommitdiff;h=3D8ea702f3f85= 3c4c28a2885dafdcae2e737c0a49b >>=20 >> However, there are now some packages which don=E2=80=99t want to build any= more. >>=20 >> So I would simply suggest to upgrade the kernel on your Ubuntu release lik= e this: >>=20 >> apt install linux-generic-hwe-22.04 >=20 > Done. Ran without problems. >=20 > I'm now on "Linux Devel64-1 6.8.0-40-generic #40~22.04.3-Ubuntu SMP > PREEMPT_DYNAMIC..." >=20 >> That should allow you to build with the stock make.sh again. >=20 > Sorry, but no chance... >=20 > Today I tested the hint from "siosios" found in > https://community.ipfire.org/t/trying-to-build-188/11999/8 Are you referring to this? mount -o bind ${BUILD_DIR}/proc ${BUILD_DIR}/proc He put this into an unfortunate place and will mount this over and over and o= ver again... but making the empty directory a mount point is something that w= ould acceptable as a workaround. If you can confirm, I can add this to the code. > Works. Build is running. I'm building 'clamav 1.4.0' right now. >=20 > One glitch I found: the new build still has problems identifying the > need for customizing new rootfiles(?). This might be fixed here: https://git.ipfire.org/?p=3Dipfire-2.x.git;a=3Dcommitdiff;h=3Dd7ee801712705= c97fda658bb71209d814d1db841 > Best > Matthias >=20 >> Best, >> -Michael >>=20 >>> On 16 Aug 2024, at 17:43, Matthias Fischer wrote: >>>=20 >>> On 16.08.2024 17:35, Michael Tremer wrote: >>>> Hello, >>>=20 >>> Hi, >>>=20 >>>>> On 8 Aug 2024, at 13:06, Matthias Fischer wrote: >>>>>=20 >>>>> Hi, >>>>>=20 >>>>> ok - please don't laugh. >>>>>=20 >>>>> I did something completely different... >>>>>=20 >>>>> I added the following to 'make.sh': >>>>>=20 >>>>> ***SNIP*** >>>>> diff --git a/make.sh b/make.sh >>>>> index 922fc4b4c..212256ab1 100755 >>>>> --- a/make.sh >>>>> +++ b/make.sh >>>>> @@ -662,6 +662,11 @@ execute() { >>>>> # If unshare is asked to terminate, terminate all child processes >>>>> "--kill-child" >>>>> ) >>>>> + >>>>> +mount --bind ${BUILD_DIR}/proc ${BUILD_DIR}/proc >>>>> + >>>>> +mount --make-rslave ${BUILD_DIR}/proc >>>>> + >>>>> fi >>>>=20 >>>> I don=E2=80=99t know why this would fix anything. >>>=20 >>> I don't know either. If I remove these lines, I get the 'invalid >>> argument' errors again. Immediately. >>>=20 >>>> Could you once again try to swap the slave/private parameters of the =E2= =80=94-propagation option for both calls of unshare? >>>=20 >>> Ok. I'll try and keep you informed, lets see. By the way: "Devel 1" just >>> built 'next' in 3:09:49, updating 'rust 1.80.1' and 'clamav 1.4.0'. >>>=20 >>> 1. I commented my two lines above and I get: >>>=20 >>> ... >>> Aug 16 16:34:12: Building stage2 unshare: cannot change >>> /git/ipfire-2.x/build_x86_64/proc filesystem propagation: Invalid argument >>> ... >>>=20 >>> 2. I swap slave/private parameters >>> =3D> change line 646 to "--propagation=3Dprivate" and line 2146 to >>> "--propagation=3Dslave" and get the same error: "...Invalid argument" >>>=20 >>> 3. I swap parameters back and uncomment my two lines: >>> =3D> Build is running again. >>>=20 >>>>=20 >>>> Also: Why is this working on my freshly installed system? >>>=20 >>> Good question...this is something really strange... >>>=20 >>>>>=20 >>>>> while [ $# -gt 0 ]; do >>>>> ***SNAP*** >>>>>=20 >>>>> No 'invalid argument' error anymore. >>>>>=20 >>>>> I don't know why - but with this patch the build is running... >>>>>=20 >>>>> Any comments? >>>>>=20 >>>>> Best >>>>> Matthias >>>>>=20 >>>>> On 06.08.2024 17:40, Michael Tremer wrote: >>>>>> Hello, >>>>>>=20 >>>>>> We should not touch the mount propagation of the host=E2=80=99s namesp= ace. >>>>>>=20 >>>>>> Instead, we should create our own mount namespace and that should be p= rivate. >>>>>>=20 >>>>>> You can however try to see what happens when you add =E2=80=94-propaga= tion=3Dslave to the first unshare command. >>>>>>=20 >>>>>> I just installed the plain Ubuntu Server, installed git, checkout out = the repository, downloaded the toolchain and ran the build. >>>>>>=20 >>>>>> -Michael >>>>>>=20 >>>>>>> On 3 Aug 2024, at 12:22, Matthias Fischer wrote: >>>>>>>=20 >>>>>>> On 03.08.2024 10:54, Michael Tremer wrote: >>>>>>>> Hello Matthias, >>>>>>>=20 >>>>>>> Hi Michael, >>>>>>>=20 >>>>>>> just looked through https://man7.org/linux/man-pages/man1/unshare.1.h= tml >>>>>>> and ran 'findmnt -o+PROPAGATION' (see attachment). >>>>>>>=20 >>>>>>> I don't know if this could help but does this differ from your test >>>>>>> installation? >>>>>>>=20 >>>>>>> Best >>>>>>> Matthias >>>>>>>=20 >>>>>>>>> On 3 Aug 2024, at 08:47, Matthias Fischer wrote: >>>>>>>>>=20 >>>>>>>>> Hi Michael, >>>>>>>>>=20 >>>>>>>>> [shortened some stuff] >>>>>>>>>=20 >>>>>>>>> ... >>>>>>>>>=20 >>>>>>>>>>>>>=20 >>>>>>>>>>>>> Being curious I tried to build 'next', but I always get the sam= e error: >>>>>>>>>>>>>=20 >>>>>>>>>>>>> ***SNIP*** >>>>>>>>>>>>> root(a)Devel64-1: /git/ipfire-2.x # ./make.sh build >>>>>>>>>>>>> Packaged toolchain compilation >>>>>>>>>>>>> Building IPFire >>>>>>>>>>>>> stage2 >>>>>>>>>>>>> Jul 26 13:32:59: Building stage2 unshare: cannot change >>>>>>>>>>>>> /git/ipfire-2.x/build_x86_64/proc filesystem propagation: Inval= id argument >>>>>>>>>=20 >>>>>>>>>>>> ... >>>>>>>>>=20 >>>>>>>>>> It looks like you can simply update the kernel staying on the same= release: >>>>>>>>>>=20 >>>>>>>>>> https://ubuntu.com/security/livepatch/docs/livepatch/reference/ker= nels >>>>>>>>>>=20 >>>>>>>>>> For 22.04 LTS, there is a Linux 6.8 image available. >>>>>>>>>>=20 >>>>>>>>>> Could you check that and confirm that it fixes the mount propagati= on problem? >>>>>>>>>=20 >>>>>>>>> Done. >>>>>>>>>=20 >>>>>>>>> Current state is as follows: >>>>>>>>>=20 >>>>>>>>> ***SNIP*** >>>>>>>>> ... >>>>>>>>> root(a)Devel64-1: /git/ipfire-2.x # lsb_release -a >>>>>>>>> No LSB modules are available. >>>>>>>>> Distributor ID: Ubuntu >>>>>>>>> Description: Ubuntu 22.04.4 LTS >>>>>>>>> Release: 22.04 >>>>>>>>> Codename: jammy >>>>>>>>> ... >>>>>>>>> root(a)Devel64-1: /git/ipfire-2.x # uname -mrs >>>>>>>>> Linux 6.8.0-39-generic x86_64 >>>>>>>>> ... >>>>>>>>> ***SNAP*** >>>>>>>>>=20 >>>>>>>>> But when I try to build 'next' I get exactly the same error as >>>>>>>>> before: >>>>>>>>>=20 >>>>>>>>> ***SNIP*** >>>>>>>>> root(a)Devel64-1: /git/ipfire-2.x # ./make.sh build >>>>>>>>> Packaged toolchain compilation >>>>>>>>> Building IPFire >>>>>>>>> stage2 >>>>>>>>> Aug 2 21:21:15: Building stage2 unshare: cannot change >>>>>>>>> /git/ipfire-2.x/build_x86_64/proc filesystem propagation: Invalid a= rgument >>>>>>>>=20 >>>>>>>> Ah, this is good information. So it is not the kernel, it rather is = Ubuntu handling something differently. >>>>>>>>=20 >>>>>>>> I will have a look at this and get back to you. >>>>>>>>=20 >>>>>>>>> ERROR: Downloading stage2 >>>>>>>>> [ FAIL ] >>>>>>>>> Check /git/ipfire-2.x/log_x86_64/_build.ipfire.log for errors if >>>>>>>>> applicable [ FAIL ] >>>>>>>>> ***SNAP*** >>>>>>>>>=20 >>>>>>>>> Being curious, I commented line line 633 in 'make.sh' >>>>>>>>> ("--mount-proc=3D${BUILD_DIR}/proc") =3D> Building starts but fails= during >>>>>>>>> 'glib 2.77.0': >>>>>>>>>=20 >>>>>>>>> ***SNIP*** >>>>>>>>> ... >>>>>>>>> glib (2.77.0) >>>>>>>>> [ 1:14 ][0/1011] >>>>>>>>>=20 >>>>>>>>> [951/1374] Compiling C object gio/gio.p/gio-tool-tree.c.o >>>>>>>>> [952/1374] Linking target gio/gio >>>>>>>>> [953/1374] Compiling C object >>>>>>>>> gio/gio-querymodules.p/gio-querymodules.c.o >>>>>>>>> [954/1374] Linking target gio/gio-querymodules >>>>>>>>> [955/1374] Compiling C object gio/gresource.p/gresource-tool.c.o >>>>>>>>> [956/1374] Compiling C object >>>>>>>>> gio/glib-compile-schemas.p/.._subprojects_gvdb_gvdb_gvdb-reader.c.o >>>>>>>>> [957/1374] Linking target gio/gresource >>>>>>>>> [958/1374] Compiling C object >>>>>>>>> gio/glib-compile-schemas.p/.._subprojects_gvdb_gvdb_gvdb-builder.c.o >>>>>>>>> [959/1374] Compiling C object >>>>>>>>> gio/glib-compile-resources.p/.._subprojects_gvdb_gvdb_gvdb-reader.c= .o >>>>>>>>> [960/1374] Compiling C object >>>>>>>>> gio/glib-compile-resources.p/.._subprojects_gvdb_gvdb_gvdb-builder.= c.o >>>>>>>>> [961/1374] Compiling C object >>>>>>>>> gio/glib-compile-resources.p/glib-compile-resources.c.o >>>>>>>>> [962/1374] Linking target gio/glib-compile-resources >>>>>>>>> [963/1374] Compiling C object >>>>>>>>> gio/tests/modules/libtestmodulea.so.p/test-module-a.c.o >>>>>>>>> [964/1374] Compiling C object gio/gapplication.p/gapplication-tool.= c.o >>>>>>>>> [965/1374] Compiling C object gio/gsettings.p/gsettings-tool.c.o >>>>>>>>> [966/1374] Linking target gio/tests/modules/libtestmodulea.so >>>>>>>>> [967/1374] Generating gio/tests/plugin-resources.c with a custom co= mmand >>>>>>>>> FAILED: gio/tests/plugin-resources.c >>>>>>>>> /usr/src/glib-2.77.0/builddir/gio/glib-compile-resources >>>>>>>>> --compiler=3Dgcc --target=3Dgio/tests/plugin-resources.c --sour >>>>>>>>> cedir=3D/usr/src/glib-2.77.0/gio/tests --internal --generate-source >>>>>>>>> --c-name _g_plugin ../gio/tests/test4.gresource.xml >>>>>>>>> /usr/src/glib-2.77.0/builddir/gio/glib-compile-resources: error >>>>>>>>> while loading shared libraries: libgio-2.0.so.0: can >>>>>>>>> not open shared object file: No such file or directory >>>>>>>>> [968/1374] Linking target gio/gapplication >>>>>>>>> [969/1374] Compiling C object >>>>>>>>> gio/glib-compile-schemas.p/glib-compile-schemas.c.o >>>>>>>>> [970/1374] Linking target gio/gsettings >>>>>>>>> [971/1374] Compiling C object >>>>>>>>> gio/tests/modules/libtestmoduleb.so.p/test-module-b.c.o >>>>>>>>> [972/1374] Compiling C object >>>>>>>>> gio/tests/gdbus-overflow.p/gdbus-overflow.c.o >>>>>>>>> [973/1374] Compiling C object gio/gdbus.p/gdbus-tool.c.o >>>>>>>>> [974/1374] Compiling C object >>>>>>>>> gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanag= er.so.p/meson-gener >>>>>>>>> ated_.._objectmanager-gen.c.o >>>>>>>>> ninja: build stopped: subcommand failed. >>>>>>>>> make: *** [glib:75: /usr/src/log/glib-2.77.0] Error 1 >>>>>>>>> make: Leaving directory '/usr/src/lfs' >>>>>>>>>=20 >>>>>>>>> ERROR: Building glib >>>>>>>>> [ FAIL ] >>>>>>>>> Check /git/ipfire-2.x/log_x86_64/_build.ipfire.log for errors if >>>>>>>>> applicable [ FAIL ] >>>>>>>>> ***SNAP*** >>>>>>>>>=20 >>>>>>>>> Best >>>>>>>>> Matthias >>=20 >>=20 >=20 --===============2574436063803922492==--