Date: Thu, 26 Dec 2019 18:44:39 +0000 From: bugzilla-noreply@freebsd.org To: ports-bugs@FreeBSD.org Subject: [Bug 242896] poudriere testport broken with Python ports in cross-building jail Message-ID: <bug-242896-7788@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D242896 Bug ID: 242896 Summary: poudriere testport broken with Python ports in cross-building jail Product: Ports & Packages Version: Latest Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: Individual Port(s) Assignee: ports-bugs@FreeBSD.org Reporter: chris@chrullrich.net [This is difficult to explain, and I'm not sure I've entirely understood it myself. Bear with me, please.] "poudriere testport" (as well as bulk -t) of Python ports (not the lang/python*, but the py-* ports) fails during stage when using a cross-bui= ld jail with native-xtools (/nxb-bin): =3D>> Error: Filesystem touched during stage (files must install to ${STAGE= DIR}): usr/local/lib/python3.7/__pycache__/_sysconfigdata_m_freebsd12_.cpython-37.= pyc: size (18800, 18752) Bug 208282 introduced a fix for incorrect contents of _sysconfigdata_etc_.p= y in the cross-build situation by SUB_FILESing away the /nxb-bin prefix, which h= as apparently worked well since, and *does* work (albeit by accident, see belo= w) with "poudriere bulk". It looks like there was an oversight in this fix, in that the .py file is rewritten *after* it has been byte-compiled. Hence, the .pyc files still contain the /nxb-bin prefix in the various variables: # tar -xvf /usr/local/poudriere/data/packages/aarch64-default-raspi3/All/python37-3.7.= 6.txz &> /dev/null # fgrep nxb usr/local/lib/python3.7/_sysconfigdata_m_freebsd12_.py # strings usr/local/lib/python3.7/__pycache__/_sysconfigdata_m_freebsd12_.cpython-37.= pyc | fgrep nxb-bin/usr/bin/cc | head -n 1 -L. -lpython3.7mzO/nxb-bin/usr/bin/cc -pthread -shared -L/usr/local/lib=20 -fstack-protector-strongZ This inconsistency does not affect poudriere bulk because poudriere only lo= oks for staging violations in testport, and in bulk with -t. However, the .pyc = is updated during the build once something imports sysconfig, leading to the staging violation. I have no clue how to correctly fix this. Perhaps by recompiling _sysconfigdata_etc_.py after removing the prefixes, so that a) the files are consistent and b) the .pyc files' mtime is updated avoiding the automatic recompilation? --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-242896-7788>