dncurrency/util/makesrc
2022-06-21 13:39:53 -03:00

69 lines
2.4 KiB
Bash
Executable file

#!/bin/bash
if [ -e "${2}" ]; then
echo "makesrc <tag> <repo>" >&2
echo " tag valid <tag> for <repo>" >&2
echo " repo repository to build" >&2
exit 1
fi
TAG="${1}"
repository="${2:-nanocurrency/nano-node}"
VERSION=$(echo "${TAG}" | sed 's/V//' | sed 's/-/_/g')
TAG_DATE=""
scriptDir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
function make_source() {
git clone --recursive --single-branch --branch "${TAG}" "https://github.com/${repository}" "nano-${VERSION}"
cd "nano-${VERSION}"
git fetch --tags
COUNT=$(git tag -l "${TAG}" | wc -l)
if [ "$COUNT" -eq 0 ]; then
echo "tag ${TAG} not found"
exit 1
else
git checkout "${TAG}"
fi
# XXX:TODO: Update spec file with version information
source_information
rm -fr .git* .clang-format* .travis.yml appveyor.yml asan_blacklist ci docker util
find . -type f ! -print 2>/dev/null | egrep -v '^\./(MD5SUMS|SHA256SUMS)$' | sort -u | sed s/'^\.\/'/''/ | sed 's/ /\\ /g' | xargs openssl md5 | sed 's@MD5(\(.*\))= \([0-9a-f]*\)@\2 \1@' >MD5SUMS 2>/dev/null
find . -type f ! -print 2>/dev/null | egrep -v '^\./(SHA256SUMS)$' | sort -u | sed s/'^\.\/'/''/ | sed 's/ /\\ /g' | xargs openssl sha1 -sha256 | sed 's@SHA256(\(.*\))= \([0-9a-f]*\)@\2 \1@' >SHA256SUMS 2>/dev/null
tarball_creation
}
function source_information() {
DATE=$(git log --tags --simplify-by-decoration --pretty="format:%ai %d" | head -1 | cut -d " " -f1-3)
COMMIT=$(git log | head -1 | cut -d " " -f 2)
TAG_DATE=$(TZ=UTC date -d"${DATE}" +%s)
export TAG_DATE
}
function cleanup_source() {
mv "nano-${VERSION}.tar.gz" ~/.
echo "ARCHIVE MOVDED TO HOME..."
rm -fr "nano-${VERSION}"/
}
function tarball_creation() {
cd ..
ARCHIVE_FILE_NAME="nano-${VERSION}.tar.gz"
echo "CREATING ${ARCHIVE_FILE_NAME}..."
# Determine if we can create a stable archive
tarArgs=()
if tar -Pcf - /dev/null | tar --sort=name -Ptvf - >/dev/null 2>/dev/null; then
tarArgs=("${tarArgs[@]}" --sort=name)
fi
if tar -Pcf - /dev/null | tar --owner=root:0 --group=root:0 -Ptvf - >/dev/null 2>/dev/null; then
tarArgs=("${tarArgs[@]}" --owner=root:0 --group=root:0)
fi
if [ -n "${TAG_DATE}" ]; then
if tar -Pcf - /dev/null | TZ=UTC tar --mtime="${TAG_DATE}" -Ptvf - >/dev/null 2>/dev/null; then
tarArgs=("${tarArgs[@]}" --mtime="@${TAG_DATE}")
fi
fi
TZ=UTC LANG=C LC_ALL=C tar "${tarArgs[@]}" -cvf - "nano-${VERSION}" | TZ=UTC gzip --no-name -9c >"${ARCHIVE_FILE_NAME}" || exit 1
}
set -x
make_source
cleanup_source