summaryrefslogtreecommitdiff
path: root/make-distcheck.sh
diff options
context:
space:
mode:
Diffstat (limited to 'make-distcheck.sh')
-rwxr-xr-xmake-distcheck.sh115
1 files changed, 115 insertions, 0 deletions
diff --git a/make-distcheck.sh b/make-distcheck.sh
new file mode 100755
index 0000000..3d31875
--- /dev/null
+++ b/make-distcheck.sh
@@ -0,0 +1,115 @@
+#! /usr/bin/env bash
+# uriparser - RFC 3986 URI parsing library
+#
+# Copyright (C) 2018, Sebastian Pipping <sebastian@pipping.org>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above
+# copyright notice, this list of conditions and the following
+# disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials
+# provided with the distribution.
+#
+# * Neither the name of the <ORGANIZATION> nor the names of its
+# contributors may be used to endorse or promote products
+# derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+# OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+set -e
+set -u
+PS4='# '
+
+create_git_archive() (
+ local tarname="$1"
+ local format="$2"
+ local git_archive_args=(
+ --format="${format}"
+ --prefix="${tarname}"/
+ --output="${tarname}.${format}"
+ "${@:3}"
+ )
+ set -x
+ git archive "${git_archive_args[@]}" HEAD
+)
+
+compress_tarball() (
+ local tarname="$1"
+ local command="$2"
+ local format="$3"
+ echo "${PS4}${command} -c ${*:4} < ${tarname}.tar > ${tarname}.tar.${format}" >&2
+ "${command}" -c "${@:4}" < "${tarname}".tar > "${tarname}.tar.${format}"
+)
+
+check_tarball() (
+ local tarname="$1"
+ set -x
+ tar xf "${tarname}".tar
+ (
+ cd "${tarname}"
+
+ mkdir build
+ cd build
+
+ cmake "${@:2}" ..
+ make
+ make test
+ make DESTDIR="${PWD}"/ROOT/ install
+ )
+ rm -Rf "${tarname}"
+)
+
+report() {
+ local tarname="$1"
+ echo =================================================
+ echo "${tarname} archives ready for distribution:"
+ ls -1 "${tarname}".*
+ echo =================================================
+}
+
+cleanup() (
+ local tarname="$1"
+ set -x
+ rm "${tarname}".tar
+)
+
+main() {
+ local PACKAGE=uriparser
+ local PACKAGE_VERSION="$(git describe | sed 's,^uriparser-,,')"
+ local PACKAGE_TARNAME="${PACKAGE}-${PACKAGE_VERSION}"
+
+ create_git_archive ${PACKAGE_TARNAME} tar
+ check_tarball ${PACKAGE_TARNAME} "$@"
+
+ create_git_archive ${PACKAGE_TARNAME} zip -9
+
+ compress_tarball ${PACKAGE_TARNAME} bzip2 bz2 -9
+ compress_tarball ${PACKAGE_TARNAME} gzip gz --best
+ compress_tarball ${PACKAGE_TARNAME} lzip lz -9
+ compress_tarball ${PACKAGE_TARNAME} xz xz -e
+
+ cleanup ${PACKAGE_TARNAME}
+
+ report ${PACKAGE_TARNAME}
+}
+
+main "$@"