Ruslan Garipov
2020-Apr-05 13:07 UTC
/usr/src/release/release.sh -> ports -> fetch pkg -> Bad system call (core dumped)
On 4/4/2020 7:50 PM, Tomasz CEDRO wrote:> Hello world :-) > > I would like to build a 12-STABLE (/usr/src contains > svn.freebsd.org/base/stable/12) locally on strong machine (24CPU 127GB > RAM 12-1-RELEASE AMD64), then test changes on my local machine > (panasonic toughbook i5 laptop 12.1-RELEASE AMD64). This will be used > for testing kernel patches and driver development/fixes. > > The goal is to have separate zroot/ROOT/stable to select and act as > the FreeBSD base. So far I have zroot/ROOT/default to use FreeBSD > 12.1-RELEASE. I would like to switch between those to on boot to have > one base system stable for working and another base system for testing > on real environment. > > I noticed that simple copy of /boot/kernel does not work on my target > machine. Thus I am trying to create a whole release, put a separate > system base, then on boot select different zfs container base to boot > from. I just love ZFS for that! I may even use snapshots to log and > rollback changes. > > Questions: > > 1. Is it a good build / testing environment? Maybe there is a simpler > / better way to cross compile binaries and test on another machine? > Both are using 12.1-RELEASE AMD64 installations so far. All /usr/local > should work both with 12.1-RELEASE and 12-STABLE right?Both machines have the same architecture, therefore it is not a cross build, I believe. For my direct builds (both build and consumer machines are x86-64) I use the procedure described in the handbook (``23.6. Tracking for Multiple Machines''[1]).> > 2. When that works, I would like to cross-compile for ARM in a similar > manner, then attach pyOCD + GDB to debug ARM target. I guess that > should work too as above? > > 3. During /usr/src/release/release.sh I get following error as pasted > below. Does release.sh update /usr/ports just as it snaps from svn or > it will use the /usr/porst that are just there and I need to provide > /usr/ports in a state that will be bindled into a /scratch release?A quote from release(7) man page: release.sh checks out the src/, ports/, and doc/ trees to CHROOTDIR... Therefore, release(7) "ignores" /usr/ports and uses ${CHROOTDIR}/usr/ports. My build machine doesn't have access to the Internet, therefore, I have to define the PORTS_UPDATE_SKIP variable and provide ports tree into the ${CHROOTDIR}/usr/ports before I will call /usr/src/release/release.sh.> > ===> docproj-2.0_14 depends on file: /usr/local/sbin/pkg - not found > ===> License BSD2CLAUSE accepted by the user > ===> Fetching all distfiles required by pkg-1.14.2 for building > ===> Extracting for pkg-1.14.2 > ===> License BSD2CLAUSE accepted by the user > ===> Fetching all distfiles required by pkg-1.14.2 for building > => SHA256 Checksum mismatch for freebsd-pkg-1.14.2_GH0.tar.gz. > ===> Refetch for 1 more times files: freebsd-pkg-1.14.2_GH0.tar.gz > ===> License BSD2CLAUSE accepted by the user > => freebsd-pkg-1.14.2_GH0.tar.gz doesn't seem to exist in /tmp/distfiles/. > => Attempting to fetch > https://codeload.github.com/freebsd/pkg/tar.gz/1.14.2?dummy=/freebsd-pkg-1.14.2_GH0.tar.gz > freebsd-pkg-1.14.2_GH0.tar.gz Bad system call (core dumped)/usr/src/release/release.sh defines DISTDIR=/tmp/distfiles when it installs the textproc/docproj port or a port from the ${EMBEDDEDPORTS}. As for why fetch(1) fails with bad system call under chrooted environment -- I don't know. I failed on a port fetching only if I hadn't provided all necessary distfiles. You have checksum error message which is causing refetching of the ports-mgmt/pkg port. Therefore, I believe ${CHROOTDIR}/tmp/distfiles/freebsd-pkg-1.14.2_GH0.tar.gz exists on your file system (remained from a previous fetch try?)... May be you should try fetch(1) from the chrooted environment manually, to get any content?> => Attempting to fetch > http://distcache.FreeBSD.org/ports-distfiles/freebsd-pkg-1.14.2_GH0.tar.gz > freebsd-pkg-1.14.2_GH0.tar.gz Bad system call (core dumped) > => Couldn't fetch it - please try to retrieve this > => port manually into /tmp/distfiles/ and try again. > *** Error code 1 > > Stop. > > Any hints and comments are welcome :-) > Tomek >[1] https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/small-lan.html
Tomasz CEDRO
2020-Apr-05 13:52 UTC
/usr/src/release/release.sh -> ports -> fetch pkg -> Bad system call (core dumped)
Hello Ruslav and thank you for your feedback! :-) On Sun, Apr 5, 2020 at 3:07 PM Ruslan Garipov wrote:> On 4/4/2020 7:50 PM, Tomasz CEDRO wrote: > > 1. Is it a good build / testing environment? Maybe there is a simpler > > / better way to cross compile binaries and test on another machine? > > Both are using 12.1-RELEASE AMD64 installations so far. All /usr/local > > should work both with 12.1-RELEASE and 12-STABLE right? > Both machines have the same architecture, therefore it is not a cross > build, I believe. For my direct builds (both build and consumer > machines are x86-64) I use the procedure described in the handbook > (``23.6. Tracking for Multiple Machines''[1]).I know that method, thank you :-) But I also want to try out the binary release, which seems a bit more flexible to have just everything in one place, may be used to install on an external machine without NFS access, etc :-) It would be also nice to know the time cost of those two methods, so I want to verify :-)> > 3. During /usr/src/release/release.sh I get following error as pasted > > below. Does release.sh update /usr/ports just as it snaps from svn or > > it will use the /usr/porst that are just there and I need to provide > > /usr/ports in a state that will be bindled into a /scratch release? > A quote from release(7) man page: > > release.sh checks out the src/, ports/, and doc/ trees to CHROOTDIR... > > Therefore, release(7) "ignores" /usr/ports and uses > ${CHROOTDIR}/usr/ports. My build machine doesn't have access to the > Internet, therefore, I have to define the PORTS_UPDATE_SKIP variable and > provide ports tree into the ${CHROOTDIR}/usr/ports before > I will call /usr/src/release/release.sh.Okay, so the build uses totally separate CHROOT in /scratch? I wonder if that "Bad System Call" is caused by my Host tools or the CHROOT tools? It looks like the /scratch has its own compiled in tools not a copy from my host? # diff -u /usr/bin/fetch /scratch/usr/bin/fetch Binary files /usr/bin/fetch and /scratch/usr/bin/fetch differ> > ===> docproj-2.0_14 depends on file: /usr/local/sbin/pkg - not found > > ===> License BSD2CLAUSE accepted by the user > > ===> Fetching all distfiles required by pkg-1.14.2 for building > > ===> Extracting for pkg-1.14.2 > > ===> License BSD2CLAUSE accepted by the user > > ===> Fetching all distfiles required by pkg-1.14.2 for building > > => SHA256 Checksum mismatch for freebsd-pkg-1.14.2_GH0.tar.gz. > > ===> Refetch for 1 more times files: freebsd-pkg-1.14.2_GH0.tar.gz > > ===> License BSD2CLAUSE accepted by the user > > => freebsd-pkg-1.14.2_GH0.tar.gz doesn't seem to exist in /tmp/distfiles/. > > => Attempting to fetch > > https://codeload.github.com/freebsd/pkg/tar.gz/1.14.2?dummy=/freebsd-pkg-1.14.2_GH0.tar.gz > > freebsd-pkg-1.14.2_GH0.tar.gz Bad system call (core dumped) > /usr/src/release/release.sh defines DISTDIR=/tmp/distfiles when it > installs the textproc/docproj port or a port from the ${EMBEDDEDPORTS}. > > As for why fetch(1) fails with bad system call under chrooted > environment -- I don't know. I failed on a port fetching only if I > hadn't provided all necessary distfiles. You have checksum error > message which is causing refetching of the ports-mgmt/pkg port. > Therefore, I believe > ${CHROOTDIR}/tmp/distfiles/freebsd-pkg-1.14.2_GH0.tar.gz exists on your > file system (remained from a previous fetch try?)... May be you should > try fetch(1) from the chrooted environment manually, to get any content?This "Bad System Call" stops me from proceeding. I did place by hand the required package in the right place, then it built ok, then I got that "Bad System Call" again on install :-( How can I get the debug symbols in /scratch binaries? So far I can just show: [New LWP 100764] Core was generated by `/usr/bin/fetch -Fpr -S 3405355 http://distcache.FreeBSD.org/ports-distfiles/free'. Program terminated with signal SIGSYS, Bad system call. #0 0x00000008003c1bca in ?? () (gdb) bt #0 0x00000008003c1bca in ?? () #1 0x000000080031d144 in ?? () #2 0x000000080031d260 in ?? () #3 0x0000000000000008 in ?? () #4 0xb650b69b3fd03fb8 in ?? () #5 0x00007fffffffdd40 in ?? () #6 0x00007fffffffe64c in ?? () #7 0x0000000800e1d000 in ?? () #8 0x00000000002091e0 in ?? () #9 0x00007fffffffdc80 in ?? () #10 0x00007fffffffdc40 in ?? () #11 0x000000080031d2f9 in ?? () #12 0x0000000800e1d000 in ?? () #13 0x00007fffffffdd40 in ?? () #14 0x0000000000000000 in ?? () Thank you! :-) Tomek -- CeDeROM, SQ7MHZ, http://www.tomek.cedro.info