diff options
Diffstat (limited to 'make-distcheck.sh')
| -rwxr-xr-x | make-distcheck.sh | 115 | 
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 "$@" | 
