Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Sep 2013 14:05:18 +0000 (UTC)
From:      Kubilay Kocak <koobs@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r326729 - in head/lang: python26 python27 python31 python32 python32/files python33 python33/files
Message-ID:  <201309081405.r88E5I0P007786@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 @@
  
  ##########################################################################



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309081405.r88E5I0P007786>