Re: set : illegal option -o pipefail error while trying to upgrade pkg.
Date: Sun, 28 Jan 2024 17:55:14 UTC
On Sun, Jan 28, 2024 at 10:53 AM Warner Losh <imp@bsdimp.com> wrote: > OK. On your 10.x arm system, you need to build /bin/sh using sources from > FreeBSD 13. > Binaries from 12 or 13 won't work on your 10.x system: libc doesn't have > the right symbols. > But source build against a 10.x system should work. That was my > suggestion. Too bad > pipefail didn't arrive until 14. So you'll need to build that on your 14 > system. > ... need to build stable/14 on your 10.x system this should say. Rather an important detail I didn't catch on first proofreading. > > But it turns out that's a bit of a hassle. Well, not a huge hassle, I had > to do the following. > First, set up a FreeBSD 10.4 armv6 chroot and install qemu-user-static. See > https://gist.github.com/bsdimp/0f2f294c7441ebf68a8ffebab935bd2c for > details. > Or you could just run the RPI-B image on a real RPI-B. It would be more of > a hassle and only marginally faster. > > Next, I created a worktree and a side branch (using the same paths in the > gist > above, note my origin is freebsd but the default is origin): > % cd git/freebsd-src > % mkdir ~/arm10/imp > % git worktree add -b arm10-14 ~/arm10/imp/stable-14 freebsd/stable/14 > I then had to apply these patches: > https://people.freebsd.org/~imp/14-sh-on-10.diff > which coped with history / libedit overhaul and O_VERIFY being added to > the system. OK, truth be told I iterated a bunch to get the patch... I had > no > reason to think these changes were needed before I started... > > Next, I got into the emulated arm tree: > % sudo chroot ~/arm10 /bin/sh > # cd /imp/stable-14/ > # patch -p1 < 14-sh-on-10.diff > # make SSP_CFLAGS= WITHOUT_TESTS=t WITHOUT_MAN=t DEBUG_FILES_CFLAGS= > WARNS=0 > ... lots of output, ignore the warnings > # set -o pipefail > set: Illegal option -o pipefail > # /usr/obj/imp/stable-14/arm.armv6/bin/sh/sh > # set -o pipefail > # ^D > # > > So success! But all that's a hassle, so I also uploaded the sh to > https://people.freebsd.org/~imp/sh14-on-10.armv6 > so you can just try it. I don't know if this will fix the problem that put > us down > this rabbit hole in the first place or not. But maybe some of the above is > helpful > or useful for other reasons. > > Hope this helps. > > Warner > > On Sun, Jan 28, 2024 at 7:33 AM Mario Marietto <marietto2008@gmail.com> > wrote: > >> Using sh of FreeBSD 12.04 : >> >> /bin/sh : Undefined symbol "stat@FBSD_1.5" >> >> nothing to do. >> >> On Sun, Jan 28, 2024 at 3:17 PM Mario Marietto <marietto2008@gmail.com> >> wrote: >> >>> I've used FreeBSD 13.2 and I've got the same error message : >>> >>> /lib/libc.so.7: version FBSD_1.6 required by /bin/sh not found >>> >>> Let's see with FreeBSD 12.04... >>> >>> On Sun, Jan 28, 2024 at 2:04 PM Mario Marietto <marietto2008@gmail.com> >>> wrote: >>> >>>> Hello Warner, >>>> >>>> Thanks for your help. But unfortunately your solution didn't work. >>>> After having followed your instructions carefully : >>>> >>>> Save a copy of /bin/sh. Check out stable/13 (or 12 if the following >>>>> fails). Cd to src/bin/sh. Type make all. You may need -m >>>>> /path/to/src/share/mk if it makes complaints. Create a test area, I'll call >>>>> it /destdir. Also mkdir /destdir/bin too. Then make install >>>>> DESTDIR=/destdir. You may need to do this as root. Ignore the failures for >>>>> the man pages and maybe tests. You should have a /destdir/bin/sh. See if it >>>>> runs. If so, copy it to /bin and try the upgrade again. >>>> >>>> >>>> It asked me to copy some new libraries from FreeBSD 14.0 to the >>>> /usr/lib32 and /lib directories of the FreeBSD 10.4 system. I copied all >>>> the libraries requested and at the end,it gave the following error : >>>> >>>> /lib/libc.so.7: version FBSD_1.6 required by /bin/sh not found >>>> >>>> so,I have changed the flag that does not allow me to rename it with the >>>> command : >>>> >>>> # chflags noschg libc.so.7 >>>> >>>> and I've copied the libc.so.7 file that's on the directory /lib of the >>>> FreeBSD 14 to the same directory of the FreeBSD 10.4 system and I've >>>> rebooted. Unfortunately it hasn't been accepted. The error is the following >>>> one : >>>> >>>> /lib/libc.so.7 : unsupported relocation type 37 in non-PLT relocations >>>> >>>> What has been my mistake ? Maybe using FreeBSD 14 is wrong ? >>>> >>>> On Sun, Jan 28, 2024 at 9:47 AM Mario Marietto <marietto2008@gmail.com> >>>> wrote: >>>> >>>>> # set -o pipefail >>>>> set : variable name must begin with a letter. >>>>> >>>>> On Sun, Jan 28, 2024 at 5:43 AM Warner Losh <imp@bsdimp.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Sat, Jan 27, 2024, 5:54 PM Warner Losh <imp@bsdimp.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, Jan 27, 2024, 5:12 PM Mario Marietto <marietto2008@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Hello. >>>>>>>> >>>>>>>> I'm trying to upgrade as much as I can FreeBSD 10.4 because it is >>>>>>>> the only one version that can compile some of the old arm 32 bit code I >>>>>>>> need to use for one of my projects. As you already know,packages don't work >>>>>>>> at all,but ports almost work. I was trying to install xfce4 from ports,but >>>>>>>> the compilation stopped when it didn't accept this file : >>>>>>>> >>>>>>>> >>>>>>>> http://distcache.FreeBSD.org/ports-distfiles/trousers-0.3.14.tar.gz >>>>>>>> >>>>>>>> >>>>>>>> at this point,I decided to upgrade the system with : >>>>>>>> >>>>>>>> >>>>>>>> # freebsd-update fetch >>>>>>>> # freebsd-update install >>>>>>>> >>>>>>>> >>>>>>>> and the ports tree with : >>>>>>>> >>>>>>>> >>>>>>>> # portsnap fetch extract >>>>>>>> # portsnap fetch update >>>>>>>> >>>>>>>> >>>>>>>> At this point it asked me to update pkg,so I did : >>>>>>>> >>>>>>>> >>>>>>>> # cd /usr/ports/ports-mgmt/pkg >>>>>>>> # make >>>>>>>> >>>>>>>> >>>>>>>> but unfortunately I got this error that I'm not able to fix : >>>>>>>> >>>>>>>> >>>>>>>> set : illegal option -o pipefail >>>>>>>> >>>>>>>> >>>>>>>> and I can't do anything anymore. I'm stuck here. Can someone help >>>>>>>> me to fix it ? thanks. >>>>>>>> >>>>>>> >>>>>>> Save a copy of /bin/sh. Check out stable/13 (or 12 if the following >>>>>>> fails). Cd to src/bin/sh. Type make all. You may need -m >>>>>>> /path/to/src/share/mk if make complains. Create a test area, I'll call it >>>>>>> /destdir. Also mkdir /destdir/bin too. Then make install DESTDIR=/destdir. >>>>>>> You may need to do this as root. Ignore the failures for the man pages and >>>>>>> maybe tests. You should have a /destdir/bin/sh. See if it runs. If so copy >>>>>>> it to /bin and try the upgrade again. >>>>>>> >>>>>>> I think 12 has pipefail. I dont think 11 does. 13 definitely has it. >>>>>>> The error message is from the shell. >>>>>>> >>>>>> >>>>>> >>>>>> The command "set -o pipefail" is how you'll know if it will work.... >>>>>> or stands a good chance of working. >>>>>> >>>>>> >>>>>> Warner >>>>>>> >>>>>>> >>>>> >>>>> -- >>>>> Mario. >>>>> >>>> >>>> >>>> -- >>>> Mario. >>>> >>> >>> >>> -- >>> Mario. >>> >> >> >> -- >> Mario. >> >