abuild: add support for language packs

This commit is contained in:
Natanael Copa 2011-01-04 10:32:12 +00:00
parent 2182953390
commit 5d9012c09a

View File

@ -322,11 +322,21 @@ cleancache() {
done
}
listpkgnames() {
local i
for i in $pkgname $subpackages; do
echo ${i%:*}
done
for i in $linguas; do
echo $pkgname-lang-$i
done
}
cleanpkg() {
local i
getpkgver || return 1
msg "Cleaning built packages..."
for i in $pkgname $subpackages; do
for i in $(listpkgnames); do
local p="${i%:*}-$pkgver-r$pkgrel"
rm -f "$PKGDEST/$p.apk" "$PKGDEST/$p.src.tar.gz" \
"$abuildrepo"/$p.apk
@ -339,7 +349,7 @@ cleanoldpkg() {
local i j
getpkgver || return 1
msg "Cleaning all packages except $pkgver-r$pkgrel..."
for i in $pkgname $subpackages; do
for i in $(listpkgnames); do
for j in "$PKGDEST"/${i%:*}-[0-9]*.apk; do
[ "$j" != "$PKGDEST/${i%:*}-$pkgver-r$pkgrel.apk" ] \
&& rm -f "$j"
@ -404,9 +414,6 @@ get_split_func() {
}
prepare_subpackages() {
if [ -z "$subpackages" ]; then
return 0
fi
local i
cd "$startdir"
for i in $subpackages; do
@ -418,6 +425,28 @@ prepare_subpackages() {
done
}
lang_subpkg() {
if [ -z "$lang" ]; then
error "lang is not set"
return 1
fi
arch="noarch"
install_if="$pkgname=$pkgver-r$pkgrel lang-$lang"
mkdir -p "$subpkgdir"/usr/share/locale
mv "$pkgdir"/usr/share/locale/$lang* \
"$subpkgdir"/usr/share/locale/ \
|| return 1
}
prepare_language_packs() {
for lang in $linguas; do
lang="$lang" \
subpkgname="$pkgname-lang-$lang" \
subpkgdir="$pkgbasedir"/$subpkgname \
$0 lang_subpkg prepare_package || return 1
done
}
prepare_metafiles() {
getpkgver || return 1
local name=${subpkgname:-$pkgname}
@ -506,6 +535,7 @@ EOF
prepare_tracedeps() {
local dir=${subpkgdir:-$pkgdir}
[ "$arch" = "noarch" ] && return 0
options_has "!tracedeps" && return 0
# lets tell all the .so files this package provides in .provides-so
find -name '*.so' -o -name '*.so.[0-9]*' | sed 's:.*/::' \
@ -600,12 +630,12 @@ trace_apk_deps() {
fi
# special case for libpthread: we need depend on libgcc
if grep -q -w '^libpthread.so.*' "$dir"/.needs-so 2>/dev/null \
if [ -f "$dir"/.needs-so ] && grep -q -w '^libpthread.so.*' "$dir"/.needs-so \
&& ! grep -q -w "^depend = libgcc" "$dir"/.PKGINFO; then
autodeps="$autodeps libgcc"
msg " added libgcc (due to libpthread)"
fi
for i in $(cat "$dir"/.needs-so 2>/dev/null); do
[ -f "$dir"/.needs-so ] && for i in $(cat "$dir"/.needs-so); do
found=
# first check if its provide by same apkbuild
for j in "$dir"/../.control.*/.provides-so; do
@ -624,9 +654,11 @@ trace_apk_deps() {
done
# find all packages that holds the so files
so_files=$(find_so_files "$dir"/.rpaths $missing) || return 1
deppkgs=$($APK info -q -W $so_files) || return 1
if [ -f "$dir"/.rpaths ]; then
so_files=$(find_so_files "$dir"/.rpaths $missing) || return 1
deppkgs=$($APK info -q -W $so_files) || return 1
fi
for found in $self_provided $deppkgs; do
if grep -w "^depend = ${found}$" "$dir"/.PKGINFO >/dev/null ; then
warning "You can remove '$found' from depends"
@ -822,6 +854,7 @@ rootpkg() {
[ -n "$FAKEROOT" ] && msg "Entering fakeroot..."
$FAKEROOT -- "$abuild_path" $color_opt $do_build \
prepare_subpackages \
prepare_language_packs \
prepare_package \
create_apks
}
@ -1072,10 +1105,10 @@ stripbin() {
# simply list target apks
listpkg() {
local i
local name
getpkgver || return 1
for i in $pkgname $subpackages; do
echo "${i%:*}-$pkgver-r$pkgrel.apk"
for name in $(listpkgnames) ; do
echo "$name-$pkgver-r$pkgrel.apk"
done
}