Page MenuHomeFreeBSD

lang/python3*: Fix build when archivers/lzmalib is present
Needs ReviewPublic

Authored by dbaio on Sep 18 2020, 9:46 PM.

Details

Reviewers
koobs
Group Reviewers
Python
Summary
lang/python3*: Fix build when archivers/lzmalib is installed

The lzma module fails to build when archivers/lzmalib is
installed:

running build_ext
[...]
*** WARNING: renaming "_lzma" since importing it failed: 
  build/lib.freebsd-12.1-RELEASE-p8-amd64-3.7/_lzma.so: 
    Undefined symbol "lzma_check_is_supported"

This change configures the lzma module to always build against base
(libarchive) via  WRKSRC/Modules/Setup.local.

Eventually we can build it against archivers/lzma, but currently
the port does not provide header and libraries.

The change does no apply to Python 2.7 as it does not provide the
lzma module

 PR:   209355, 243817
 Reported by:  Eir Nym <eirnym@gmail.com>
 Reported by:  doctor@doctor.nl2k.ab.ca
 Submitted by: loader (earlier version)
 Reviewed by:  koobs (Python)
 Differential Revision:	D26477
Test Plan
  • testport: OK (poudriere: 11, 12, CURRENT; i386, amd64)

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Lint Skipped
Unit
Unit Tests Skipped

Event Timeline

dbaio requested review of this revision.Sep 18 2020, 9:46 PM
dbaio retitled this revision from lang/python*: Fix build when archivers/lzmalib is present to lang/python3*: Fix build when archivers/lzmalib is present.
dbaio edited the summary of this revision. (Show Details)
dbaio edited the test plan for this revision. (Show Details)

Adding clarifications, requested from @koobs

lang/python36/Makefile
132–135

Since this issue and changeset is all about 'building with base', and since there's no port (at present, as archivers/lzma only provides a binary, not headers), is there any reason we shouldn't just explicitly and unconditionally point the lzma module to base?

koobs edited the test plan for this revision. (Show Details)
koobs added inline comments.
lang/python36/Makefile
132–135

We dont need the conditional if we always want to build against base (and provide the relevent -I -l args for the lzma module) regardless, no?

lang/python36/Makefile
132–135

This issue occurs when not using Poudriere, on a very specific scenario, I would recommend letting this way. So it won't change anything (to the current users), and _lzma will continue to be built by setup.py respecting system flags.

lang/python36/Makefile
132–135

I think the explicit args for lzma in Setup.local has always the been the correct and appropriate thing to do (which is why i suggested it), and is the correct and permanent resolution. I don't think this should be conditionalized unless and until we support lzmalibs from base and ports

Additionally, it would be nice to confirm that poudriere passes with a hard BUILD_DEPENDS on archivers/lzmalib with the conditional removed in this block

lang/python36/Makefile
132–135

This as default bothers me, -l:liblzma.so.5 because it's versioned.