diff options
author | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-05-22 17:22:12 -0400 |
---|---|---|
committer | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-05-22 17:22:12 -0400 |
commit | 11279e5f6a29d1b1d8061ab69deab0f4a977b891 (patch) | |
tree | ce2ec450e7429724d9fe651d0a639f684e5df7c9 | |
parent | 6f67fcda30b1589f1716fb64191c752864e9fab7 (diff) |
Add a script to generate source tarballs for GPL compliance
This may need to be moved out of here later /me shrugs
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
-rwxr-xr-x | misc-scripts/make-sourceball | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/misc-scripts/make-sourceball b/misc-scripts/make-sourceball new file mode 100755 index 0000000..c4eb459 --- /dev/null +++ b/misc-scripts/make-sourceball @@ -0,0 +1,107 @@ +#!/bin/bash + +if [ $# -ne 3 ]; then + echo "usage: $(basename $0) <packagename> <repo> <arch>" + exit 1 +fi + +if [ -f "/etc/makepkg.conf" ]; then + #Get some config info + . /etc/makepkg.conf +else + echo "/etc/makepkg.conf does not exist!" + exit 1 +fi +packagename="$1" +reponame="$2" +arch="$3" + +##### Arch specific stuff. TODO make this configurable ##### +srcpath="/home/aaron/public_html/sources/" +svnpath="file:///home/svn-packages/$packagename/repos/$reponame-$arch" +############################################################ + +WORKDIR="/tmp/make-sourceball.$svnrepo.$UID" + +cleanup() { + # unlock + rm -rf "$WORKDIR" + [ "$1" ] && exit $1 +} + +ctrl_c() { + echo "Interrupted" >&2 + cleanup 0 +} + +die() { + echo "$*" >&2 + cleanup 1 +} + +##### Copied from makepkg ##### + +strip_url() { + echo "$1" | sed 's|^.*://.*/||g' +} + +create_srcpackage() { + echo "Creating source package..." + local comp_files="$BUILDSCRIPT" + echo " Adding: $BUILDSCRIPT" + . $BUILDSCRIPT + + if [ "$install" != "" ]; then + if [ -f $install ]; then + echo " Adding: install script '$install'" + comp_files="$comp_files $install" + else + die "Install script '$install' not found." + fi + fi + + if [ -f ChangeLog ]; then + echo " Adding: ChangeLog" + comp_files="$comp_files ChangeLog" + fi + + local i + for i in ${source[@]}; do + i="$(strip_url "$i")" + if [ -f $i ]; then + echo " Adding: $i" + comp_files="$comp_files $i" + fi + done + + local pkg_file="${pkgname}-${pkgver}-${pkgrel}${SRCEXT}" + + # tar it up + echo "Compressing source package" + if ! /usr/bin/bsdtar -czf "$pkg_file" $comp_files; then + die "Failed to create source package file." + fi + + echo "Source package complete: $pkg_file" + if [ ! -d "$srcpath" ]; then + mkdir -p "$srcpath" + fi + cp $pkg_file "$srcpath" +} + +trap ctrl_c 2 +trap cleanup 0 + +/bin/mkdir -p "$WORKDIR" +cd "$WORKDIR" + +echo "Creating Source tarball for $packagename ($reponame-$arch)" + +if /usr/bin/svn checkout -N $svnpath; then + cd "$reponame-$arch" + echo "Cheating with makepkg to download sources" + /usr/bin/makepkg -g || die "Error downloading files" + create_srcpackage +else + die "Package '$packagename' does not exist in repo $reponame-$arch" +fi |