From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Fischer To: development@lists.ipfire.org Subject: Re: The unshared changes give a problem with build after doing git pull on next Date: Fri, 16 Aug 2024 18:43:51 +0200 Message-ID: In-Reply-To: <3848432A-D7D9-47E6-9DAE-E61F64CA786C@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0986683680248650441==" List-Id: --===============0986683680248650441== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On 16.08.2024 17:35, Michael Tremer wrote: > Hello, Hi, >> 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. I don't know either. If I remove these lines, I get the 'invalid argument' errors again. Immediately. > Could you once again try to swap the slave/private parameters of the =E2=80= =94-propagation option for both calls of unshare? 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'. 1. I commented my two lines above and I get: ... Aug 16 16:34:12: Building stage2 unshare: cannot change /git/ipfire-2.x/build_x86_64/proc filesystem propagation: Invalid argument ... 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" 3. I swap parameters back and uncomment my two lines: =3D> Build is running again. >=20 > Also: Why is this working on my freshly installed system? Good question...this is something really strange... >>=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 namespace. >>>=20 >>> Instead, we should create our own mount namespace and that should be priv= ate. >>>=20 >>> You can however try to see what happens when you add =E2=80=94-propagatio= n=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.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 e= rror: >>>>>>>>>>=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 re= lease: >>>>>>>=20 >>>>>>> https://ubuntu.com/security/livepatch/docs/livepatch/reference/kernels >>>>>>>=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 argu= ment >>>>>=20 >>>>> Ah, this is good information. So it is not the kernel, it rather is Ubu= ntu 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 du= ring >>>>>> '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 >>>>>=20 >>>=20 >>>=20 >>>=20 >>=20 >=20 --===============0986683680248650441==--