During configure phase python fails to find intl.h from gettext package: checking libintl.h usability... no checking libintl.h presence... no checking for libintl.h... no All translated applications using gettext.bindtextdomain() fails to do so making sometimes translated text mangled or causing application to crash in rare occasions. This probably affects other python ports, I didn't check.
Responsible Changed From-To: freebsd-ports-bugs->pawel
Responsible Changed From-To: pawel->freebsd-ports-bugs Taken by mistake
Responsible Changed From-To: freebsd-ports-bugs->freebsd-python Over to maintainer
Responsible Changed From-To: freebsd-python->koobs I'll take it. Preliminary patch sent to submitter with promising results.
Author: koobs Date: Sun Sep 8 14:05:18 2013 New Revision: 326729 URL: http://svnweb.freebsd.org/changeset/ports/326729 Log: Resolve gettext (libintl) detection and linking in all Python ports Fix gettext (NLS) detection, includes and linking: - all: Use LDFLAGS and CPPFLAGS over CFLAGS for NLS option (with comment) - python26,27: Pass LIBS="-lintl" to CONFIGURE_ENV Workaround Pythons odd build mechanics causing duplicate args: - all: Remove CFLAGS from OPT= in CONFIGURE_ENV - python32,33: Remove CONFIGURE_* variables from Makefile.pre.in Other: - python32: Patch setup.py to pass OPT correctly to shared modules PR: ports/181721 Reported by: pawel Reviewed by: bapt mva sbz Modified: head/lang/python26/Makefile head/lang/python27/Makefile head/lang/python31/Makefile head/lang/python32/Makefile head/lang/python32/files/patch-Makefile.pre.in head/lang/python32/files/patch-setup.py (contents, props changed) head/lang/python33/Makefile head/lang/python33/files/patch-Makefile.pre.in Modified: head/lang/python26/Makefile ============================================================================== --- head/lang/python26/Makefile Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python26/Makefile Sun Sep 8 14:05:18 2013 (r326729) @@ -3,7 +3,7 @@ PORTNAME= python26 PORTVERSION= 2.6.8 -PORTREVISION= 6 +PORTREVISION= 7 CATEGORIES= lang python ipv6 MASTER_SITES= PYTHON MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -63,9 +63,12 @@ NLS_DESC= Enable Gettext support for the .if ${PORT_OPTIONS:MNLS} USES+= gettext -# XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building -#LDFLAGS+= "-L${LOCALBASE}/lib" -#CFLAGS+= "-I${LOCALBASE}/include" +LDFLAGS+= -L${LOCALBASE}/lib +# We use CPPFLAGS over CFLAGS here due to -I ordering causing things like +# elementtree and pyexpat to break with python27, or to silence preprocessor +# complaints with python33 +CPPFLAGS+= -I${LOCALBASE}/include +CONFIGURE_ENV+= LIBS="-lintl" .else CONFIGURE_ENV+= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no .endif @@ -144,7 +147,7 @@ CONFIGURE_ARGS+= --disable-ipv6 CONFIGURE_ARGS+= --with-fpectl .endif -CONFIGURE_ENV+= OPT="${CFLAGS} ${_PTH_CPPFLAGS}" +CONFIGURE_ENV+= OPT="${_PTH_CPPFLAGS}" pre-patch: ${CP} -r ${PATCH_WRKSRC}/Lib/plat-freebsd8 \ Modified: head/lang/python27/Makefile ============================================================================== --- head/lang/python27/Makefile Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python27/Makefile Sun Sep 8 14:05:18 2013 (r326729) @@ -3,7 +3,7 @@ PORTNAME= python27 PORTVERSION= 2.7.5 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang python ipv6 MASTER_SITES= PYTHON MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -52,7 +52,7 @@ BINLINKS_SUB_PYTHON_VER= ${BINLINKS_SUB_ OPTIONS_DEFINE= THREADS SEM PTH PYMALLOC IPV6 FPECTL EXAMPLES NLS OPTIONS_DEFAULT= THREADS UCS4 PYMALLOC IPV6 -OPTIONS_SINGLE= UCS +OPTIONS_SINGLE= UCS OPTIONS_SINGLE_UCS= UCS2 UCS4 NLS_DESC= Enable Gettext support for the locale module @@ -61,9 +61,12 @@ NLS_DESC= Enable Gettext support for the .if ${PORT_OPTIONS:MNLS} USES+= gettext -# XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building -#LDFLAGS+= "-L${LOCALBASE}/lib" -#CFLAGS+= "-I${LOCALBASE}/include" +LDFLAGS+= -L${LOCALBASE}/lib +# We use CPPFLAGS over CFLAGS here due to -I ordering causing things like +# elementtree and pyexpat to break with python27, or to silence preprocessor +# complaints with python33 +CPPFLAGS+= -I${LOCALBASE}/include +CONFIGURE_ENV+= LIBS="-lintl" .else CONFIGURE_ENV+= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no .endif @@ -147,7 +150,7 @@ CONFIGURE_ARGS+= --disable-ipv6 CONFIGURE_ARGS+= --with-fpectl .endif -CONFIGURE_ENV+= OPT="${CFLAGS} ${_PTH_CPPFLAGS}" +CONFIGURE_ENV+= OPT="${_PTH_CPPFLAGS}" post-extract: # The distribution tarball for python 2.7 has permission bits for 'others' Modified: head/lang/python31/Makefile ============================================================================== --- head/lang/python31/Makefile Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python31/Makefile Sun Sep 8 14:05:18 2013 (r326729) @@ -2,7 +2,7 @@ PORTNAME= python31 PORTVERSION= 3.1.5 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= lang python ipv6 MASTER_SITES= PYTHON MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -19,7 +19,7 @@ WRKSRC= ${PYTHON_WRKSRC}/portbld.static PATCH_WRKSRC= ${PYTHON_WRKSRC} GNU_CONFIGURE= yes CONFIGURE_SCRIPT= ../configure # must be relative -CONFIGURE_ENV= OPT="${CFLAGS}" SVNVERSION="echo freebsd" +CONFIGURE_ENV= OPT="" SVNVERSION="echo freebsd" MAKE_ENV= VPATH="${PYTHON_WRKSRC}" USE_LDCONFIG= yes INSTALL_TARGET= altinstall @@ -58,9 +58,11 @@ NLS_DESC= Enable Gettext support for the .if ${PORT_OPTIONS:MNLS} USES+= gettext -# XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building -#LDFLAGS+= "-L${LOCALBASE}/lib" -#CFLAGS+= "-I${LOCALBASE}/include" +LDFLAGS+= -L${LOCALBASE}/lib +# We use CPPFLAGS over CFLAGS here due to -I ordering causing things like +# elementtree and pyexpat to break with python27, or to silence preprocessor +# complaints with python33 +CPPFLAGS+= -I${LOCALBASE}/include .else CONFIGURE_ENV+= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no .endif Modified: head/lang/python32/Makefile ============================================================================== --- head/lang/python32/Makefile Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python32/Makefile Sun Sep 8 14:05:18 2013 (r326729) @@ -2,7 +2,7 @@ PORTNAME= python32 PORTVERSION= 3.2.5 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang python ipv6 MASTER_SITES= PYTHON MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -16,7 +16,7 @@ WRKSRC= ${PYTHON_WRKSRC}/portbld.static PATCH_WRKSRC= ${PYTHON_WRKSRC} GNU_CONFIGURE= yes CONFIGURE_SCRIPT= ../configure # must be relative -CONFIGURE_ENV= OPT="${CFLAGS}" SVNVERSION="echo freebsd" +CONFIGURE_ENV= OPT="" SVNVERSION="echo freebsd" MAKE_ENV= VPATH="${PYTHON_WRKSRC}" USE_LDCONFIG= yes INSTALL_TARGET= altinstall @@ -56,9 +56,11 @@ NLS_DESC= Enable Gettext support for the .if ${PORT_OPTIONS:MNLS} USES+= gettext -# XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building -#LDFLAGS+= "-L${LOCALBASE}/lib" -#CFLAGS+= "-I${LOCALBASE}/include" +LDFLAGS+= -L${LOCALBASE}/lib +# We use CPPFLAGS over CFLAGS here due to -I ordering causing things like +# elementtree and pyexpat to break with python27, or to silence preprocessor +# complaints with python33 +CPPFLAGS+= -I${LOCALBASE}/include .else CONFIGURE_ENV+= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no .endif Modified: head/lang/python32/files/patch-Makefile.pre.in ============================================================================== --- head/lang/python32/files/patch-Makefile.pre.in Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python32/files/patch-Makefile.pre.in Sun Sep 8 14:05:18 2013 (r326729) @@ -1,5 +1,30 @@ ---- ./Makefile.pre.in.orig 2013-04-06 11:38:41.000000000 +0400 -+++ ./Makefile.pre.in 2013-04-08 17:48:45.000000000 +0400 +--- Makefile.pre.in.orig 2013-05-16 02:33:51.000000000 +1000 ++++ Makefile.pre.in 2013-09-05 23:42:32.910025692 +1000 +@@ -70,18 +70,18 @@ + OPT= @OPT@ + BASECFLAGS= @BASECFLAGS@ + BASECPPFLAGS= @BASECPPFLAGS@ +-CONFIGURE_CFLAGS= @CFLAGS@ +-CONFIGURE_CPPFLAGS= @CPPFLAGS@ +-CONFIGURE_LDFLAGS= @LDFLAGS@ ++CFLAGS= @CFLAGS@ ++CPPFLAGS= @CPPFLAGS@ ++LDFLAGS= @LDFLAGS@ + # Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the + # command line to append to these values without stomping the pre-set + # values. +-PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) ++PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CFLAGS) $(EXTRA_CFLAGS) + # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to + # be able to build extension modules using the directories specified in the + # environment variables +-PY_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) +-PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS) ++PY_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CPPFLAGS) ++PY_LDFLAGS= $(LDFLAGS) + NO_AS_NEEDED= @NO_AS_NEEDED@ + LDLAST= @LDLAST@ + SGI_ABI= @SGI_ABI@ @@ -277,21 +277,21 @@ ########################################################################## Modified: head/lang/python32/files/patch-setup.py ============================================================================== --- head/lang/python32/files/patch-setup.py Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python32/files/patch-setup.py Sun Sep 8 14:05:18 2013 (r326729) @@ -1,5 +1,5 @@ ---- setup.py.orig 2011-02-26 04:56:47.906445474 +0800 -+++ setup.py 2011-02-26 04:56:49.969976034 +0800 +--- setup.py.orig 2013-05-16 02:33:58.000000000 +1000 ++++ setup.py 2013-09-08 02:31:44.216199627 +1000 @@ -21,7 +21,7 @@ COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') @@ -9,7 +9,18 @@ # File which contains the directory for shared mods (for sys.path fixup # when running from the build dir, see Modules/getpath.c) -@@ -585,7 +585,7 @@ +@@ -235,8 +235,8 @@ + # unfortunately, distutils doesn't let us provide separate C and C++ + # compilers + if compiler is not None: +- (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS') +- args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags ++ (ccshared,opt,cflags) = sysconfig.get_config_vars('CCSHARED','OPT','CFLAGS') ++ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + opt + ' ' + cflags + self.compiler.set_executables(**args) + + # Not only do we write the builddir cookie, but we manually install +@@ -629,7 +629,7 @@ # use the same library for the readline and curses modules. if 'curses' in readline_termcap_library: curses_library = readline_termcap_library @@ -18,7 +29,7 @@ curses_library = 'ncursesw' elif self.compiler.find_library_file(lib_dirs, 'ncurses'): curses_library = 'ncurses' -@@ -624,7 +624,7 @@ +@@ -668,7 +668,7 @@ 'termcap'): readline_libs.append('termcap') exts.append( Extension('readline', ['readline.c'], @@ -27,7 +38,7 @@ extra_link_args=readline_extra_link_args, libraries=readline_libs) ) else: -@@ -1139,12 +1139,13 @@ +@@ -1187,12 +1187,13 @@ # provided by the ncurses library. panel_library = 'panel' if curses_library.startswith('ncurses'): @@ -42,7 +53,7 @@ libraries = curses_libs) ) elif curses_library == 'curses' and platform != 'darwin': # OSX has an old Berkeley curses, not good enough for -@@ -1157,6 +1158,7 @@ +@@ -1205,6 +1206,7 @@ curses_libs = ['curses'] exts.append( Extension('_curses', ['_cursesmodule.c'], @@ -50,7 +61,7 @@ libraries = curses_libs) ) else: missing.append('_curses') -@@ -1309,7 +1311,7 @@ +@@ -1373,7 +1375,7 @@ macros = dict() libraries = [] @@ -59,7 +70,7 @@ # FreeBSD's P1003.1b semaphore support is very experimental # and has many known problems. (as of June 2008) macros = dict() -@@ -1352,8 +1354,7 @@ +@@ -1416,8 +1418,7 @@ # End multiprocessing # Platform-specific libraries @@ -69,7 +80,7 @@ or platform.startswith("gnukfreebsd")): exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) ) else: -@@ -1868,8 +1869,7 @@ +@@ -1935,8 +1936,7 @@ # If you change the scripts installed here, you also need to # check the PyBuildScripts command above, and change the links # created by the bininstall target in Makefile.pre.in Modified: head/lang/python33/Makefile ============================================================================== --- head/lang/python33/Makefile Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python33/Makefile Sun Sep 8 14:05:18 2013 (r326729) @@ -2,7 +2,7 @@ PORTNAME= python33 PORTVERSION= 3.3.2 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= lang python ipv6 MASTER_SITES= PYTHON MASTER_SITE_SUBDIR= ${PYTHON_MASTER_SITE_SUBDIR} @@ -16,7 +16,7 @@ WRKSRC= ${PYTHON_WRKSRC}/portbld.static PATCH_WRKSRC= ${PYTHON_WRKSRC} GNU_CONFIGURE= yes CONFIGURE_SCRIPT= ../configure # must be relative -CONFIGURE_ENV= OPT="${CFLAGS}" SVNVERSION="echo freebsd" +CONFIGURE_ENV= OPT="" SVNVERSION="echo freebsd" MAKE_ENV= VPATH="${PYTHON_WRKSRC}" USE_LDCONFIG= yes INSTALL_TARGET= altinstall @@ -57,9 +57,11 @@ NLS_DESC= Enable Gettext support for the .if ${PORT_OPTIONS:MNLS} USES+= gettext -# XXX do not set any LDFLAGS or CFLAGS - this causes pyexpat to fail building -#LDFLAGS+= "-L${LOCALBASE}/lib" -#CFLAGS+= "-I${LOCALBASE}/include" +LDFLAGS+= -L${LOCALBASE}/lib +# We use CPPFLAGS over CFLAGS here due to -I ordering causing things like +# elementtree and pyexpat to break with python27, or to silence preprocessor +# complaints with python33 +CPPFLAGS+= -I${LOCALBASE}/include .else CONFIGURE_ENV+= ac_cv_lib_intl_textdomain=no ac_cv_header_libintl_h=no .endif Modified: head/lang/python33/files/patch-Makefile.pre.in ============================================================================== --- head/lang/python33/files/patch-Makefile.pre.in Sun Sep 8 13:59:48 2013 (r326728) +++ head/lang/python33/files/patch-Makefile.pre.in Sun Sep 8 14:05:18 2013 (r326729) @@ -1,5 +1,30 @@ ---- ./Makefile.pre.in.orig 2013-04-06 11:41:48.000000000 +0400 -+++ ./Makefile.pre.in 2013-04-08 16:16:25.000000000 +0400 +--- Makefile.pre.in.orig 2013-05-16 02:32:57.000000000 +1000 ++++ Makefile.pre.in 2013-09-05 23:48:22.439871947 +1000 +@@ -70,18 +70,18 @@ + OPT= @OPT@ + BASECFLAGS= @BASECFLAGS@ + BASECPPFLAGS= @BASECPPFLAGS@ +-CONFIGURE_CFLAGS= @CFLAGS@ +-CONFIGURE_CPPFLAGS= @CPPFLAGS@ +-CONFIGURE_LDFLAGS= @LDFLAGS@ ++CFLAGS= @CFLAGS@ ++CPPFLAGS= @CPPFLAGS@ ++LDFLAGS= @LDFLAGS@ + # Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the + # command line to append to these values without stomping the pre-set + # values. +-PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) ++PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CFLAGS) $(EXTRA_CFLAGS) + # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to + # be able to build extension modules using the directories specified in the + # environment variables +-PY_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) +-PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS) ++PY_CPPFLAGS= $(BASECPPFLAGS) -I. -IInclude -I$(srcdir)/Include $(CPPFLAGS) ++PY_LDFLAGS= $(LDFLAGS) + NO_AS_NEEDED= @NO_AS_NEEDED@ + LDLAST= @LDLAST@ + SGI_ABI= @SGI_ABI@ @@ -306,21 +306,21 @@ ########################################################################## _______________________________________________ svn-ports-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-ports-all To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Committed, thanks for the report Pawel!