Splitting up and simplifying devel/apr1

Tijl Coosemans tijl at FreeBSD.org
Thu Jun 27 14:38:18 UTC 2013


On 2013-06-23 20:47, Tijl Coosemans wrote:
> On 2013-06-22 12:50, olli hauer wrote:
>>> In the discussion on src-committers about svnlite it was mentioned that
>>> devel/subversion is too heavy to build, pulling in perl, python and
>>> all the autotools. I've been going over its dependencies and it turns
>>> out these are all pulled in by devel/apr1, so I've been looking into
>>> simplifying that port.
>>>
>>> It seems the port can easily be split up into two simple ports, one for
>>> the APR library and one for the APR Utility library. There's no need
>>> for autotools, libtool, python, etc.
>>>
>>> I've attached a patch that creates devel/apr and devel/apr-util.
>>> Please take a look at them and let me know what you think.
>>> Another patch can then remove devel/apr1 and update all ports that
>>> depend on it, but before I spend more time on this, do you agree this
>>
>> On upstream apr and apr-util are already merged but until now are
>> delivered separate.
>>
>> In the past they had also sometimes update to apr2 snapshots where
>> they delivered everything in one dist file.
>>
>> In case there is no planning on upstream to merge the two distfiles
>> into one like the apr2 snapshots then I think we could spend some
>> time and separate the ports.
>>
>> I will ask on the dev at apr.apache mailing list if there is a road map
>> (I cannot find one on the apr public sites).
> 
> I've seen the mails on the apr mailing list. Since apr2 includes apr-util
> it's probably easier to keep apr1 and apr-util in one port too. Then
> there's no need to update and rebuild dependent ports either.
> 
> I've attached a new patch for devel/apr1. It contains the following changes:
> 
> - Move include <bsd.port.options.mk> down.
> - Remove USE_AUTOTOOLS and USE_PYTHON_BUILD.
> - Use pathfix to patch pkgconfig paths. (replaces a post-patch command)
> - Add CFLAGS, CPPFLAGS and LDFLAGS to CONFIGURE_ENV. They are set for
>   some options.
> - Append include dirs to CPPFLAGS instead of CFLAGS.
> - Remove files/patch-apr_hints.m4. Instead replace any evaluation of
>   $os_version with ${OSVERSION} directly in configure script.
> - Remove patching of gen-build.py because we don't run it anymore.
> - Remove patching of "void main" to "int main". According to the commit log
>   it was added for Clang, but Clang no longer seems to complain about it.
> - Patch -lpthread directly in the configure script.
> - Remove the run-autotools target. Running of configure has been moved to
>   the do-configure target.
> - Replace "cd <dir>; <command>" with "(cd <dir> && <command>)" as
>   recommended by the make manpage in current.
> - Add ${_MAKE_JOBS} in do-build.
> - Rename the test target to regression-test because that's what pointyhat
>   runs.
> - Remove debug_autoconf target because we don't run autotools anymore.

Any progress on this?

I've attached a new patch with two additional changes:
- Mark recursive targets with .MAKE to fix parallel builds with bmake.
- Disable regression tests when PACKAGE_BUILDING is defined because the
  tests require networking which isn't available on redports (and pointyhat
  as well probably).
-------------- next part --------------
Index: devel/apr1/Makefile
===================================================================
--- devel/apr1/Makefile	(revision 321865)
+++ devel/apr1/Makefile	(working copy)
@@ -29,18 +29,15 @@ NDBM_DESC=	NDBM support
 SSL_DESC=	OpenSSL crypto driver
 NSS_DESC=	NSS crypto driver
 
-.include <bsd.port.options.mk>
-
 APR_VERSION=	1.4.6
 APU_VERSION=	1.4.1
 
-USES=		iconv
-USE_AUTOTOOLS=	automake autoconf libtool:env
-USE_PYTHON_BUILD=	-2.7
-USE_LDCONFIG=		yes
-GNU_CONFIGURE=		yes
+USES=		iconv pathfix
+USE_LDCONFIG=	yes
+GNU_CONFIGURE=	yes
 
-CONFIGURE_ENV=	CC="${CC}"
+CONFIGURE_ENV=	CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" \
+		LDFLAGS="${LDFLAGS}"
 
 NO_WRKSUBDIR=	yes
 APR_WRKDIR=	${WRKDIR}/apr-${APR_VERSION}
@@ -55,6 +52,8 @@ APU_CONF_ARGS=	--with-apr=${APR_WRKDIR} 
 		--with-expat=${LOCALBASE} \
 		--with-iconv=${LOCALBASE}
 
+.include <bsd.port.options.mk>
+
 ########## APR Options
 .if ${PORT_OPTIONS:MTHREADS}
 APR_CONF_ARGS+=	--enable-threads
@@ -131,7 +130,7 @@ PLIST_SUB+=	MYSQL=""
 USE_MYSQL=	YES
 APU_CONF_ARGS+=	--with-mysql=${LOCALBASE}
 CONFIGURE_ENV+=	LIBS="${LIBS}"
-CFLAGS+=	-I${LOCALBASE}/include -I${LOCALBASE}/include/mysql -DHAVE_MYSQL_H
+CPPFLAGS+=	-I${LOCALBASE}/include -I${LOCALBASE}/include/mysql -DHAVE_MYSQL_H
 LDFLAGS+=	-L${LOCALBASE}/lib/mysql
 .else
 PLIST_SUB+=	MYSQL="@comment "
@@ -168,7 +167,7 @@ APU_CONF_ARGS+=	--with-crypto
 APU_EXTRAS=	yes
 USE_OPENSSL=	yes
 PLIST_SUB+=	SSL=""
-CFLAGS+=	-I${OPENSSLINC}
+CPPFLAGS+=	-I${OPENSSLINC}
 LDFLAGS+=	-L${OPENSSLLIB}
 APU_CONF_ARGS+=	--with-openssl=${OPENSSLBASE}
 .else
@@ -182,7 +181,7 @@ APU_CONF_ARGS+=	--without-openssl
 APU_EXTRAS=	yes
 PLIST_SUB+=	NSS=""
 LIB_DEPENDS+=	nss3:${PORTSDIR}/security/nss
-CFLAGS+=	-I${LOCALBASE}/include/nss
+CPPFLAGS+=	-I${LOCALBASE}/include/nss
 LDFLAGS+=	-L${LOCALBASE}/lib/nss
 APU_CONF_ARGS+=	--with-nss=${LOCALBASE}
 .else
@@ -195,66 +194,35 @@ PLIST_SUB+=	APU_EXTRAS=""
 PLIST_SUB+=	APU_EXTRAS="@comment "
 .endif
 
-post-patch: .SILENT
-	${REINPLACE_CMD} -e 's/OSVERSION/${OSVERSION}/g' \
-		${APR_WRKDIR}/build/apr_hints.m4
-	${FIND} ${APR_WRKDIR} ${APU_WRKDIR} -name "Makefile.in*" | ${XARGS} ${REINPLACE_CMD} -e \
-		's|[(]libdir[)]/pkgconfig|(prefix)/libdata/pkgconfig|g'
-	${REINPLACE_CMD} -e '1 s/python/${PYTHON_VERSION}/' \
-		${APR_WRKDIR}/build/gen-build.py
-	${REINPLACE_CMD} -e 's/void main/int main/' ${APR_WRKDIR}/build/apr_network.m4
+post-patch:
+	@${REINPLACE_CMD} -e 's/$$os_version/${OSVERSION}/g' \
+		${APR_WRKDIR}/configure
+	@${REINPLACE_CMD} -e '/recursive:/s/$$/ .MAKE/' \
+		${APR_WRKDIR}/build/apr_rules.mk.in
 # Fix pthread: Please do not remove, else apr-1-config returns wrong values
-	${REINPLACE_CMD} -e 's/-lpthread/-pthread/g' \
-		${APR_WRKDIR}/build/apr_threads.m4 ${APR_WRKDIR}/build/apr_hints.m4 \
-		${APU_WRKDIR}/build/apu-conf.m4
-
-run-autotools::
-	cd ${APR_WRKDIR} ; \
-		${SETENV} ${CONFIGURE_ENV} ${SH} ./buildconf
-	cd ${APU_WRKDIR} ; \
-		${RM} -fr xml/expat
-	cd ${APU_WRKDIR} ; \
-		${SETENV} ${CONFIGURE_ENV} ${SH} ./buildconf \
-		--with-apr=${APR_WRKDIR}
-	${REINPLACE_CMD} -e 's/ gsed//g' \
-		${APR_WRKDIR}/build/libtool.m4 \
+	@${REINPLACE_CMD} -e 's/-lpthread/${PTHREAD_LIBS}/g' \
 		${APR_WRKDIR}/configure
-	cd ${APR_WRKDIR}; \
-		${SETENV} ${CONFIGURE_ENV} ${SH} \
-		./configure ${CONFIGURE_ARGS} ${APR_CONF_ARGS}
-	cd ${APU_WRKDIR}; \
-		${SETENV} ${CONFIGURE_ENV} CFLAGS="${CFLAGS}" ${SH} \
-		./configure ${CONFIGURE_ARGS} ${APU_CONF_ARGS}
 
 do-configure:
-	${DO_NADA}
+	@(cd ${APR_WRKDIR} && \
+		${SETENV} ${CONFIGURE_ENV} \
+		./configure ${CONFIGURE_ARGS} ${APR_CONF_ARGS})
+	@(cd ${APU_WRKDIR} && \
+		${SETENV} ${CONFIGURE_ENV} \
+		./configure ${CONFIGURE_ARGS} ${APU_CONF_ARGS})
 
 do-build:
-	cd ${APR_WRKDIR}; ${SETENV} ${MAKE_ENV} ${MAKE}
-	cd ${APU_WRKDIR}; ${SETENV} ${MAKE_ENV} ${MAKE}
+	@(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS})
+	@(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${_MAKE_JOBS})
 
 do-install:
-	cd ${APR_WRKDIR}; ${SETENV} ${MAKE_ENV} ${MAKE} ${INSTALL_TARGET}
-	cd ${APU_WRKDIR}; ${SETENV} ${MAKE_ENV} ${MAKE} ${INSTALL_TARGET}
+	@(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${INSTALL_TARGET})
+	@(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${INSTALL_TARGET})
 
-test: build
-	-@(cd ${APR_WRKDIR}; ${MAKE} test)
-	-@(cd ${APU_WRKDIR}; ${MAKE} test)
-
-#regression-test: test
-
-debug_autoconf:
-	@${ECHO} "LIBTOOL: ${LIBTOOL_VERSION}"
-	@${ECHO} "AUTOCONF: dev ${dev_acver} cur ${cur_acver} use ${use_acver}"
-	@${ECHO} "AUTOMAKE: dev ${dev_amver} cur ${cur_amver} use ${use_amver}"
-	@${ECHO} "AUTOCONF_DIR: ${AUTOCONF_DIR}"
-	@${ECHO} "BUILD_DEPENDS: ${BUILD_DEPENDS}"
-	@${ECHO} "ACLOCAL_DIR: ${ACLOCAL_DIR}"
-	@${ECHO} "LIBTOOLFILES: ${LIBTOOLFILES}"
-	@${ECHO} "LIBTOOL_SHAREDIR: ${LIBTOOL_SHAREDIR}"
-	@${ECHO} "LIBTOOL_LIBEXECDIR: ${LIBTOOL_LIBEXECDIR}"
-	@${ECHO} "LIBTOOL_M4: ${LIBTOOL_M4}"
-	@${ECHO} "${SETENV} ${CONFIGURE_ENV} ${SH} ./configure ${CONFIGURE_ARGS} ${APR_CONF_ARGS}"
-	@${ECHO} "${SETENV} ${CONFIGURE_ENV} CFLAGS="${CFLAGS}" ${SH} ./configure ${CONFIGURE_ARGS} ${APR_UTIL_CONF_ARGS}"
+.if !defined(PACKAGE_BUILDING)
+regression-test: build
+	@(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} test)
+	@(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} test)
+.endif
 
 .include <bsd.port.mk>
Index: devel/apr1/files/patch-apr_hints.m4
===================================================================
--- devel/apr1/files/patch-apr_hints.m4	(revision 321865)
+++ devel/apr1/files/patch-apr_hints.m4	(working copy)
@@ -1,15 +0,0 @@
---- apr-1.4.6/build/apr_hints.m4.orig	Wed Oct 27 11:12:28 2004
-+++ apr-1.4.6/build/apr_hints.m4	Wed Oct 27 11:25:32 2004
-@@ -159,11 +159,7 @@
- 	;;
-     *-freebsd*)
-         APR_SETIFNULL(apr_lock_method, [USE_FLOCK_SERIALIZE])
--        if test -x /sbin/sysctl; then
--            os_version=`/sbin/sysctl -n kern.osreldate`
--        else
--            os_version=000000
--        fi
-+        os_version="OSVERSION"
-         # 502102 is when libc_r switched to libpthread (aka libkse).
-         if test $os_version -ge "502102"; then
-           apr_cv_pthreads_cflags="none"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-apache/attachments/20130627/c3d81627/attachment.sig>


More information about the freebsd-apache mailing list