Bug 243358 - lang/python*: DISABLED_EXTENSIONS doesn't work as advertised
Summary: lang/python*: DISABLED_EXTENSIONS doesn't work as advertised
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: Danilo G. Baio
URL: https://reviews.freebsd.org/D31086
Keywords:
Depends on:
Blocks:
 
Reported: 2020-01-15 00:08 UTC by Enji Cooper
Modified: 2021-07-08 02:31 UTC (History)
2 users (show)

See Also:
dbaio: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Enji Cooper freebsd_committer freebsd_triage 2020-01-15 00:08:50 UTC
I tried building lang/python38 on a system with sqlite3 available, and unfortunately it failed `check-plist` because the extension had been installed.

Doing some grepping around, DISABLE_EXTENSIONS isn't actively referred to in setup.py nor in Makefile.pre*:

ports/lang/python38/work/Python-3.8.1/setup.py:DISABLED_MODULE_LIST = []
ports/lang/python38/work/Python-3.8.1/setup.py:                      if ext.name not in DISABLED_MODULE_LIST]
ports/lang/python38/work/Python-3.8.1/setup.py:        sysconf_dis = sysconfig.get_config_var('MODDISABLED_NAMES').split()

It turns out that the correct way to do this is via `Modules/Setup`, but this method seems to be broken.

An upstream bug is pending for the issue.
Comment 1 Enji Cooper freebsd_committer freebsd_triage 2020-01-15 00:33:50 UTC
I take it back. My REINPLACE_CMD was wrong. This works:

$ git diff ports/lang/
diff --git a/ports/lang/python38/Makefile b/ports/lang/python38/Makefile
index 3bdf1c461846..968cd2b167f5 100644
--- a/ports/lang/python38/Makefile
+++ b/ports/lang/python38/Makefile
@@ -34,9 +34,9 @@ PYTHON_SUFFIX=                ${PYTHON_VER:S/.//g}
 
 DISABLED_EXTENSIONS=   _sqlite3 _tkinter _gdbm
 CONFIGURE_ARGS+=       --enable-shared --without-ensurepip
-CONFIGURE_ENV+=                OPT="" DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS}"     # Null out OPT to respect user CFLAGS and remove optimizations
+CONFIGURE_ENV+=                OPT=""                                                  # Null out OPT to respect user CFLAGS and remove optimizations
 
-INSTALL_TARGET=                altinstall                                              # Don't want cloberring of unprefixed files
+INSTALL_TARGET=                altinstall                                              # Don't want clobbering of unprefixed files
 
 TEST_TARGET=           buildbottest
 TEST_ARGS=             TESTOPTS=-j${MAKE_JOBS_NUMBER}
@@ -132,6 +132,10 @@ post-patch:
 # which introduces hidden dependency and breaks build
        @${REINPLACE_CMD} -e 's|uuid/uuid.h|ignore_&|' ${WRKSRC}/configure
        @${REINPLACE_CMD} -e '/find_library_file/ s|uuid|ignore_&|' ${WRKSRC}/setup.py
+.if !empty(DISABLED_EXTENSIONS)
+       @${REINPLACE_CMD} -e '/^#\*disabled\*/ s|^#||' ${WRKSRC}/Modules/Setup
+       @${ECHO_CMD} "${DISABLED_EXTENSIONS}" >> ${WRKSRC}/Modules/Setup
+.endif
 
 post-install:
 .if ! ${PORT_OPTIONS:MDEBUG}
Comment 2 Danilo G. Baio freebsd_committer freebsd_triage 2021-07-07 02:13:19 UTC
Hi.
Thanks and sorry about the delay on this PR.
I've just opened this review, please take a look. I'll do more tests; I plan to push it in a day or two.
Comment 3 commit-hook freebsd_committer freebsd_triage 2021-07-08 01:57:12 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a94d4b1005b1e93a27bcb9e4e794eeb13c991dd5

commit a94d4b1005b1e93a27bcb9e4e794eeb13c991dd5
Author:     Danilo G. Baio <dbaio@FreeBSD.org>
AuthorDate: 2021-07-07 02:04:38 +0000
Commit:     Danilo G. Baio <dbaio@FreeBSD.org>
CommitDate: 2021-07-08 01:55:17 +0000

    lang/python*: Replace DISABLED_EXTENSIONS with Setup.local

    Currently, lang/python38 and lang/python39 don't honor
    DISABLED_EXTENSIONS because patch-issue20210 was removed when
    lang/python38 was added to the ports tree. patch-issue20210 is still
    present on lang/python36 and lang/python37.

    Building with poudriere is not affected because builds are executed in a
    clean environment.

    Setup.local is the more canonical and recommended method for customizing
    Python builds for shared extensions & third party libraries.

    Support for a *disabled* marker in Setup files was introduced in Python
    3.7, so backport this fix to it to keep consistency in the ports tree.

    PR:             243358 [1]
    PR:             243937 [2]
    Reported by:    ngie [1]
    Reported by:    jcfyecrayz@liamekaens.com [2]
    Reported by:    tuxillo (IRC) DPorts
    Reviewed by:    koobs (python, maintainer)
    Approved by:    koobs, dbaio (python, maintainer)
    MFH:            2021Q3 (build bugfix)
    Differential Revision: https://reviews.freebsd.org/D31086

 lang/python37/Makefile                      |  7 ++-
 lang/python37/files/patch-issue20210 (gone) | 68 -----------------------------
 lang/python38/Makefile                      |  7 ++-
 lang/python39/Makefile                      |  7 ++-
 4 files changed, 18 insertions(+), 71 deletions(-)
Comment 4 commit-hook freebsd_committer freebsd_triage 2021-07-08 02:14:18 UTC
A commit in branch 2021Q3 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=42b74dbb33b8a8fa1fcd06ca376270fed30c839c

commit 42b74dbb33b8a8fa1fcd06ca376270fed30c839c
Author:     Danilo G. Baio <dbaio@FreeBSD.org>
AuthorDate: 2021-07-07 02:04:38 +0000
Commit:     Danilo G. Baio <dbaio@FreeBSD.org>
CommitDate: 2021-07-08 02:12:09 +0000

    lang/python*: Replace DISABLED_EXTENSIONS with Setup.local

    Currently, lang/python38 and lang/python39 don't honor
    DISABLED_EXTENSIONS because patch-issue20210 was removed when
    lang/python38 was added to the ports tree. patch-issue20210 is still
    present on lang/python36 and lang/python37.

    Building with poudriere is not affected because builds are executed in a
    clean environment.

    Setup.local is the more canonical and recommended method for customizing
    Python builds for shared extensions & third party libraries.

    Support for a *disabled* marker in Setup files was introduced in Python
    3.7, so backport this fix to it to keep consistency in the ports tree.

    PR:             243358 [1]
    PR:             243937 [2]
    Reported by:    ngie [1]
    Reported by:    jcfyecrayz@liamekaens.com [2]
    Reported by:    tuxillo (IRC) DPorts
    Reviewed by:    koobs (python, maintainer)
    Approved by:    koobs, dbaio (python, maintainer)
    Differential Revision: https://reviews.freebsd.org/D31086

    (cherry picked from commit a94d4b1005b1e93a27bcb9e4e794eeb13c991dd5)

 lang/python37/Makefile                      |  7 ++-
 lang/python37/files/patch-issue20210 (gone) | 68 -----------------------------
 lang/python38/Makefile                      |  7 ++-
 lang/python39/Makefile                      |  7 ++-
 4 files changed, 18 insertions(+), 71 deletions(-)
Comment 5 Danilo G. Baio freebsd_committer freebsd_triage 2021-07-08 02:15:10 UTC
Committed, thanks!