From commits-return-71704-archive-asf-public=cust-asf.ponee.io@cloudstack.apache.org Tue Feb 6 21:28:35 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id 98B82180657 for ; Tue, 6 Feb 2018 21:28:35 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 86916160C37; Tue, 6 Feb 2018 20:28:35 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id A6094160C45 for ; Tue, 6 Feb 2018 21:28:34 +0100 (CET) Received: (qmail 56589 invoked by uid 500); 6 Feb 2018 20:28:33 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 56578 invoked by uid 99); 6 Feb 2018 20:28:33 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 Feb 2018 20:28:33 +0000 From: GitBox To: commits@cloudstack.apache.org Subject: [GitHub] DaanHoogland closed pull request #2433: CLOUDSTACK-10268: Fix and enhance package script Message-ID: <151794891324.15877.10646442058068838400.gitbox@gitbox.apache.org> DaanHoogland closed pull request #2433: CLOUDSTACK-10268: Fix and enhance package script URL: https://github.com/apache/cloudstack/pull/2433 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/packaging/centos63/cloud.spec b/packaging/centos63/cloud.spec index ba1798e7dac..e697be7f972 100644 --- a/packaging/centos63/cloud.spec +++ b/packaging/centos63/cloud.spec @@ -24,11 +24,16 @@ Name: cloudstack Summary: CloudStack IaaS Platform #http://fedoraproject.org/wiki/PackageNamingGuidelines#Pre-Release_packages +%if "%{?_brand}" != "" +%define _brandver %{_ver}%{_brand} +%else +%define _brandver %{_ver} +%endif %if "%{?_prerelease}" != "" -%define _maventag %{_ver}-SNAPSHOT +%define _maventag %{_brandver}-SNAPSHOT Release: %{_rel}%{dist} %else -%define _maventag %{_ver} +%define _maventag %{_brandver} Release: %{_rel}%{dist} %endif diff --git a/packaging/centos7/cloud.spec b/packaging/centos7/cloud.spec index 481c86c3baf..d21c9284776 100644 --- a/packaging/centos7/cloud.spec +++ b/packaging/centos7/cloud.spec @@ -24,11 +24,16 @@ Name: cloudstack Summary: CloudStack IaaS Platform #http://fedoraproject.org/wiki/PackageNamingGuidelines#Pre-Release_packages +%if "%{?_brand}" != "" +%define _brandver %{_ver}%{_brand} +%else +%define _brandver %{_ver} +%endif %if "%{?_prerelease}" != "" -%define _maventag %{_ver}-SNAPSHOT +%define _maventag %{_brandver}-SNAPSHOT Release: %{_rel}%{dist} %else -%define _maventag %{_ver} +%define _maventag %{_brandver} Release: %{_rel}%{dist} %endif diff --git a/packaging/package.sh b/packaging/package.sh index 8a876615123..d1f620cb505 100755 --- a/packaging/package.sh +++ b/packaging/package.sh @@ -17,29 +17,38 @@ # under the License. function usage() { - echo "" - echo "usage: ./package.sh [-h|--help] -d|--distribution [-r|--release ] [-p|--pack oss|OSS|noredist|NOREDIST] [-s|--simulator default|DEFAULT|simulator|SIMULATOR]" - echo "" - echo "The supported arguments are:" - echo " To package with only redistributable libraries (default)" - echo " -p|--pack oss|OSS" - echo " To package with non-redistributable libraries" - echo " -p|--pack noredist|NOREDIST" - echo " To build a package for a distribution (mandatory)" - echo " -d|--distribution centos7|centos63|fedora20|fedora21" - echo " To set the package release version (optional)" - echo " (default is 1 for normal and prereleases, empty for SNAPSHOT)" - echo " -r|--release version(integer)" - echo " To build for Simulator (optional)" - echo " -s|--simulator default|DEFAULT|simulator|SIMULATOR" - echo " To display this information" - echo " -h|--help" - echo "" - echo "Examples: ./package.sh --pack oss" - echo " ./package.sh --pack noredist" - echo " ./package.sh --pack oss --distribution centos7 --release 42" - echo " ./package.sh --distribution centos7 --release 42" - echo " ./package.sh --distribution centos7" + cat << USAGE +Usage: ./package.sh -d DISTRO [OPTIONS]... +Package CloudStack for specific distribution and provided options. + +If there's a "branding" string in the POM version (e.g. x.y.z.a-NAME[-SNAPSHOT]), the branding name will +be used in the final generated pacakge like: cloudstack-management-x.y.z.a-NAME.NUMBER.el7.centos.x86_64 +note that you can override/provide "branding" string with "-b, --brand" flag as well. + +Mandatory arguments: + -d, --distribution string Build package for specified distribution ("centos7"|"centos63") + +Optional arguments: + -p, --pack string Define which type of libraries to package ("oss"|"OSS"|"noredist"|"NOREDIST") (default "oss") + - oss|OSS to package with only redistributable libraries + - noredist|NOREDIST to package with non-redistributable libraries + -r, --release integer Set the package release version (default is 1 for normal and prereleases, empty for SNAPSHOT) + -s, --simulator string Build package for Simulator ("default"|"DEFAULT"|"simulator"|"SIMULATOR") (default "default") + -b, --brand string Set branding to be used in package name (it will override any branding string in POM version) + -T, --use-timestamp Use epoch timestamp instead of SNAPSHOT in the package name (if not provided, use "SNAPSHOT") + +Other arguments: + -h, --help Display this help message and exit + +Examples: + package.sh --distribution centos7 + package.sh --distribution centos7 --pack oss + package.sh --distribution centos7 --pack noredist + package.sh --distribution centos7 --release 42 + package.sh --distribution centos7 --pack noredist --release 42 + +USAGE + exit 0 } # packaging @@ -47,10 +56,12 @@ function usage() { # $2 simulator flag # $3 distribution name # $4 package release version +# $5 brand string (globally provided) function packaging() { CWD=$(pwd) RPMDIR=$CWD/../dist/rpmbuild PACK_PROJECT=cloudstack + if [ -n "$1" ] ; then DEFOSSNOSS="-D_ossnoss $1" fi @@ -59,6 +70,7 @@ function packaging() { fi DISTRO=$3 + MVN=$(which mvn) if [ -z "$MVN" ] ; then MVN=$(locate bin/mvn | grep -e mvn$ | tail -1) @@ -67,22 +79,38 @@ function packaging() { exit 2 fi fi + VERSION=$(cd ../; $MVN org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep --color=none '^[0-9]\.') + + if [ -n "$5" ]; then + DEFBRN="-D_brand -$5" + BRAND="${5}." + else + BASEVER=$(echo "$VERSION" | sed 's/-SNAPSHOT//g') + REALVER=$(echo "$BASEVER" | cut -d '-' -f 1) + BRAND=$(echo "$BASEVER" | cut -d '-' -f 2) + + if [ "$REALVER" != "$BRAND" ]; then + DEFBRN="-D_brand -$BRAND" + BRAND="${BRAND}." + else + BRAND="" + fi + fi + if echo "$VERSION" | grep -q SNAPSHOT ; then - REALVER=$(echo "$VERSION" | cut -d '-' -f 1) if [ -n "$4" ] ; then DEFPRE="-D_prerelease $4" - DEFREL="-D_rel SNAPSHOT$4" + DEFREL="-D_rel ${BRAND}${SNAPSHOT_TIMESTAMP}$4" else DEFPRE="-D_prerelease 1" - DEFREL="-D_rel SNAPSHOT" + DEFREL="-D_rel ${BRAND}${SNAPSHOT_TIMESTAMP}" fi else - REALVER="$VERSION" if [ -n "$4" ] ; then - DEFREL="-D_rel $4" + DEFREL="-D_rel ${BRAND}$4" else - DEFREL="-D_rel 1" + DEFREL="-D_rel ${BRAND}1" fi fi DEFVER="-D_ver $REALVER" @@ -102,7 +130,7 @@ function packaging() { echo ". executing rpmbuild" cp "$DISTRO/cloud.spec" "$RPMDIR/SPECS" - (cd "$RPMDIR"; rpmbuild --define "_topdir ${RPMDIR}" "${DEFVER}" "${DEFREL}" ${DEFPRE+"$DEFPRE"} ${DEFOSSNOSS+"$DEFOSSNOSS"} ${DEFSIM+"$DEFSIM"} -bb SPECS/cloud.spec) + (cd "$RPMDIR"; rpmbuild --define "_topdir ${RPMDIR}" "${DEFVER}" "${DEFREL}" ${DEFPRE+"$DEFPRE"} ${DEFOSSNOSS+"$DEFOSSNOSS"} ${DEFSIM+"$DEFSIM"} ${DEFBRN+"$DEFBRN"} -bb SPECS/cloud.spec) if [ $? -ne 0 ]; then echo "RPM Build Failed " exit 3 @@ -116,22 +144,20 @@ TARGETDISTRO="" SIM="" PACKAGEVAL="" RELEASE="" +BRANDING="" +SNAPSHOT_TIMESTAMP="SNAPSHOT" -SHORTOPTS="hp:s:d:r:" -LONGOPTS="help,pack:simulator:distribution:release:" -ARGS=$(getopt -s bash -u -a --options "$SHORTOPTS" --longoptions "$LONGOPTS" --name "$0" -- "$@") -eval set -- "$ARGS" -echo "$ARGS" -while [ $# -gt 0 ] ; do +unrecognized_flags="" + +while [ -n "$1" ]; do case "$1" in -h | --help) usage exit 0 ;; + -p | --pack) - echo "Packaging CloudStack..." PACKAGEVAL=$2 - echo "$PACKAGEVAL" if [ "$PACKAGEVAL" == "oss" -o "$PACKAGEVAL" == "OSS" ] ; then PACKAGEVAL="" elif [ "$PACKAGEVAL" == "noredist" -o "$PACKAGEVAL" == "NOREDIST" ] ; then @@ -141,11 +167,11 @@ while [ $# -gt 0 ] ; do usage exit 1 fi - shift + shift 2 ;; + -s | --simulator) SIM=$2 - echo "$SIM" if [ "$SIM" == "default" -o "$SIM" == "DEFAULT" ] ; then SIM="false" elif [ "$SIM" == "simulator" -o "$SIM" == "SIMULATOR" ] ; then @@ -155,8 +181,9 @@ while [ $# -gt 0 ] ; do usage exit 1 fi - shift + shift 2 ;; + -d | --distribution) TARGETDISTRO=$2 if [ -z "$TARGETDISTRO" ] ; then @@ -164,22 +191,41 @@ while [ $# -gt 0 ] ; do usage exit 1 fi - shift + shift 2 ;; + -r | --release) RELEASE=$2 - shift + shift 2 ;; - -) - echo "Error: Unrecognized option" - usage - exit 1 + + -b | --brand) + BRANDING=$2 + shift 2 + ;; + + -T | --use-timestamp) + SNAPSHOT_TIMESTAMP="$(date +%s)" + shift 1 ;; + + -*) + unrecognized_flags="${unrecognized_flags}$1 " + shift 1 + ;; + *) - shift + shift 1 ;; esac done -packaging "$PACKAGEVAL" "$SIM" "$TARGETDISTRO" "$RELEASE" +if [ -n "$unrecognized_flags" ]; then + echo "Warning: Unrecognized option(s) found \" ${unrecognized_flags}\"" + echo " You're advised to fix your build job scripts and prevent using these" + echo " flags, as in the future release(s) they will break packaging script." + echo "" +fi +echo "Packaging CloudStack..." +packaging "$PACKAGEVAL" "$SIM" "$TARGETDISTRO" "$RELEASE" "$BRANDING" ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: users@infra.apache.org With regards, Apache Git Services