-
Notifications
You must be signed in to change notification settings - Fork 46
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add PACKGEN to build_packages.sh and add better parameter parsing (#159)
* Add PACKGEN to build_packages.sh and add better parameter parsing
- Loading branch information
1 parent
f66d618
commit c07deb9
Showing
1 changed file
with
109 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 <[email protected]>" | ||
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 <name> Set the package name" | ||
echo " --version <version> Set the package version" | ||
echo " --deb-release <release> Set the DEB package release info (used to generate filename)" | ||
echo " --rpm-release <release> Set the RPM package release info (used to generate filename)" | ||
echo " --install-prefix <path> Set the package install prefix" | ||
echo " --test-install-prefix <path> Set the test package install prefix" | ||
echo " --src-dir<path> Set the source directory" | ||
echo " --build-dir <path> Set the build directory" | ||
echo " --deb-dir <path> Set the DEB directory" | ||
echo " --rpm-dir <path> Set the RPM directory" | ||
echo " --packgen <format> 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,24 +142,25 @@ 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 "************************************" | ||
} | ||
|
||
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 |