summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-01-03 13:41:33 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-01-03 13:41:33 +0000
commit1fb46b92aae5bdf0355b420cdd7eb930c6c7e116 (patch)
tree0942c33d1d683c5a230fa7a570f4bfad4733ce58
parent1a67bb56a301818d0acc544fb7d1b4ed677e434e (diff)
downloadabuild-1fb46b92aae5bdf0355b420cdd7eb930c6c7e116.tar.bz2
abuild-1fb46b92aae5bdf0355b420cdd7eb930c6c7e116.tar.xz
newapkbuild: rework
Download the sourcepackage and analyze. If needed, have build() run ./configure. We could in future try figure out license automatically too.
-rwxr-xr-xnewapkbuild.in118
1 files changed, 103 insertions, 15 deletions
diff --git a/newapkbuild.in b/newapkbuild.in
index 4b8d43a..ee392e6 100755
--- a/newapkbuild.in
+++ b/newapkbuild.in
@@ -15,7 +15,7 @@ datadir=@datadir@
prog=${0##*/}
# source $PACKAGER
-for i in /etc/abuild.conf $HOME/.abuild/abuild.conf; do
+for i in $sysconfdir/abuild.conf $HOME/.abuild/abuild.conf; do
if [ -f "$i" ]; then
. $i
fi
@@ -51,45 +51,133 @@ newaport() {
fi
mkdir -p "$pn"
cd "$pn"
- sed -e '1,/^\#*$/d' \
- -e "s/^\(# Contributor: \).*/\1$PACKAGER/" \
- -e "s/^\(# Maintainer: \).*/\1$PACKAGER/" \
- -e "s/^pkgname=.*/pkgname=$pn/" \
- -e "s/^pkgver=.*/pkgver=$pv/" \
- "$datadir"/sample.APKBUILD > APKBUILD || return 1
+
+ # replace pkgver in $source
if [ -n "$source" ]; then
source=$(echo "$source" | sed "s/$pv/\$pkgver/g")
- sed -i -e "/^source=/s|=.*|=\"$source\"|" APKBUILD || return 1
fi
- #-e '1,/^\#$/d' \
+
+ # copy init.d scripts if requested
if [ -n "$cpinitd" ]; then
cp "$datadir"/sample.initd $pn.initd
cp "$datadir"/sample.confd $pn.confd
cp "$datadir"/sample.pre-install $pn.pre-install
cp "$datadir"/sample.post-install $pn.post-install
- sed -i -e "s/^install=.*/install=\"\$pkgname.pre-install \$pkgname.post-install\"/" \
- -e "s/^source=\"\(.*\)\"/source=\"\1\n\t$pn.initd\n\t$pn.confd\n\t\$install\n\t\"/" \
- APKBUILD
-
+ install="\$pkgname.pre-install \$pkgname.post-install"
+ source="$source
+ $pn.initd
+ $pn.confd
+ "
+ fi
+
+ # generate header with standard variables
+ cat >APKBUILD<<__EOF__
+# Contributor:${PACKAGER:+" "}${PACKAGER}
+# Maintainer:${MAINTAINER:+" "}${MAINTAINER}
+pkgname=$pn
+pkgver=$pv
+pkgrel=0
+pkgdesc="$pkgdesc"
+url="$url"
+arch="all"
+license="$license"
+depends=
+depends_dev=
+makedepends="\$depends_dev"
+install="$install"
+subpackages="\$pkgname-dev \$pkgname-doc"
+source="$source"
+
+__EOF__
+
+ abuild -f fetch unpack
+ # figure out the _builddir
+ for i in src/*; do
+ if [ -d "$i" ]; then
+ sdir=$i
+ _builddir=$(echo ${i#*/} | sed "s/$pv/\$pkgver/g")
+ _builddir="\"\$srcdir\"/$_builddir"
+ fi
+ done
+ echo "_builddir=$_builddir" >> APKBUILD
+
+ # create the prepare() template
+ cat >>APKBUILD<<__EOF__
+prepare() {
+ local i
+ cd "\$_builddir"
+ for i in \$source; do
+ case \$i in
+ *.patch) msg \$i; patch -p1 -i "\$srcdir"/\$i || return 1;;
+ esac
+ done
+}
+
+__EOF__
+
+ # create build()
+ cat >>APKBUILD<<__EOF__
+build() {
+ cd "\$_builddir"
+__EOF__
+ if [ -x "$sdir"/configure ]; then
+ cat >>APKBUILD<<__EOF__
+ ./configure --prefix=/usr \\
+ --sysconfdir=/etc \\
+ --mandir=/usr/share/man \\
+ --infodir=/usr/share/info \\
+ --localstatedir=/var \\
+ || return 1
+__EOF__
fi
+ cat >>APKBUILD<<__EOF__
+ make || return 1
+}
+
+__EOF__
+
+ # create package() function
+ cat >>APKBUILD<<__EOF__
+package() {
+ make DESTDIR="\$pkgdir" install || return 1
+__EOF__
+ if [ -n "$cpinitd" ]; then
+ cat >>APKBUILD<<__EOF__
+
+ install -m755 -D "\$srcdir"/\$pkgname.initd \\
+ "\$pkgdir"/etc/init.d/\$pkgname || return 1
+ install -m644 -D "\$srcdir"/\$pkgname.confd \\
+ "\$pkgdir"/etc/conf.d/\$pkgname || return 1
+__EOF__
+ fi
+ cat >>APKBUILD<<__EOF__
+}
+
+__EOF__
}
usage() {
echo "$prog $version"
- echo "usage: $prog [-cfh] PKGNAME[-PKGVER]"
+ echo "usage: $prog [-cfh] [-d DESC] [-l LICENSE] [-u URL] PKGNAME[-PKGVER]"
echo "Options:"
echo " -c Copy a sample init.d, conf.d and install script to new directory"
+ echo " -d Set package description (pkgdesc) to DESC"
echo " -f Force even if directory already exist"
echo " -h Show this help"
+ echo " -l Set package license to LICENSE"
+ echo " -u Set package URL"
echo ""
exit 0
}
-while getopts "cfh" opt; do
+while getopts "cd:fhl:u:" opt; do
case $opt in
'c') cpinitd=1;;
+ 'd') pkgdesc="$OPTARG";;
'f') force=1;;
'h') usage;;
+ 'l') license="$OPTARG";;
+ 'u') url="$OPTARG";;
esac
done
shift $(( $OPTIND - 1 ))