aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2013-06-14 20:47:19 +0800
committerbapt <bapt@FreeBSD.org>2013-06-14 20:47:19 +0800
commit7f8901ff0415e77a5f517a22b436a62e19c5537b (patch)
treebf212593157006a670a5741b54859c4570fa4533
parentd54f8f4e4164d6e01c15f7631dc4543fad19f329 (diff)
downloadfreebsd-ports-gnome-7f8901ff0415e77a5f517a22b436a62e19c5537b.tar.gz
freebsd-ports-gnome-7f8901ff0415e77a5f517a22b436a62e19c5537b.tar.zst
freebsd-ports-gnome-7f8901ff0415e77a5f517a22b436a62e19c5537b.zip
Add a USES display to replace USE_DISPLAY.
as USE_DISPLAY it will handle the dependencies needed for a display. But it will also start and stop the Xfvb process during the requested phase the display it needed. it takes 'install' as an implicit argument, but may also accept 'build'
-rw-r--r--CHANGES13
-rw-r--r--Mk/Uses/display.mk42
2 files changed, 55 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 6f4d00c30a0b..a075b72c99e4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,19 @@ in the release notes and/or placed into UPDATING.
All ports committers are allowed to commit to this file.
+20130614:
+AUTHOR: bapt@FreeBSD.org
+
+ * New 'display' USES macro to handle building ports that may require a
+ a display to build.
+
+ USES= display[:install] will start Xvfb and set the DISPLAY environment
+ variable before the installation phase and stop it at the end. (install is
+ the implicit value)
+
+ USES= display:build will start Xvfb and set the DISPLAY environment variable
+ before the build phase and stop it at the end.
+
20130607:
AUTHOR: bdrewery@FreeBSD.org
diff --git a/Mk/Uses/display.mk b/Mk/Uses/display.mk
new file mode 100644
index 000000000000..d6f531b3fbad
--- /dev/null
+++ b/Mk/Uses/display.mk
@@ -0,0 +1,42 @@
+# $FreeBSD$
+#
+# MAINTAINER: x11@FreeBSD.org
+#
+# Feature: display
+# Usage: USES=display or USES=display:ARGS
+# Valid ARGS: install (default, implicit), build
+#
+# Except the target where the DISPLAY is needed
+#
+
+.if !defined(_INCLUDE_USES_DISPLAY_MK)
+_INCLUDE_USES_DISPLAY_MK= yes
+
+display_ARGS?= install
+.if ${display_ARGS} != build && ${display_ARGS} != install
+IGNORE= USES=display can only take 'build', 'install' and none
+.endif
+
+.if !defined(DISPLAY)
+BUILD_DEPENDS+= Xvfb:${PORTSDIR}/x11-servers/xorg-vfbserver \
+ ${LOCALBASE}/lib/X11/fonts/misc/8x13O.pcf.gz:${X_FONTS_MISC_PORT} \
+ ${LOCALBASE}/lib/X11/fonts/misc/fonts.alias:${X_FONTS_ALIAS_PORT} \
+ ${LOCALBASE}/share/X11/xkb/rules/base:${PORTSDIR}/x11/xkeyboard-config \
+ xkbcomp:${PORTSDIR}/x11/xkbcomp
+
+XVFBPORT!= port=0; while test -S /tmp/.X11-unix/X$${port} ; do port=$$(( port + 1 )) ; done ; ${ECHO_CMD} $$port
+XVFBPIDFILE= /tmp/.xvfb-${XVFBPORT}.pid
+MAKE_ENV+= DISPLAY=":${XVFBPORT}"
+
+pre-${display_ARGS}: start-display
+
+post-${display_ARGS}: stop-display
+
+start-display:
+ daemon -p ${XVFBPIDFILE} Xvfb :${XVFBPORT}
+
+stop-display:
+ pkill -15 ${XVFBPIDFILE}
+
+.endif
+.endif