diff options
author | rillig <rillig@pkgsrc.org> | 2020-05-19 06:09:53 +0000 |
---|---|---|
committer | rillig <rillig@pkgsrc.org> | 2020-05-19 06:09:53 +0000 |
commit | d5dee8f1acb8fc8081808467f6e08f1912b86917 (patch) | |
tree | 8a82a3dea45f62768a0cd251e78b0d4d1a9600b1 | |
parent | 084138c7f2cf501d4af620767d39c821d67ccf8b (diff) | |
download | pkgsrc-d5dee8f1acb8fc8081808467f6e08f1912b86917.tar.gz |
regress/infra-unittests: demonstrate relative paths in +BUILD_VERSION
Pointed out by wiz@.
This occured in math/libixion/Makefile.common until 2020-05-19, and still
occurs in math/xyconvert/Makefile. In all other packages, PKGDIR is
prefixed with ${.CURDIR} and is thus an absolute path.
It should not be necessary to always specify PATCHDIR as an absolute
path, and the code in mk/pkgformat/pkg/metadata.mk seems to be the only
place where relative paths are handled wrong.
-rw-r--r-- | regress/infra-unittests/pkgformat-pkg-metadata.sh | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/regress/infra-unittests/pkgformat-pkg-metadata.sh b/regress/infra-unittests/pkgformat-pkg-metadata.sh new file mode 100644 index 00000000000..93c878327cf --- /dev/null +++ b/regress/infra-unittests/pkgformat-pkg-metadata.sh @@ -0,0 +1,116 @@ +#! /bin/sh +# $NetBSD: pkgformat-pkg-metadata.sh,v 1.1 2020/05/19 06:09:53 rillig Exp $ +# +# Demonstrates how mk/pkgformat/pkg/metadata.mk creates the versioning +# information in +BUILD_VERSION. +# +# As of May 2020, several directories must be prefixed with ${.CURDIR}, +# since otherwise +BUILD_VERSION ends up containing corrupt data. +# + +set -eu + +. './test.subr' + +test_case_set_up() { + create_file 'setup.mk' <<-EOF + AWK= awk + CAT= cat + ECHO= echo + GREP= grep + MKDIR= mkdir -p + RM= rm + SED= sed + SORT= sort + TEST= test + + RUN= @set -e; + INIT_SYSTEM= rc.d + WRKDIR= $PWD + WRKSRC= $PWD + PKGSRCDIR= $mocked_pkgsrcdir + EOF +} + + +if test_case_begin 'absolute paths'; then + + wrkdir="$PWD" + pkgdir="$mocked_pkgsrcdir/category/package" + mkdir -p "$pkgdir" + cd "$pkgdir" + + cvsid='$''NetBSD: marker ''$' + create_file 'Makefile' <<-EOF + # $cvsid + + PKGDIR= \${.CURDIR} + FILESDIR= \${.CURDIR}/files + PATCHDIR= \${.CURDIR}/patches + DISTINFO_FILE= \${.CURDIR}/distinfo + + .include "$wrkdir/setup.mk" + .include "$pkgsrcdir/mk/pkgformat/pkg/metadata.mk" + EOF + create_file_lines 'patches/patch-aa' \ + "$cvsid" + create_file_lines 'files/README' \ + "$cvsid" + + run_bmake 'Makefile' "$wrkdir/.pkgdb/+BUILD_VERSION" \ + 1> "$tmpdir/output" 2>&1 \ + && exitcode=0 || exitcode=$? + + assert_that "$exitcode" --equals '0' + assert_that "$tmpdir/output" --file-is-empty + assert_that "$wrkdir/.pkgdb/+BUILD_VERSION" --file-is-lines \ + "category/package/Makefile: $cvsid" \ + "category/package/files/README: $cvsid" \ + "category/package/patches/patch-aa: $cvsid" + + test_case_end +fi + + +if test_case_begin 'relative paths'; then + + # As of May 2020, the +BUILD_VERSION contains corrupt data. + + wrkdir="$PWD" + pkgdir="$mocked_pkgsrcdir/category/package" + mkdir -p "$pkgdir" + cd "$pkgdir" + + cvsid='$''NetBSD: marker ''$' + create_file 'Makefile' <<-EOF + # $cvsid + + PKGDIR= . + FILESDIR= files + PATCHDIR= patches + DISTINFO_FILE= distinfo + + .include "$wrkdir/setup.mk" + .include "$pkgsrcdir/mk/pkgformat/pkg/metadata.mk" + EOF + create_file_lines 'patches/patch-aa' \ + "$cvsid" + create_file_lines 'files/README' \ + "$cvsid" + + run_bmake 'Makefile' "$wrkdir/.pkgdb/+BUILD_VERSION" \ + 1> "$tmpdir/output" 2>&1 \ + && exitcode=0 || exitcode=$? + + assert_that "$exitcode" --equals '0' + assert_that "$tmpdir/output" --file-is-empty + # FIXME: All files listed here are supposed to be relative to + # the pkgsrc root directory. + assert_that "$wrkdir/.pkgdb/+BUILD_VERSION" --file-is-lines \ + "./Makefile: $cvsid" \ + "category/package/Makefile: $cvsid" \ + "files/README: $cvsid" \ + "patches/patch-aa: $cvsid" + + test_case_end +fi |