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: Sat, 24 Aug 2024 10:33:04 +0200 Message-ID: <91674f78-8fb9-4ec3-8a8e-8530dc820a91@ipfire.org> In-Reply-To: <4E59C321-F097-4BF9-9CCD-8024365F022D@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3649495187595647874==" List-Id: --===============3649495187595647874== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On 21.08.2024 16:28, Michael Tremer wrote: > Hello Matthias, Hi Michael, > As you might have seen I played around with this all more=E2=80=A6 There is= 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 like= this: >=20 > apt install linux-generic-hwe-22.04 Done. Ran without problems. I'm now on "Linux Devel64-1 6.8.0-40-generic #40~22.04.3-Ubuntu SMP PREEMPT_DYNAMIC..." > That should allow you to build with the stock make.sh again. Sorry, but no chance... Today I tested the hint from "siosios" found in https://community.ipfire.org/t/trying-to-build-188/11999/8 Works. Build is running. I'm building 'clamav 1.4.0' right now. One glitch I found: the new build still has problems identifying the need for customizing new rootfiles(?). Best Matthias > 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 namespa= ce. >>>>>=20 >>>>> Instead, we should create our own mount namespace and that should be pr= ivate. >>>>>=20 >>>>> You can however try to see what happens when you add =E2=80=94-propagat= ion=3Dslave to the first unshare command. >>>>>=20 >>>>> I just installed the plain Ubuntu Server, installed git, checkout out t= he 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.ht= ml >>>>>> 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: Invali= d 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/kern= els >>>>>>>>>=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 propagatio= n 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 ar= gument >>>>>>>=20 >>>>>>> Ah, this is good information. So it is not the kernel, it rather is U= buntu 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 com= mand >>>>>>>> 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-objectmanage= r.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 --===============3649495187595647874==--