Skip site navigation (1)Skip section navigation (2)
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>