#!/bin/sh # Script to build release-archives with. Note that this requires a checkout # from git and you should first run 'autoreconf -fi' and './configure'. # version="$1" if [ -z "$version" ]; then echo "Specify a version number!" exit fi if [ "only" = "$2" ]; then echo "Setup version number only!" only=1 fi libversion="$version" major="$(echo "$libversion" | cut -d. -f1 | sed -e "s/[^0-9]//g")" minor="$(echo "$libversion" | cut -d. -f2 | sed -e "s/[^0-9]//g")" patch="$(echo "$libversion" | cut -d. -f3 | cut -d- -f1 | sed -e "s/[^0-9]//g")" numeric="$(printf "%02x%02x%02x\n" "$major" "$minor" "$patch")" HEADER=include/libssh2.h if test -z "$only"; then ext=".dist" # when not setting up version numbers locally for a in $HEADER; do cp "$a" "$a$ext" done HEADER="$HEADER$ext" fi # requires a date command that knows -u for UTC time zone datestamp="$(LC_TIME=C date -u)" # Replace in-place version number in header file: sed -i.bak \ -e "s/^#define LIBSSH2_VERSION .*/#define LIBSSH2_VERSION \"$libversion\"/g" \ -e "s/^#define LIBSSH2_VERSION_NUM .*/#define LIBSSH2_VERSION_NUM 0x$numeric/g" \ -e "s/^#define LIBSSH2_VERSION_MAJOR .*/#define LIBSSH2_VERSION_MAJOR $major/g" \ -e "s/^#define LIBSSH2_VERSION_MINOR .*/#define LIBSSH2_VERSION_MINOR $minor/g" \ -e "s/^#define LIBSSH2_VERSION_PATCH .*/#define LIBSSH2_VERSION_PATCH $patch/g" \ -e "s/^#define LIBSSH2_TIMESTAMP .*/#define LIBSSH2_TIMESTAMP \"$datestamp\"/g" \ "$HEADER" rm -f "$HEADER.bak" echo "libssh2 version $libversion" echo "libssh2 numerical $numeric" echo "datestamp $datestamp" if test -n "$only"; then # done! exit fi findprog() { file="$1" for part in $(echo "$PATH" | tr ':' ' '); do path="$part/$file" if [ -x "$path" ]; then # there it is! return 1 fi done # no such executable return 0 } ############################################################################ # # automake is needed to run to make a non-GNU Makefile.in if Makefile.am has # been modified. # if { findprog automake >/dev/null 2>/dev/null; } then echo "- Could not find or run automake, I hope you know what you are doing!" else echo "Runs automake --include-deps" automake --include-deps Makefile >/dev/null fi ####################################################################### # # Generate the changelog # echo "generate NEWS" git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./git2news.pl > NEWS.dist ############################################################################ # # Now run make dist to generate a tar.gz archive # echo "make dist" targz="libssh2-$version.tar.gz" make -s dist "VERSION=$version" res=$? if test "$res" != 0; then echo "make dist failed" exit 2 fi ############################################################################ # # Now make a bz2 archive from the tar.gz original # bzip2="libssh2-$version.tar.bz2" echo "Generating $bzip2" gzip -dc "$targz" | bzip2 --best > "$bzip2" ############################################################################ # # Now make an xz archive from the tar.gz original # xz="libssh2-$version.tar.xz" echo "Generating $xz" gzip -dc "$targz" | xz -6e - > "$xz" ############################################################################ # # Now make a zip archive from the tar.gz original # makezip() { rm -rf "$tempdir" mkdir "$tempdir" cd "$tempdir" || exit 1 gzip -dc "../$targz" | tar -xf - find . | zip "$zip" -@ >/dev/null mv "$zip" ../ cd .. || exit 1 rm -rf "$tempdir" } zip="libssh2-$version.zip" echo "Generating $zip" tempdir=".builddir" makezip echo "------------------" echo "maketgz report:" echo "" ls -l "$targz" "$bzip2" "$zip" "$xz"