diff --git a/Scripts/Packaging/build_packages.sh b/Scripts/Packaging/build_packages.sh index 09e2faee..c3273806 100755 --- a/Scripts/Packaging/build_packages.sh +++ b/Scripts/Packaging/build_packages.sh @@ -23,19 +23,101 @@ set -e +# Default values GIT_TOP_LEVEL=$(git rev-parse --show-toplevel) +PACKAGE_NAME="ROCm-SDK-Examples" +PACKAGE_VERSION="6.2.0" +DEB_PACKAGE_RELEASE="local.9999" +RPM_PACKAGE_RELEASE="local.9999" +PACKAGE_INSTALL_PREFIX="/opt/rocm/examples" +TEST_PACKAGE_INSTALL_PREFIX="/opt/rocm/examples-test" +SRC_DIR="$GIT_TOP_LEVEL" +BUILD_DIR="$SRC_DIR/build" +DEB_DIR="$BUILD_DIR/deb" +RPM_DIR="$BUILD_DIR/rpm" +PACKGEN="" # Default is both DEB and RPM -# Inputs and Defaults -ROCM_EXAMPLES_ROOT="${1:-$GIT_TOP_LEVEL}" -PACKAGE_NAME="${2:-ROCm-SDK-Examples}" -PACKAGE_VERSION="${3:-6.2.0}" -PACKAGE_INSTALL_PREFIX="${4:-/opt/rocm/examples}" -TEST_PACKAGE_INSTALL_PREFIX="${5:-/opt/rocm/examples-test}" -BUILD_DIR="${6:-$ROCM_EXAMPLES_ROOT/build}" -DEB_DIR="${7:-$BUILD_DIR/deb}" -RPM_DIR="${8:-$BUILD_DIR/rpm}" -DEB_PACKAGE_RELEASE="${9:-local.9999}" -RPM_PACKAGE_RELEASE="${10:-local.9999}" +PACKAGE_CONTACT="ROCm Developer Support " +PACKAGE_DESCRIPTION_SUMMARY="A collection of examples for the ROCm software stack" +PACKAGE_HOMEPAGE_URL="https://github.com/ROCm/ROCm-examples" + +# Getopt argument parsing +VALID_ARGS=$(getopt -o h --long help,pkgname:,version:,deb-release:,rpm-release:,install-prefix:,test-install-prefix:,src-dir:,build-dir:,deb-dir:,rpm-dir:,packgen: -- "$@") +if [[ $? -ne 0 ]]; then + echo "Invalid arguments" + exit 1 +fi + +eval set -- "$VALID_ARGS" + +while [ : ]; do + case "$1" in + -h | --help) + echo "Usage: build_packages.sh [options]" + echo "Options:" + echo " --pkgname Set the package name" + echo " --version Set the package version" + echo " --deb-release Set the DEB package release info (used to generate filename)" + echo " --rpm-release Set the RPM package release info (used to generate filename)" + echo " --install-prefix Set the package install prefix" + echo " --test-install-prefix Set the test package install prefix" + echo " --src-dir Set the source directory" + echo " --build-dir Set the build directory" + echo " --deb-dir Set the DEB directory" + echo " --rpm-dir Set the RPM directory" + echo " --packgen Specify the package format. Options 'DEB' or 'RPM'. Default: '', which generates both." + exit 0 + ;; + --pkgname) + PACKAGE_NAME="$2" + shift 2 + ;; + --version) + PACKAGE_VERSION="$2" + shift 2 + ;; + --deb-release) + DEB_PACKAGE_RELEASE="$2" + shift 2 + ;; + --rpm-release) + RPM_PACKAGE_RELEASE="$2" + shift 2 + ;; + --install-prefix) + PACKAGE_INSTALL_PREFIX="$2" + shift 2 + ;; + --test-install-prefix) + TEST_PACKAGE_INSTALL_PREFIX="$2" + shift 2 + ;; + --src-dir) + SRC_DIR="$2" + shift 2 + ;; + --build-dir) + BUILD_DIR="$2" + shift 2 + ;; + --deb-dir) + DEB_DIR="$2" + shift 2 + ;; + --rpm-dir) + RPM_DIR="$2" + shift 2 + ;; + --packgen) + PACKGEN="$2" + shift 2 + ;; + --) + shift + break + ;; + esac +done STAGING_DIR="$BUILD_DIR/$PACKAGE_NAME-$PACKAGE_VERSION" TEST_STAGING_DIR="$BUILD_DIR/${PACKAGE_NAME}-test-$PACKAGE_VERSION" @@ -60,16 +142,17 @@ SOURCE_DIRS=( print_input_variables() { echo "********** Input Variables **********" - echo "ROCM_EXAMPLES_ROOT=$ROCM_EXAMPLES_ROOT" echo "PACKAGE_NAME=$PACKAGE_NAME" echo "PACKAGE_VERSION=$PACKAGE_VERSION" + echo "DEB_PACKAGE_RELEASE=$DEB_PACKAGE_RELEASE" + echo "RPM_PACKAGE_RELEASE=$RPM_PACKAGE_RELEASE" echo "PACKAGE_INSTALL_PREFIX=$PACKAGE_INSTALL_PREFIX" echo "TEST_PACKAGE_INSTALL_PREFIX=$TEST_PACKAGE_INSTALL_PREFIX" + echo "SRC_DIR=$SRC_DIR" echo "BUILD_DIR=$BUILD_DIR" echo "DEB_DIR=$DEB_DIR" echo "RPM_DIR=$RPM_DIR" - echo "DEB_PACKAGE_RELEASE=$DEB_PACKAGE_RELEASE" - echo "RPM_PACKAGE_RELEASE=$RPM_PACKAGE_RELEASE" + echo "PACKGEN=$PACKGEN" echo "************************************" } @@ -77,7 +160,7 @@ build_project() { echo "** Building the project **" mkdir -p "$BUILD_DIR" pushd "$BUILD_DIR" || exit - cmake -DCMAKE_INSTALL_PREFIX="$PACKAGE_INSTALL_PREFIX" -DGPU_ARCHITECTURES=all "$ROCM_EXAMPLES_ROOT" + cmake -DCMAKE_INSTALL_PREFIX="$PACKAGE_INSTALL_PREFIX" -DGPU_ARCHITECTURES=all "$SRC_DIR" make -j$(nproc) popd || exit } @@ -88,13 +171,13 @@ copy_sources() { echo "** Copying sources to $STAGING_DIR **" # Copy source files in root to package - cp "$ROCM_EXAMPLES_ROOT/LICENSE.md" "$ROCM_EXAMPLES_ROOT/CMakeLists.txt" "$ROCM_EXAMPLES_ROOT/README.md" "$STAGING_DIR" + cp "$SRC_DIR/LICENSE.md" "$SRC_DIR/CMakeLists.txt" "$SRC_DIR/README.md" "$STAGING_DIR" # Copy source directories to package for dir in "${SOURCE_DIRS[@]}"; do rsync -a --exclude 'build' --exclude '.gitignore' \ --exclude '*.vcxproj**' --exclude '*.sln' --exclude 'bin' \ - --exclude '*.o' --exclude '*.exe' "$ROCM_EXAMPLES_ROOT/$dir" "$STAGING_DIR" + --exclude '*.o' --exclude '*.exe' "$SRC_DIR/$dir" "$STAGING_DIR" done } @@ -321,12 +404,15 @@ copy_sources # Copy CTest files to the test staging directory copy_test_files -# Create DEB and RPM packages -create_deb_package -create_rpm_package +# Conditionally create DEB and RPM packages based on PACKGEN +if [ -z "$PACKGEN" ] || [ "$PACKGEN" == "DEB" ]; then + create_deb_package + create_deb_test_package +fi -# Create DEB and RPM test packages -create_deb_test_package -create_rpm_test_package +if [ -z "$PACKGEN" ] || [ "$PACKGEN" == "RPM" ]; then + create_rpm_package + create_rpm_test_package +fi popd || exit