tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

cwrappers now enabled by default on some platforms



With this commit cwrappers are enabled by default (i.e. if the user
does not specify USE_CWRAPPERS themselves) on Darwin, Linux, and
SunOS/gcc.

Please let me know if you run into problems with building cwrappers on
older or exotic variants of these platforms.

For those not familiar, cwrappers replace our shell-based mk/wrapper
scripts with C implementations, and significantly reduce build times
(between 1.5x and 3x is common) and system load by avoiding forks.

The aim is to eventually switch over to cwrappers completely, but
there are still some pieces of mk/wrapper not yet supported.  Users of
other platforms are encouraged to work on this and get their platforms
switched over so that their users can benefit from this work.

Thanks!

-- 
Jonathan Perkin  -  Joyent, Inc.  -  www.joyent.com
--- Begin Message ---
Module Name:	pkgsrc
Committed By:	jperkin
Date:		Thu Oct 27 10:31:06 UTC 2016

Modified Files:
	pkgsrc/mk: bsd.prefs.mk
	pkgsrc/mk/defaults: mk.conf
	pkgsrc/mk/platform: Darwin.mk Linux.mk SunOS.mk

Log Message:
Add support for enabling cwrappers automatically.  USE_CWRAPPERS now defaults
to "auto", which will enable cwrappers if the _OPSYS_SUPPORTS_CWRAPPERS
platform variable is set to "yes".

Switch over to cwrappers by default for Darwin, Linux, and SunOS (except when
using the sunpro compiler).


To generate a diff of this commit:
cvs rdiff -u -r1.387 -r1.388 pkgsrc/mk/bsd.prefs.mk
cvs rdiff -u -r1.266 -r1.267 pkgsrc/mk/defaults/mk.conf
cvs rdiff -u -r1.83 -r1.84 pkgsrc/mk/platform/Darwin.mk
cvs rdiff -u -r1.68 -r1.69 pkgsrc/mk/platform/Linux.mk
cvs rdiff -u -r1.72 -r1.73 pkgsrc/mk/platform/SunOS.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/mk/bsd.prefs.mk
diff -u pkgsrc/mk/bsd.prefs.mk:1.387 pkgsrc/mk/bsd.prefs.mk:1.388
--- pkgsrc/mk/bsd.prefs.mk:1.387	Mon Jun 13 13:26:42 2016
+++ pkgsrc/mk/bsd.prefs.mk	Thu Oct 27 10:31:05 2016
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prefs.mk,v 1.387 2016/06/13 13:26:42 jperkin Exp $
+# $NetBSD: bsd.prefs.mk,v 1.388 2016/10/27 10:31:05 jperkin Exp $
 #
 # This file includes the mk.conf file, which contains the user settings.
 #
@@ -712,8 +712,13 @@ _PKGSRC_USE_SSP=	no
 _PKGSRC_USE_SSP=	yes
 .endif
 
-# Enable cwrappers if requested unless we're building the wrappers themselves.
-.if ${USE_CWRAPPERS:tl} != "no" && empty(PKGPATH:Mpkgtools/cwrappers)
+# Enable cwrappers if not building the wrappers themselves, and if the user has
+# explicitly requested them, or if they haven't but the compiler/platform is
+# known to support them.
+.if empty(PKGPATH:Mpkgtools/cwrappers) && \
+    (${USE_CWRAPPERS:tl} == "yes" || \
+    (${USE_CWRAPPERS:tl} == "auto" && \
+     ${_OPSYS_SUPPORTS_CWRAPPERS:Uno} == "yes"))
 _USE_CWRAPPERS=		yes
 .else
 _USE_CWRAPPERS=		no

Index: pkgsrc/mk/defaults/mk.conf
diff -u pkgsrc/mk/defaults/mk.conf:1.266 pkgsrc/mk/defaults/mk.conf:1.267
--- pkgsrc/mk/defaults/mk.conf:1.266	Sun Sep 18 22:17:55 2016
+++ pkgsrc/mk/defaults/mk.conf	Thu Oct 27 10:31:05 2016
@@ -1,4 +1,4 @@
-# $NetBSD: mk.conf,v 1.266 2016/09/18 22:17:55 agc Exp $
+# $NetBSD: mk.conf,v 1.267 2016/10/27 10:31:05 jperkin Exp $
 #
 
 # This file provides default values for variables that may be overridden
@@ -12,11 +12,15 @@
 # NOTE TO PEOPLE EDITING THIS FILE - USE LEADING SPACES, NOT LEADING TABS.
 # ************************************************************************
 
-USE_CWRAPPERS?= no
-# build packages using the newer pkgtools/cwrappers infrastructure.
-# WARNING: Experimental!
-# Possible: yes, no
-# Default: no
+USE_CWRAPPERS?=	auto
+# Build packages using the newer pkgtools/cwrappers infrastructure, which can
+# significantly speed up builds and use fewer resources.  Some compiler and
+# platform combinations are not currently handled by cwrappers, so currently
+# the default is "auto" which enables cwrappers automatically if the platform
+# _OPSYS_SUPPORTS_CWRAPPERS variable is set to "yes".
+#
+# Possible: yes, no, auto
+# Default: auto (automatic detection, see above)
 
 #ALLOW_VULNERABLE_PACKAGES=
 # allow the user to build packages which are known to be vulnerable to

Index: pkgsrc/mk/platform/Darwin.mk
diff -u pkgsrc/mk/platform/Darwin.mk:1.83 pkgsrc/mk/platform/Darwin.mk:1.84
--- pkgsrc/mk/platform/Darwin.mk:1.83	Tue Sep  6 09:50:20 2016
+++ pkgsrc/mk/platform/Darwin.mk	Thu Oct 27 10:31:06 2016
@@ -1,4 +1,4 @@
-# $NetBSD: Darwin.mk,v 1.83 2016/09/06 09:50:20 jperkin Exp $
+# $NetBSD: Darwin.mk,v 1.84 2016/10/27 10:31:06 jperkin Exp $
 #
 # Variable definitions for the Darwin operating system.
 
@@ -153,6 +153,8 @@ BUILDLINK_TRANSFORM+=	rm:-Wl,--export-dy
 BUILDLINK_TRANSFORM+=	rm:-Wl,--gc-sections
 BUILDLINK_TRANSFORM+=	rm:-Wl,--no-undefined
 
+_OPSYS_SUPPORTS_CWRAPPERS=	yes
+
 _OPSYS_CAN_CHECK_SHLIBS=	yes # check shared libraries using otool(1)
 
 # OSX strip(1) tries to remove relocatable symbols and fails on certain

Index: pkgsrc/mk/platform/Linux.mk
diff -u pkgsrc/mk/platform/Linux.mk:1.68 pkgsrc/mk/platform/Linux.mk:1.69
--- pkgsrc/mk/platform/Linux.mk:1.68	Sat Sep 17 05:41:37 2016
+++ pkgsrc/mk/platform/Linux.mk	Thu Oct 27 10:31:06 2016
@@ -1,4 +1,4 @@
-# $NetBSD: Linux.mk,v 1.68 2016/09/17 05:41:37 richard Exp $
+# $NetBSD: Linux.mk,v 1.69 2016/10/27 10:31:06 jperkin Exp $
 #
 # Variable definitions for the Linux operating system.
 
@@ -104,6 +104,8 @@ _USE_RPATH=		yes	# add rpath to LDFLAGS
 _STRIPFLAG_CC?=		${_INSTALL_UNSTRIPPED:D:U-s}	# cc(1) option to strip
 _STRIPFLAG_INSTALL?=	${_INSTALL_UNSTRIPPED:D:U-s}	# install(1) option to strip
 
+_OPSYS_SUPPORTS_CWRAPPERS=	yes
+
 _OPSYS_CAN_CHECK_SHLIBS=	yes # use readelf in check/bsd.check-vars.mk
 
 # check for maximum command line length and set it in configure's environment,

Index: pkgsrc/mk/platform/SunOS.mk
diff -u pkgsrc/mk/platform/SunOS.mk:1.72 pkgsrc/mk/platform/SunOS.mk:1.73
--- pkgsrc/mk/platform/SunOS.mk:1.72	Thu Aug 25 12:08:29 2016
+++ pkgsrc/mk/platform/SunOS.mk	Thu Oct 27 10:31:06 2016
@@ -1,4 +1,4 @@
-# $NetBSD: SunOS.mk,v 1.72 2016/08/25 12:08:29 jperkin Exp $
+# $NetBSD: SunOS.mk,v 1.73 2016/10/27 10:31:06 jperkin Exp $
 #
 # Variable definitions for the SunOS/Solaris operating system.
 
@@ -112,6 +112,11 @@ _OPSYS_SYSTEM_RPATH?=	/lib${LIBABISUFFIX
 _OPSYS_LIB_DIRS?=	/lib${LIBABISUFFIX} /usr/lib${LIBABISUFFIX}
 _OPSYS_INCLUDE_DIRS?=	/usr/include
 
+# Sun Studio support is untested at this time, but would be strongly desired.
+.if ${PKGSRC_COMPILER} != "sunpro"
+_OPSYS_SUPPORTS_CWRAPPERS=	yes
+.endif
+
 # support FORTIFY (with GCC)
 _OPSYS_SUPPORTS_FORTIFY=yes
 


--- End Message ---


Home | Main Index | Thread Index | Old Index