summaryrefslogtreecommitdiffstats
path: root/make-dist
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /make-dist
parentInitial commit. (diff)
downloadceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.tar.xz
ceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'make-dist')
-rwxr-xr-xmake-dist210
1 files changed, 210 insertions, 0 deletions
diff --git a/make-dist b/make-dist
new file mode 100755
index 000000000..75528c1b8
--- /dev/null
+++ b/make-dist
@@ -0,0 +1,210 @@
+#!/bin/bash -e
+
+SCRIPTNAME="$(basename "${0}")"
+BASEDIR="$(readlink -f "$(dirname "${0}")")"
+
+if [ ! -d .git ]; then
+ echo "$SCRIPTNAME: Full path to the script: $BASEDIR/$SCRIPTNAME"
+ echo "$SCRIPTNAME: No .git present. Run this from the base dir of the git checkout."
+ exit 1
+fi
+
+# Running the script from a directory containing a colon anywhere in the path
+# will expose us to the dreaded "[BUG] npm run [command] failed if the directory
+# path contains colon" bug https://github.com/npm/cli/issues/633
+# (see https://tracker.ceph.com/issues/39556 for details)
+if [[ "$BASEDIR" == *:* ]] ; then
+ echo "$SCRIPTNAME: Full path to the script: $BASEDIR/$SCRIPTNAME"
+ echo "$SCRIPTNAME: The path to the script contains a colon. Their presence has been known to break the script."
+ exit 1
+fi
+
+version=$1
+[ -z "$version" ] && version=$(git describe --long --match 'v*' | sed 's/^v//')
+if expr index $version '-' > /dev/null; then
+ rpm_version=$(echo $version | cut -d - -f 1-1)
+ rpm_release=$(echo $version | cut -d - -f 2- | sed 's/-/./')
+else
+ rpm_version=$version
+ rpm_release=0
+fi
+
+outfile="ceph-$version"
+echo "version $version"
+
+# update submodules
+echo "updating submodules..."
+force=$(if git submodule usage 2>&1 | grep --quiet 'update.*--force'; then echo --force ; fi)
+if ! git submodule sync || ! git submodule update $force --init --recursive; then
+ echo "Error: could not initialize submodule projects"
+ echo " Network connectivity might be required."
+ exit 1
+fi
+
+download_from() {
+ fname=$1
+ shift
+ sha256=$1
+ shift
+ set +e
+ while true; do
+ url_base=$1
+ shift
+ if [ -z $url_base ]; then
+ echo "Error: failed to download $name."
+ exit
+ fi
+ url=$url_base/$fname
+ wget -c --no-verbose -O $fname $url
+ if [ $? != 0 -o ! -e $fname ]; then
+ echo "Download of $url failed"
+ elif [ $(sha256sum $fname | awk '{print $1}') != $sha256 ]; then
+ echo "Error: failed to download $name: SHA256 mismatch."
+ else
+ break
+ fi
+ done
+ set -e
+}
+
+download_boost() {
+ boost_version=$1
+ shift
+ boost_sha256=$1
+ shift
+ boost_version_underscore=$(echo $boost_version | sed 's/\./_/g')
+ boost_fname=boost_${boost_version_underscore}.tar.bz2
+ download_from $boost_fname $boost_sha256 $*
+ tar xjf $boost_fname -C src \
+ --exclude="$boost_version_underscore/libs/*/doc" \
+ --exclude="$boost_version_underscore/libs/*/example" \
+ --exclude="$boost_version_underscore/libs/*/examples" \
+ --exclude="$boost_version_underscore/libs/*/meta" \
+ --exclude="$boost_version_underscore/libs/*/test" \
+ --exclude="$boost_version_underscore/tools/boostbook" \
+ --exclude="$boost_version_underscore/tools/quickbook" \
+ --exclude="$boost_version_underscore/tools/auto_index" \
+ --exclude='doc' --exclude='more' --exclude='status'
+ mv src/boost_${boost_version_underscore} src/boost
+ tar cf ${outfile}.boost.tar ${outfile}/src/boost
+ rm -rf src/boost
+}
+
+download_liburing() {
+ liburing_version=$1
+ shift
+ liburing_sha256=$1
+ shift
+ liburing_fname=liburing-${liburing_version}.tar.gz
+ download_from $liburing_fname $liburing_sha256 $*
+ tar xzf $liburing_fname -C src \
+ --exclude=debian \
+ --exclude=examples \
+ --exclude=man \
+ --exclude=test
+ # normalize the names, liburing-0.7 if downloaded from git.kernel.dk,
+ # liburing-liburing-0.7 from github.com
+ mv src/liburing-* src/liburing
+ tar cf ${outfile}.liburing.tar ${outfile}/src/liburing
+ rm -rf src/liburing
+}
+
+download_pmdk() {
+ pmdk_version=$1
+ shift
+ pmdk_sha256=$1
+ shift
+ pmdk_fname=pmdk-${pmdk_version}.tar.gz
+ download_from $pmdk_fname $pmdk_sha256 $*
+ tar xzf $pmdk_fname -C src \
+ --exclude="pmdk-${pmdk_version}/doc" \
+ --exclude="pmdk-${pmdk_version}/src/test" \
+ --exclude="pmdk-${pmdk_version}/src/examples" \
+ --exclude="pmdk-${pmdk_version}/src/benchmarks"
+ mv src/pmdk-${pmdk_version} src/pmdk
+ tar cf ${outfile}.pmdk.tar ${outfile}/src/pmdk
+ rm -rf src/pmdk
+}
+
+build_dashboard_frontend() {
+ CURR_DIR=`pwd`
+ TEMP_DIR=`mktemp -d`
+
+ $CURR_DIR/src/tools/setup-virtualenv.sh $TEMP_DIR
+ $TEMP_DIR/bin/pip install nodeenv
+ $TEMP_DIR/bin/nodeenv --verbose -p --node=12.18.2
+ cd src/pybind/mgr/dashboard/frontend
+
+ . $TEMP_DIR/bin/activate
+ NG_CLI_ANALYTICS=false timeout 1h npm ci
+ echo "Building ceph-dashboard frontend with build:localize script";
+ # we need to use "--" because so that "--prod" survives accross all
+ # scripts redirections inside package.json
+ npm run build:localize -- --prod
+ deactivate
+ cd $CURR_DIR
+ rm -rf $TEMP_DIR
+ tar cf dashboard_frontend.tar $outfile/src/pybind/mgr/dashboard/frontend/dist
+}
+
+generate_rook_ceph_client() {
+ $outfile/src/pybind/mgr/rook/generate_rook_ceph_client.sh
+ tar cf rook_ceph_client.tar $outfile/src/pybind/mgr/rook/rook_client/*.py
+}
+
+# clean out old cruft...
+echo "cleanup..."
+rm -f $outfile*
+
+# build new tarball
+echo "building tarball..."
+bin/git-archive-all.sh --prefix ceph-$version/ \
+ --verbose \
+ --ignore corpus \
+ $outfile.tar
+
+# populate files with version strings
+echo "including src/.git_version, ceph.spec"
+
+(git rev-parse HEAD ; echo $version) 2> /dev/null > src/.git_version
+
+for spec in ceph.spec.in; do
+ cat $spec |
+ sed "s/@PROJECT_VERSION@/$rpm_version/g" |
+ sed "s/@RPM_RELEASE@/$rpm_release/g" |
+ sed "s/@TARBALL_BASENAME@/ceph-$version/g" > `echo $spec | sed 's/.in$//'`
+done
+ln -s . $outfile
+tar cvf $outfile.version.tar $outfile/src/.git_version $outfile/ceph.spec
+# NOTE: If you change this version number make sure the package is available
+# at the three URLs referenced below (may involve uploading to download.ceph.com)
+boost_version=1.73.0
+download_boost $boost_version 4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402 \
+ https://boostorg.jfrog.io/artifactory/main/release/$boost_version/source \
+ https://downloads.sourceforge.net/project/boost/boost/$boost_version \
+ https://download.ceph.com/qa
+download_liburing 0.7 8e2842cfe947f3a443af301bdd6d034455536c38a455c7a700d0c1ad165a7543 \
+ https://github.com/axboe/liburing/archive \
+ https://git.kernel.dk/cgit/liburing/snapshot
+pmdk_version=1.10
+download_pmdk $pmdk_version 08dafcf94db5ac13fac9139c92225d9aa5f3724ea74beee4e6ca19a01a2eb20c \
+ https://github.com/pmem/pmdk/releases/download/$pmdk_version
+build_dashboard_frontend
+generate_rook_ceph_client
+for tarball in $outfile.version \
+ $outfile.boost \
+ $outfile.liburing \
+ $outfile.pmdk \
+ dashboard_frontend \
+ rook_ceph_client \
+ $outfile; do
+ tar --concatenate -f $outfile.all.tar $tarball.tar
+ rm $tarball.tar
+done
+mv $outfile.all.tar $outfile.tar
+rm $outfile
+
+echo "compressing..."
+bzip2 -9 $outfile.tar
+
+echo "done."