summaryrefslogtreecommitdiffstats
path: root/scripts/make_archive.sh
diff options
context:
space:
mode:
authorBjoern Buerger <b.buerger@pengutronix.de>2006-02-01 16:44:24 +0000
committerBjoern Buerger <b.buerger@pengutronix.de>2006-02-01 16:44:24 +0000
commit4aef9f0dfbc469f3a94b67a348984e8802df520a (patch)
tree2d5f7ec5632dfac395d1b51283305ce1cdc310b2 /scripts/make_archive.sh
parentd34f217f785bf4b4870d42da12b48032be399489 (diff)
downloadptxdist-4aef9f0dfbc469f3a94b67a348984e8802df520a.tar.gz
ptxdist-4aef9f0dfbc469f3a94b67a348984e8802df520a.tar.xz
new make archive script and some test stuff
git-svn-id: https://svn.pengutronix.de/svn/ptxdist/trunks/ptxdist-0.9-trunk@4483 33e552b5-05e3-0310-8538-816dae2090ed
Diffstat (limited to 'scripts/make_archive.sh')
-rwxr-xr-xscripts/make_archive.sh175
1 files changed, 175 insertions, 0 deletions
diff --git a/scripts/make_archive.sh b/scripts/make_archive.sh
new file mode 100755
index 000000000..44c3da13d
--- /dev/null
+++ b/scripts/make_archive.sh
@@ -0,0 +1,175 @@
+#!/bin/bash
+# b.buerger@pengutronix.de, Wed Feb 1 07:44:35 UTC 2006
+PROGRAM_DESCRIPTION="Create Release Archives / Tarballs"
+
+# Source generic ptxdist shell functions:
+[ -e "$(dirname $0)/libptxdist.sh" ] && . $(dirname $0)/libptxdist.sh
+#
+# DEFAULTS:
+#
+TOPDIR=$(pwd)
+BASE="$(cd $TOPDIR ; cd .. ; pwd)"
+ARCHPATH="$TOPDIR/.."
+PROJECTSPATH=""
+ACTION=create
+RELEASE="undefined"
+TAR="tar"
+
+#
+# Parser (fuzzy testimplementation, proof of concept)
+#
+# <SYMBOL> <LONGOPTION> <HELPTEXT>
+source $(cat << EOF | ptxd_generic_option_parser
+ACTION action create | check -> Action (Default: create)
+TOPDIR topdir <dir> -> PTXDIST TOPDIR (Default: $TOPDIR)
+RELEASE release <string> -> PTXDIST Release Name (Default: from Makefile)
+ARCHPATH archpath <path> -> Where to put the Archives (Default: $ARCHPATH)
+PROJECTSPATH projects <path> -> Path to local_projects (Default: $PROJECTS)
+EOF
+)
+invoke_parser $@
+
+#
+# Variable Defonitions
+#
+BASE=$TOPDIR/../
+LOCKFILE="$BASE/.make_archive.lock"
+
+#
+# sanity checks
+#
+
+[ -e "$LOCKFILE" ] && ptxd_exit "Topdir is locked ($(cat $LOCKFILE))" 1
+[ -d "$TOPDIR" ] || ptxd_exit "invalid --topdir ($TOPDIR)" 1
+[ -d "$BASE" ] || ptxd_exit "invalid base directory ($BASE)" 1
+[ -d "$ARCHPATH" ] || ptxd_exit "invalid --arch-path ($ARCHPATH)" 1
+[ -n "$PROJECTSPATH" ] && PROJECTSPATH=$(cd $PROJECTSPATH; pwd)
+
+ARCHPATH="$(cd $ARCHPATH ; pwd)"
+TOPDIR="$(cd $TOPDIR ; pwd)"
+BASE="$(cd $TOPDIR ; cd .. ; pwd)"
+
+if [ "$RELEASE" == "undefined" ] ; then
+[ -e "$TOPDIR/Makefile" ] || ptxd_exit "could not determine release tag" 1
+RELEASE=$(export $(egrep \
+ "^PROJECT[[:blank:]]|^VERSION[[:blank:]]|^PATCHLEVEL[[:blank:]]|^SUBLEVEL[[:blank:]]|^EXTRAVERSION[[:blank:]]" \
+ $TOPDIR/Makefile | sed s/'[\t ]*:=[\t ]*'/'='/g); \
+ echo "$PROJECT-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION" \
+ )
+fi
+[ -z "$RELEASE" ] && ptxd_exit "RELEASE Version is empty" 1
+
+ARCHIVE_DIST=$ARCHPATH/$RELEASE.tgz
+ARCHIVE_PATCHES=$ARCHPATH/$RELEASE-patches.tgz
+
+#
+# functions
+#
+
+#
+info(){
+echo "RELEASE Version ............. $RELEASE"
+echo "TOPDIR ..................... $TOPDIR"
+echo "BASE ........................ $BASE"
+echo "ARCHPATH .................... $ARCHPATH"
+echo "PROJECTSPATH ................ $PROJECTSPATH"
+echo "Please be patient ..."
+}
+
+goodbye(){
+echo
+echo "Your Package Archives:"
+ls -la $ARCHPATH/$RELEASE*.tgz
+echo
+echo "Have a nice day :-)"
+}
+
+before_package(){
+ptxd_debug "-- Remove old Archives --"
+[ -e "$ARCHIVE_DIST" ] && rm -vf $ARCHIVE_DIST
+[ -e "$ARCHIVE_PATCHES" ] && rm -vf $ARCHIVE_PATCHES
+ptxd_debug "-- Prepare Packaging --"
+date > $LOCKFILE
+TMPDIR=`mktemp -d $BASE/ptxdist_make_archive.XXXXXX` || exit 1
+cd $BASE || ptxd_exit "Could not enter $BASE" 1
+
+ptxd_debug "copy content to release directory $TMPDIR"
+ptxd_debug "$(mkdir $TMPDIR/$RELEASE 2>&1 || ptxd_exit "Could not create temporary RELEASE directory" 1)"
+$TAR -C $TOPDIR -cf - --exclude .svn --exclude local_projects . | $TAR -C $TMPDIR/$RELEASE/ -xf -
+if [ -d "$PROJECTSPATH" ] ; then
+ ptxd_debug "$(mkdir -v $TMPDIR/$RELEASE/local_projects 2>&1 || ptxd_exit "Could not create temporary local_projects dir" 1)"
+ $TAR -C $PROJECTSPATH -cf - --exclude .svn . | $TAR -C $TMPDIR/$RELEASE/local_projects/ -xf -
+fi
+}
+
+package(){
+ptxd_debug "-- Create Patch Archive from $TMPDIR/$RELEASE/patches/ --"
+echo "packaging $ARCHIVE_PATCHES"
+tar -C $TMPDIR -zcvf $ARCHIVE_PATCHES \
+ --exclude .svn \
+ $RELEASE/patches/ \
+ 2>&1 > $ARCHPATH/logfile.patches_package
+
+ptxd_debug "-- Create Main Source Archive from $TMPDIR/$RELEASE/ --"
+echo "packaging $ARCHIVE_DIST"
+tar -C $TMPDIR -zcvf $ARCHIVE_DIST \
+ --exclude .svn \
+ --exclude $RELEASE/patches \
+ --exclude $RELEASE/local_projects \
+ $RELEASE/ \
+ 2>&1 > $ARCHPATH/logfile.release_package
+
+ptxd_debug "-- Create Projects Source Archives from $TMPDIR/$RELEASE/local_projects/ --"
+for file in $TMPDIR/$RELEASE/local_projects/*/*.ptxconfig; do
+ if [ -e "$file" ]; then
+ PROJECT_NAME=$(egrep "^PTXCONF_PROJECT=" $file | sed -e s/.*=//g -e s/\"//g )
+ ptxd_debug "PROJECT_NAME is $PROJECT_NAME"
+ PROJECT_VERSION=$(egrep "^PTXCONF_PROJECT_VERSION=" $file | sed -e s/.*=//g -e s/\"//g )
+ ptxd_debug "PROJECT_VERSION is $PROJECT_VERSION"
+ PROJECT_DIR=$(basename $(dirname $file))
+ ptxd_debug "PROJECT_DIR is $PROJECT_DIR"
+ ARCHIVE_PROJECT="$ARCHPATH/$RELEASE-${PROJECT_NAME}${PROJECT_VERSION}.tgz"
+ [ -e "$ARCHIVE_PROJECT" ] && rm -vf $ARCHIVE_PROJECT
+ echo "packaging local project $ARCHIVE_PROJECT"
+ tar -C $TMPDIR -zcvf $ARCHIVE_PROJECT \
+ --exclude .svn \
+ $RELEASE/local_projects/$PROJECT_DIR/ \
+ 2>&1 > $ARCHPATH/logfile.${PROJECT_NAME}${PROJECT_VERSION}_package
+ else
+ echo "skipping local projects - none found"
+ echo "You might consider the --projects=<path of the local_projects directory> switch"
+ [ -d "$TOPDIR/local_projects/" ] && echo "e.g. $0 $@ --projects $TOPDIR/local_projects"
+ fi
+done
+}
+
+after_package(){
+cd $BASE || ptxd_exit "Could not enter $BASE" 1
+ptxd_debug "-- Cleaning up after Packaging --"
+ptxd_debug "$(rm -rvf $TMPDIR)"
+ptxd_debug "$(rm -vf $LOCKFILE)"
+}
+
+info
+
+#
+# argument handling
+#
+case $ACTION in
+ create)
+ before_package
+ package
+ after_package
+ ;;
+ check)
+ echo "Not yet implemented"
+ ;;
+ *)
+ ptxd_exit "Sorry, unknown --action specified: $ACTION" 1
+ ;;
+esac
+
+goodbye
+
+# vim: syntax=sh
+# vim: tabstop=4