initial commit
This commit is contained in:
commit
fdc478bde8
30
Makefile
Normal file
30
Makefile
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
PACKAGE=abuild
|
||||||
|
VERSION=0.3
|
||||||
|
DISTFILES=Makefile abuild abuild.conf
|
||||||
|
|
||||||
|
prefix ?= /usr
|
||||||
|
sysconfdir ?= /etc
|
||||||
|
|
||||||
|
P=$(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "$(P) makefile"
|
||||||
|
@echo "usage: make install [ DESTDIR=<path> ]"
|
||||||
|
@echo " make dist"
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(DESTDIR)/$(prefix)/bin $(DESTDIR)/$(sysconfdir)
|
||||||
|
cp abuild $(DESTDIR)/$(prefix)/bin/
|
||||||
|
cp abuild.conf $(DESTDIR)/$(sysconfdir)/
|
||||||
|
|
||||||
|
dist: $(P).tar.gz
|
||||||
|
|
||||||
|
$(P).tar.gz: $(DISTFILES)
|
||||||
|
rm -rf $(P)
|
||||||
|
mkdir -p $(P)
|
||||||
|
cp $(DISTFILES) $(P)/
|
||||||
|
tar -czf $@ $(P)
|
||||||
|
rm -rf $(P)
|
||||||
|
|
||||||
|
.PHONY: install dist
|
312
abuild
Executable file
312
abuild
Executable file
@ -0,0 +1,312 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# script to build apk packages (light version og makepkg)
|
||||||
|
# Copyright (c) 2008 Natanael Copa <natanael.copa@gmail.com>
|
||||||
|
#
|
||||||
|
# Distributed under GPL-2
|
||||||
|
#
|
||||||
|
# Depends on: busybox utilities, fakeroot,
|
||||||
|
#
|
||||||
|
|
||||||
|
myver=0.2
|
||||||
|
|
||||||
|
# read config
|
||||||
|
MAKEAPK_CONF=${MAKEAPK_CONF:-/etc/abuild.conf}
|
||||||
|
[ -f "$MAKEAPK_CONF" ] && . "$MAKEAPK_CONF"
|
||||||
|
|
||||||
|
startdir="$PWD"
|
||||||
|
srcdir=${srcdir:-"$startdir/src"}
|
||||||
|
pkgdir=${pkgdir:-"$startdir/pkg"}
|
||||||
|
pkgrel=0
|
||||||
|
|
||||||
|
# defaults
|
||||||
|
SRCDEST=${SRCDEST:-$startdir}
|
||||||
|
PKGDEST=${PKGDEST:-$startdir}
|
||||||
|
|
||||||
|
default_cmds="checkdeps fetch unpack rootpkg"
|
||||||
|
all_cmds="checksum fetch unpack rootpkg build package cleancache clean srcpkg"
|
||||||
|
|
||||||
|
# functions
|
||||||
|
vecho() {
|
||||||
|
local sub=
|
||||||
|
[ -n "$INSUB" ] && sub="(sub)"
|
||||||
|
[ -z "$quiet" ] && echo ">>> $pkgname:" "$@" $sub >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
warning() {
|
||||||
|
echo ">>> Warning:" "$@" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
quiet=
|
||||||
|
vecho "$@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if we have needed packages to build this thing
|
||||||
|
checkdeps() {
|
||||||
|
local i
|
||||||
|
local missing=
|
||||||
|
for i in $makedepends; do
|
||||||
|
apk_info -e $i || missing="$missing $i"
|
||||||
|
done
|
||||||
|
[ -z "$missing" ] && return 0
|
||||||
|
warning "Missing makedepends: $missing"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
checkmd5() {
|
||||||
|
( cd "$SRCDEST" && echo "$md5" | awk '$2 == "'$1'" { print $0 } ' \
|
||||||
|
| md5sum -c )
|
||||||
|
}
|
||||||
|
|
||||||
|
uri_fetch() {
|
||||||
|
local uri="$1"
|
||||||
|
local d="${s##*/}" # $(basename $s)
|
||||||
|
local q
|
||||||
|
[ -n "$quiet" ] && q="-q"
|
||||||
|
mkdir -p "$SRCDEST"
|
||||||
|
if ! [ -f "$SRCDEST/$d" ] || ! checkmd5 "$d" 2>/dev/null; then
|
||||||
|
rm -f "$SRCDEST/$d"
|
||||||
|
wget $q -c -P "$SRCDEST" "$uri" && checkmd5 "$d"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
fetch() {
|
||||||
|
local s
|
||||||
|
mkdir -p "$srcdir"
|
||||||
|
for s in $source; do
|
||||||
|
case "$s" in
|
||||||
|
http://*|ftp://*)
|
||||||
|
uri_fetch "$s" || return 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
[ -n "$genchecksum" ] && continue
|
||||||
|
checkmd5 "${s##*/}" || return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
ln -sf "$SRCDEST/${s##*/}" "$srcdir"/
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# unpack the sources
|
||||||
|
unpack() {
|
||||||
|
local u
|
||||||
|
[ -z "$md5" ] && die "Use 'abuild checksum >>$APKBUILD' to generate a checksum"
|
||||||
|
mkdir -p "$srcdir"
|
||||||
|
for u in $source; do
|
||||||
|
local s="$SRCDEST/${u##*/}" # $(basename $s)
|
||||||
|
case "$s" in
|
||||||
|
*.tar.gz)
|
||||||
|
tar -C "$srcdir" -zxf "$s" || return 1;;
|
||||||
|
*.tar.bz2)
|
||||||
|
tar -C "$srcdir" -jxf "$s" || return 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# cleanup source and package dir
|
||||||
|
clean() {
|
||||||
|
rm -rf "$srcdir"
|
||||||
|
rm -rf "$pkgdir"
|
||||||
|
local i
|
||||||
|
for i in $subpackages; do
|
||||||
|
INSUB=1 $0 $i clean
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# cleanup fetched sources
|
||||||
|
cleancache() {
|
||||||
|
local s
|
||||||
|
for s in $source; do
|
||||||
|
case "$s" in
|
||||||
|
http:/*|ftp:/*)
|
||||||
|
rm -f "$SRCDIR/$(basename $s)";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanpkg() {
|
||||||
|
local p=$pkgname-$pkgver
|
||||||
|
[ $pkgrel -ne 0 ] && p="$p-r$pkgrel"
|
||||||
|
rm -f "$PKGDEST/$p.apk" "$PKGDEST/$p.src.tar.gz"
|
||||||
|
local i
|
||||||
|
for i in $subpackages; do
|
||||||
|
INSUB=1 $0 $i cleanpkg
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
runpart() {
|
||||||
|
local part=$1
|
||||||
|
vecho "$part"
|
||||||
|
$part || die "$part failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
# override those in your build script
|
||||||
|
build() {
|
||||||
|
die "No build() function found in $APKBUILD"
|
||||||
|
}
|
||||||
|
|
||||||
|
subpkg() {
|
||||||
|
[ -z "$subpackages" ] && return 0
|
||||||
|
local i
|
||||||
|
cd "$startdir"
|
||||||
|
for i in $subpackages; do
|
||||||
|
INSUB=1 $0 $i package || return 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
package_apk() {
|
||||||
|
local p="$pkgname-$pkgver"
|
||||||
|
[ "$pkgrel" -ne 0 ] && p="$p-r$pkgrel"
|
||||||
|
local pkg="$p.apk"
|
||||||
|
local db="$pkgdir/var/db/apk/$p"
|
||||||
|
mkdir -p "$db"
|
||||||
|
echo "$arch" > "$db/ARCH"
|
||||||
|
echo "$pkgdesc" > "$db/DESC"
|
||||||
|
echo "$license" > "$db/LICENSE"
|
||||||
|
echo "$depends" > "$db/DEPEND"
|
||||||
|
echo "$url" > "$db/WWW"
|
||||||
|
local i
|
||||||
|
for i in pre-install post-install pre-deinstall post-deinstall; do
|
||||||
|
[ -f ../$i ] && cp ../$i "$db"/
|
||||||
|
done
|
||||||
|
( cd "$pkgdir" && tar -zcf "$PKGDEST/$pkg" * )
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
package_apk
|
||||||
|
}
|
||||||
|
|
||||||
|
# predefined subpackage doc
|
||||||
|
doc() {
|
||||||
|
local origname="$pkgname"
|
||||||
|
local origpkgdir="$pkgdir"
|
||||||
|
pkgname="$pkgname-doc"
|
||||||
|
pkgdir="$pkgdir-doc"
|
||||||
|
depends=""
|
||||||
|
local i
|
||||||
|
for i in doc man info html sgml; do
|
||||||
|
if [ -d "$origpkgdir/usr/share/$i" ]; then
|
||||||
|
mkdir -p "$pkgdir/usr/share"
|
||||||
|
mv "$origpkgdir/usr/share/$i" "$pkgdir/usr/share"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -d "$pkgdir/usr/share/man" ] && depends="man"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# predefined subpackage mod
|
||||||
|
mod() {
|
||||||
|
local origname="$pkgname"
|
||||||
|
local origpkgdir="$pkgdir"
|
||||||
|
pkgname="$pkgname-mod"
|
||||||
|
pkgdir="$pkgdir-mod"
|
||||||
|
depends="$kernel"
|
||||||
|
for i in firmware modules; do
|
||||||
|
if [ -d $origpkgdir/lib/$i ]; then
|
||||||
|
mkdir -p $pkgdir/lib
|
||||||
|
mv $origpkgdir/lib/$i $pkgdir/lib
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# predefined subpackage dev
|
||||||
|
dev() {
|
||||||
|
local origname="$pkgname"
|
||||||
|
local origpkgdir="$pkgdir"
|
||||||
|
pkgname="$pkgname-dev"
|
||||||
|
pkgdir="$pkgdir-dev"
|
||||||
|
depends="$origname"
|
||||||
|
for i in $(cd "$origpkgdir" && find usr/lib -name '*.a' -o \
|
||||||
|
-name '*.la' -o -name '*.o' 2>/dev/null) \
|
||||||
|
usr/include usr/lib/pkgconfig usr/share/aclocal; do
|
||||||
|
if [ -e "$origpkgdir/$i" ] || [ -L "$origpkgdir/$i" ]; then
|
||||||
|
d="$pkgdir/${i%/*}" # dirname $i
|
||||||
|
mkdir -p "$d"
|
||||||
|
mv "$origpkgdir/$i" "$d"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# build and package in fakeroot
|
||||||
|
rootpkg() {
|
||||||
|
fakeroot $0 build subpkg package
|
||||||
|
}
|
||||||
|
|
||||||
|
srcpkg() {
|
||||||
|
local p="$pkgname-$pkgver"
|
||||||
|
[ "$pkgrel" -ne 0 ] && p="$p-r$pkgrel"
|
||||||
|
local prefix="${PWD##*/}"
|
||||||
|
local i files="$prefix/APKBUILD"
|
||||||
|
for i in $source; do
|
||||||
|
files="$files $prefix/${i##*/}"
|
||||||
|
done
|
||||||
|
mkdir -p "$PKGDEST"
|
||||||
|
(cd .. && tar -zcf $PKGDEST/$p.src.tar.gz $files)
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "$(basename $0) $myver"
|
||||||
|
echo "usage: $0 [options] [cmd] ..."
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h Show this help"
|
||||||
|
echo " -f Force specified cmd, even if they are already done"
|
||||||
|
echo " -q Quiet"
|
||||||
|
echo ""
|
||||||
|
echo "Commands:"
|
||||||
|
echo " checksum Generate checksum to be included in $APKBUILD"
|
||||||
|
echo " fetch Fetch sources to \$SRCDEST and verify checksums"
|
||||||
|
echo " unpack Unpack sources to \$srcdir"
|
||||||
|
echo " build Compile and install package into \$pkgdir"
|
||||||
|
echo " package Create package in \$PKGDEST"
|
||||||
|
echo " rootpkg Run '$0 build package' as fakeroot"
|
||||||
|
echo " clean Remove temp build and install dirs"
|
||||||
|
echo " cleanpkg Remove already built binary and source package"
|
||||||
|
echo " cleancache Remove downloaded files from \$SRCDEST"
|
||||||
|
echo " srcpkg Make a source package"
|
||||||
|
echo ""
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
checksum() {
|
||||||
|
local s files
|
||||||
|
for s in $source; do
|
||||||
|
files="$files ${s##*/}"
|
||||||
|
done
|
||||||
|
md5="$(cd "$SRCDEST" && md5sum $files)" || die "md5sum failed"
|
||||||
|
echo "md5=\"$md5\""
|
||||||
|
}
|
||||||
|
|
||||||
|
APKBUILD="${APKBUILD:-./APKBUILD}"
|
||||||
|
|
||||||
|
while getopts "hfq" opt; do
|
||||||
|
case $opt in
|
||||||
|
'h') usage;;
|
||||||
|
'f') force=1;;
|
||||||
|
'q') quiet=1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(( $OPTIND - 1 ))
|
||||||
|
|
||||||
|
# source the buildfile
|
||||||
|
[ -f "$APKBUILD" ] || die "Could not find $APKBUILD (PWD=$PWD)"
|
||||||
|
. "$APKBUILD"
|
||||||
|
|
||||||
|
# If we are handling a sub package then reset subpackages
|
||||||
|
[ -n "$INSUB" ] && subpackages=
|
||||||
|
|
||||||
|
trap 'die "Aborted by user"' INT
|
||||||
|
|
||||||
|
[ -n "$forceunpack" ] && rm -f "$srcdir"/.unpack
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
set $default_cmds
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
runpart $1
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
6
abuild.conf
Normal file
6
abuild.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export CFLAGS="-march=i486 -Os -fPIC -fstack-protector -fomit-framepointer"
|
||||||
|
export CXXFLAGS="$CFLAGS"
|
||||||
|
|
||||||
|
export PATH=:/usr/i386-gentoo-linux-uclibc/binutils-bin/2.18:$PATH
|
||||||
|
|
||||||
|
MAKEFLAGS=-j2
|
Loading…
x
Reference in New Issue
Block a user