mirror of
https://gitlab.alpinelinux.org/alpine/abuild.git
synced 2025-02-18 20:47:01 +00:00
abuild: add support for language packs
This commit is contained in:
parent
2182953390
commit
5d9012c09a
59
abuild.in
59
abuild.in
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user