diff --git a/.gitignore b/.gitignore index 7cdeb421..100328d2 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,11 @@ # Editor files *~ *.swp + +# Debian packages +packages/*.deb +packages/*.debian.tar.xz +packages/*.dsc +packages/*.orig.tar.gz +packages/*.changes +packages/*.buildinfo diff --git a/Makefile b/Makefile index df38882b..d3fe424c 100644 --- a/Makefile +++ b/Makefile @@ -89,6 +89,12 @@ clean: $(MAKE) clean cd src/gdrdrv && \ $(MAKE) clean + rm -f packages/*.deb + rm -f packages/*.debian.tar.xz + rm -f packages/*.dsc + rm -f packages/*.orig.tar.gz + rm -f packages/*.changes + rm -f packages/*.buildinfo .PHONY: driver clean all lib exes lib_install drv_install exes_install install diff --git a/packages/build-deb-packages.sh b/packages/build-deb-packages.sh index 2307a6a5..3ff8a344 100755 --- a/packages/build-deb-packages.sh +++ b/packages/build-deb-packages.sh @@ -23,6 +23,7 @@ # Restart this number at 1 if MAJOR_VERSION or MINOR_VERSION changes # See https://www.debian.org/doc/debian-policy/ch-controlfields.html#version DEBIAN_VERSION=1 +DEBIAN_RELEASE=unstable SCRIPT_DIR_PATH="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)" TOP_DIR_PATH="${SCRIPT_DIR_PATH}/.." @@ -32,6 +33,9 @@ CWD=$(pwd) skip_dep_check=0 build_test_package=1 build_driver_package=1 +keep_deb_filenames=0 + +git_commit_date="" ex() { @@ -48,19 +52,22 @@ ex() function show_help { - echo "Usage: [CUDA=] $0 [-d] [-t] [-k] [-h]" + echo "Usage: [CUDA=] $0 [-d] [-t] [-k] [-O] [-g] [-R ] [-h]" echo "" echo " CUDA= Set your installed CUDA path (ex. /usr/local/cuda)." echo " -d Don't check build dependencies. Use my environment variables such as C_INCLUDE_PATH instead." echo " -t Skip building gdrcopy-tests package." echo " -k Skip building gdrdrv-dkms package." + echo " -O Keep original package filenames." + echo " -g Include date of latest git commit in version number." + echo " -R Set debian release in changelog, dsc and changes files. (Default: unstable)" echo " -h Show this help text." echo "" } OPTIND=1 # Reset in case getopts has been used previously in the shell. -while getopts "hdtk" opt; do +while getopts "hdtkOgR:" opt; do case "${opt}" in h) show_help @@ -72,6 +79,12 @@ while getopts "hdtk" opt; do ;; k) build_driver_package=0 ;; + O) keep_deb_filenames=1 + ;; + g) git_commit_date=$(git show -s --format='%cd' --date='format:%Y%m%d%H%M%S' 2>/dev/null) + ;; + R) DEBIAN_RELEASE=$OPTARG + ;; esac done @@ -96,7 +109,7 @@ MODULE_SUBDIR=$(awk '/MODULE_SUBDIR \?=/ { print $3 }' ${TOP_DIR_PATH}/src/gdrdr MAJOR_VERSION=$(awk '/#define GDR_API_MAJOR_VERSION/ { print $3 }' ${TOP_DIR_PATH}/include/gdrapi.h | tr -d '\n') MINOR_VERSION=$(awk '/#define GDR_API_MINOR_VERSION/ { print $3 }' ${TOP_DIR_PATH}/include/gdrapi.h | tr -d '\n') -VERSION="${MAJOR_VERSION}.${MINOR_VERSION}" +VERSION="${MAJOR_VERSION}.${MINOR_VERSION}${git_commit_date:++git$git_commit_date}" if [ "X$VERSION" == "X" ]; then echo "Failed to get version numbers!" >&2 exit 1 @@ -128,6 +141,7 @@ ex cp README.md ${tmpdir}/gdrcopy/debian-tests/README.source ex cd ${tmpdir}/gdrcopy ex find . -type f -exec sed -i "s/@FULL_VERSION@/${FULL_VERSION}/g" {} + ex find . -type f -exec sed -i "s/@VERSION@/${VERSION}/g" {} + +ex find . -type f -exec sed -i "s/@DEBIAN_RELEASE@/${DEBIAN_RELEASE}/g" {} + ex rm -f ${tmpdir}/libgdrapi_${VERSION}.orig.tar.gz ex rm -f ${tmpdir}/gdrcopy-tests_${VERSION}.orig.tar.gz @@ -189,6 +203,7 @@ if [[ ${build_driver_package} == 1 ]]; then ex find . -type f -exec sed -i "s/@FULL_VERSION@/${FULL_VERSION}/g" {} + ex find . -type f -exec sed -i "s/@VERSION@/${VERSION}/g" {} + ex find . -type f -exec sed -i "s/@MODULE_LOCATION@/${MODULE_SUBDIR//\//\\/}/g" {} + + ex find . -type f -exec sed -i "s/@DEBIAN_RELEASE@/${DEBIAN_RELEASE}/g" {} + ex cd ${tmpdir} ex tar czvf gdrdrv-dkms_${VERSION}.orig.tar.gz gdrdrv-dkms-${VERSION} @@ -209,6 +224,7 @@ ex cd ${metadir} ex find . -type f -exec sed -i "s/@FULL_VERSION@/${FULL_VERSION}/g" {} + ex find . -type f -exec sed -i "s/@VERSION@/${VERSION}/g" {} + ex find . -type f -exec sed -i "s/@MODULE_LOCATION@/${MODULE_SUBDIR//\//\\/}/g" {} + +ex find . -type f -exec sed -i "s/@DEBIAN_RELEASE@/${DEBIAN_RELEASE}/g" {} + ex cd ${tmpdir} ex tar czvf gdrcopy_${VERSION}.orig.tar.gz gdrcopy-${VERSION} cd ${metadir} @@ -228,16 +244,20 @@ ex cd ${CWD} for item in `ls ${tmpdir}/*.deb`; do item_name=`basename $item` - item_name=`echo $item_name | sed -e "s/\.deb//g"` - if echo "$item_name" | grep -q "tests"; then - item_name="${item_name}${release}+cuda${CUDA_MAJOR}.${CUDA_MINOR}.deb" - else - item_name="${item_name}${release}.deb" + if [ $keep_deb_filenames = 0 ] ; then + item_name=`echo $item_name | sed -e "s/\.deb//g"` + if echo "$item_name" | grep -q "tests"; then + item_name="${item_name}${release}+cuda${CUDA_MAJOR}.${CUDA_MINOR}.deb" + else + item_name="${item_name}${release}.deb" + fi fi ex cp $item ./${item_name} done ex cp ${tmpdir}/*.tar.* . ex cp ${tmpdir}/*.dsc . +ex cp ${tmpdir}/*.changes . +ex cp ${tmpdir}/*.buildinfo . echo echo "Cleaning up ..." diff --git a/packages/debian-lib/changelog b/packages/debian-lib/changelog index aac723a4..5faad821 100644 --- a/packages/debian-lib/changelog +++ b/packages/debian-lib/changelog @@ -1,4 +1,4 @@ -libgdrapi (@FULL_VERSION@) stable; urgency=low +libgdrapi (@FULL_VERSION@) @DEBIAN_RELEASE@; urgency=low * Initial version of libgdrapi package -- was a part of gdrcopy package. diff --git a/packages/debian-meta/changelog b/packages/debian-meta/changelog index 48ec0bd9..df587ed0 100644 --- a/packages/debian-meta/changelog +++ b/packages/debian-meta/changelog @@ -1,4 +1,4 @@ -gdrcopy (@FULL_VERSION@) stable; urgency=low +gdrcopy (@FULL_VERSION@) @DEBIAN_RELEASE@; urgency=low * Convert to meta package. * Declare dependency with gdrdrv-dkms, libgdrapi, and gdrcopy-tests. diff --git a/packages/debian-tests/changelog b/packages/debian-tests/changelog index 736d7841..c2dc9aeb 100644 --- a/packages/debian-tests/changelog +++ b/packages/debian-tests/changelog @@ -1,4 +1,4 @@ -gdrcopy-tests (@FULL_VERSION@) stable; urgency=low +gdrcopy-tests (@FULL_VERSION@) @DEBIAN_RELEASE@; urgency=low * Initial version of gdrcopy-tests package -- was a part of gdrcopy package. * Add apiperf test. diff --git a/packages/dkms/debian/changelog b/packages/dkms/debian/changelog index 6a4872df..39c2b20b 100644 --- a/packages/dkms/debian/changelog +++ b/packages/dkms/debian/changelog @@ -1,4 +1,4 @@ -gdrdrv-dkms (@FULL_VERSION@) unstable; urgency=low +gdrdrv-dkms (@FULL_VERSION@) @DEBIAN_RELEASE@; urgency=low * Change the package maintainer to GPUDirect Team. * Add Davide Rossetti and Pak Makthub as Uploaders. diff --git a/src/Makefile b/src/Makefile index 8a861d39..ba49db91 100644 --- a/src/Makefile +++ b/src/Makefile @@ -57,7 +57,7 @@ lib: $(LIB) $(LIBOBJS): CFLAGS+=-fPIC $(LIB): $(LIBOBJS) $(CC) -shared -Wl,-soname,$(LIB_SONAME) -o $@ $^ - ldconfig -n $(PWD) + # ldconfig -n $(PWD) ln -sf $(LIB_DYNAMIC) $(LIB_SONAME) ln -sf $(LIB_SONAME) $(LIB_BASENAME)