summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2018-11-09 06:46:03 +0000
committerrillig <rillig@pkgsrc.org>2018-11-09 06:46:03 +0000
commit4775a6e5156ac63e95f931ff76de9613582d62d3 (patch)
tree5eb307b943f75db992ed151ef1d8cb7bb9e076ca /regress
parentbde92eaf8ca8b9b31674b9a434f734196676c209 (diff)
downloadpkgsrc-4775a6e5156ac63e95f931ff76de9613582d62d3.tar.gz
regress/env-vars: demonstrate where and how the *_ENV variables are set
Diffstat (limited to 'regress')
-rw-r--r--regress/env-vars/DESCR2
-rw-r--r--regress/env-vars/Makefile49
-rw-r--r--regress/env-vars/PLIST2
-rw-r--r--regress/env-vars/files/Makefile6
-rw-r--r--regress/env-vars/files/configure5
-rw-r--r--regress/env-vars/spec65
6 files changed, 129 insertions, 0 deletions
diff --git a/regress/env-vars/DESCR b/regress/env-vars/DESCR
new file mode 100644
index 00000000000..977d7874014
--- /dev/null
+++ b/regress/env-vars/DESCR
@@ -0,0 +1,2 @@
+Demonstrate how the various *_ENV variables fit together and where they
+are available.
diff --git a/regress/env-vars/Makefile b/regress/env-vars/Makefile
new file mode 100644
index 00000000000..850db8d4c0e
--- /dev/null
+++ b/regress/env-vars/Makefile
@@ -0,0 +1,49 @@
+# $NetBSD: Makefile,v 1.1 2018/11/09 06:46:03 rillig Exp $
+#
+
+DISTNAME= env-vars-1.0
+CATEGORIES= regress
+MASTER_SITES= # none
+DISTFILES= # none
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+COMMENT= Demonstrates the various *_ENV variables
+LICENSE= 2-clause-bsd
+
+USE_TOOLS+= printf env sed sort
+NO_CHECKSUM= yes
+HAS_CONFIGURE= yes
+WRKSRC= ${WRKDIR}
+
+ENV_VARS+= PKGSRC_MAKE_ENV
+ENV_VARS+= EXTRACT_ENV
+ENV_VARS+= CONFIGURE_ENV
+ENV_VARS+= ALL_ENV
+ENV_VARS+= MAKE_ENV
+ENV_VARS+= BSD_MAKE_ENV
+ENV_VARS+= INSTALL_ENV
+
+.for v in ${ENV_VARS}
+${v}+= ${v}_set=yes
+.endfor
+
+do-extract:
+ ${CP} ${FILESDIR}/configure ${FILESDIR}/Makefile ${WRKSRC}
+
+.include "../../mk/bsd.pkg.mk"
+
+# These definitions must be below bsd.pkg.mk, or their pkgsrc default
+# actions will not be run.
+#
+pre-fetch do-fetch post-fetch \
+pre-extract do-extract post-extract \
+pre-patch do-patch post-patch \
+pre-configure do-configure post-configure \
+pre-build do-build post-build \
+pre-install do-install post-install: \
+save-env-vars
+
+save-env-vars: .USE .PHONY
+ ${RUN} \
+ env | sed -n -e '/^[^=]*_set=yes$$/p' | LC_ALL=C sort \
+ > "$$REGRESS_TMPDIR/${.TARGET}.vars"
diff --git a/regress/env-vars/PLIST b/regress/env-vars/PLIST
new file mode 100644
index 00000000000..41f1b203de1
--- /dev/null
+++ b/regress/env-vars/PLIST
@@ -0,0 +1,2 @@
+@comment $NetBSD: PLIST,v 1.1 2018/11/09 06:46:03 rillig Exp $
+@comment intentionally empty
diff --git a/regress/env-vars/files/Makefile b/regress/env-vars/files/Makefile
new file mode 100644
index 00000000000..aaa00791a8b
--- /dev/null
+++ b/regress/env-vars/files/Makefile
@@ -0,0 +1,6 @@
+# $NetBSD: Makefile,v 1.1 2018/11/09 06:46:03 rillig Exp $
+
+all install:
+ @set -eu; \
+ env | sed -n -e '/^.*_set=yes$$/p' | LC_ALL=C sort \
+ > "$$REGRESS_TMPDIR/make-${.TARGET}.vars"
diff --git a/regress/env-vars/files/configure b/regress/env-vars/files/configure
new file mode 100644
index 00000000000..357a6b23799
--- /dev/null
+++ b/regress/env-vars/files/configure
@@ -0,0 +1,5 @@
+# $NetBSD: configure,v 1.1 2018/11/09 06:46:03 rillig Exp $
+set -eu
+
+env | sed -n -e '/^.*_set=yes$/p' | LC_ALL=C sort \
+> "$REGRESS_TMPDIR/configure.vars"
diff --git a/regress/env-vars/spec b/regress/env-vars/spec
new file mode 100644
index 00000000000..aaa8ac99a33
--- /dev/null
+++ b/regress/env-vars/spec
@@ -0,0 +1,65 @@
+# $NetBSD: spec,v 1.1 2018/11/09 06:46:03 rillig Exp $
+#
+
+tmpdir=${TMPDIR:-/tmp}/pkgsrc-env-vars
+rm -rf "$tmpdir"
+mkdir -p "$tmpdir"
+
+require_file_has_lines() { # filename line...
+ rfhl_expected="$tmpdir/expected"
+ rfhl_actual=$1
+ shift
+
+ printf '%s\n' "$@" > "$rfhl_expected"
+
+ if diff -u "$rfhl_expected" "$rfhl_actual" > /dev/null; then
+ :
+ else
+ regress_fail "Expected files to be equal."
+ diff -u "$rfhl_expected" "$rfhl_actual" || true
+ fi
+
+ rm -f "$rfhl_expected"
+}
+
+
+do_test() {
+ env REGRESS_TMPDIR="$tmpdir" $TEST_MAKE clean
+ env REGRESS_TMPDIR="$tmpdir" $TEST_MAKE update
+}
+
+check_result() {
+
+ # In the {pre,do,post}-* targets, only the PKGSRC_MAKE_ENV
+ # variables are set.
+ #
+ require_file_has_lines "$tmpdir/do-build.vars" \
+ "PKGSRC_MAKE_ENV_set=yes"
+
+ # In the configure script of the package, some more variables
+ # are set.
+ #
+ require_file_has_lines "$tmpdir/configure.vars" \
+ "ALL_ENV_set=yes" \
+ "CONFIGURE_ENV_set=yes" \
+ "PKGSRC_MAKE_ENV_set=yes"
+
+ # In the build phase, when the default do-build commands are
+ # run, the Makefiles from the package have access to these
+ # variables:
+ #
+ require_file_has_lines "$tmpdir/make-all.vars" \
+ "ALL_ENV_set=yes" \
+ "MAKE_ENV_set=yes" \
+ "PKGSRC_MAKE_ENV_set=yes"
+
+ # In the install phase, when the default do-install commands are
+ # run, the Makefiles from the package have access to these
+ # variables:
+ #
+ require_file_has_lines "$tmpdir/make-install.vars" \
+ "ALL_ENV_set=yes" \
+ "INSTALL_ENV_set=yes" \
+ "MAKE_ENV_set=yes" \
+ "PKGSRC_MAKE_ENV_set=yes"
+}