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: Wed, 21 Aug 2024 15:28:17 +0100 Message-ID: <4E59C321-F097-4BF9-9CCD-8024365F022D@ipfire.org> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0082315969024206086==" List-Id: --===============0082315969024206086== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello Matthias, As you might have seen I played around with this all more=E2=80=A6 There is e= ither a kernel bug, or a bug in unshare which causes these problems=E2=80=A6 So if we mount /proc manually later this works for me on Ubuntu 22.04 LTS: https://git.ipfire.org/?p=3Dipfire-2.x.git;a=3Dcommitdiff;h=3D8ea702f3f853c= 4c28a2885dafdcae2e737c0a49b However, there are now some packages which don=E2=80=99t want to build any mo= re. So I would simply suggest to upgrade the kernel on your Ubuntu release like t= his: apt install linux-generic-hwe-22.04 That should allow you to build with the stock make.sh again. Best, -Michael > 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 namespac= e. >>>>=20 >>>> Instead, we should create our own mount namespace and that should be pri= vate. >>>>=20 >>>> You can however try to see what happens when you add =E2=80=94-propagati= on=3Dslave to the first unshare command. >>>>=20 >>>> I just installed the plain Ubuntu Server, installed git, checkout out th= e 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.html >>>>> 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 same = 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: Invalid= argument >>>>>>>=20 >>>>>>>>>> ... >>>>>>>=20 >>>>>>>> It looks like you can simply update the kernel staying on the same r= elease: >>>>>>>>=20 >>>>>>>> https://ubuntu.com/security/livepatch/docs/livepatch/reference/kerne= ls >>>>>>>>=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 propagation= 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 arg= ument >>>>>>=20 >>>>>> Ah, this is good information. So it is not the kernel, it rather is Ub= untu 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 d= uring >>>>>>> '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 comm= and >>>>>>> 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-objectmanager= .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 --===============0082315969024206086==--