projects/aports·blob v2.23.0_rc2 · refs

193 lines · 4.8 KiB

1# /usr/share/abuild/functions.sh
2
3sysconfdir=@sysconfdir@
4program=${0##*/}
5
6hostspec_to_arch() {
7 case "$1" in
8 arm*-*-*-*eabi) echo "armel" ;;
9 arm*-*-*-*eabihf) echo "armhf" ;;
10 i[0-9]86-*-*-*) echo "x86" ;;
11 x86_64-*-*-*) echo "x86_64" ;;
12 *) echo "unknown" ;;
13 esac
14}
15
16hostspec_to_libc() {
17 case "$1" in
18 *-*-*-uclibc*) echo "uclibc" ;;
19 *-*-*-musl*) echo "musl" ;;
20 *-*-*-gnu*) echo "glibc" ;;
21 *) echo "unknown" ;;
22 esac
23}
24
25readconfig() {
26 local _APORTSDIR _BUILDDIR _PKGDEST _SRCPKGDEST _REPODEST _SRCDEST
27 local _CARCH _CHOST _CTARGET _CPPFLAGS _CFLAGS _CXXFLAGS _LDFLAGS
28 local _JOBS _MAKEFLAGS _PACKAGER _USE_COLORS
29 local gitbase=
30 [ -n "${APORTSDIR+x}" ] && _APORTSDIR=$APORTSDIR
31 [ -n "${BUILDDIR+x}" ] && _BUILDDIR=$BUILDDIR
32 [ -n "${PKGDEST+x}" ] && _PKGDEST=$PKGDEST
33 [ -n "${SRCPKGDEST+x}" ] && _SRCPKGDEST=$SRCPKGDEST
34 [ -n "${REPODEST+x}" ] && _REPODEST=$REPODEST
35 [ -n "${SRCDEST+x}" ] && _SRCDEST=$SRCDEST
36 [ -n "${CARCH+x}" ] && _CARCH=$CARCH
37 [ -n "${CHOST+x}" ] && _CHOST=$CHOST
38 [ -n "${CTARGET+x}" ] && _CTARGET=$CTARGET
39 [ -n "${CPPFLAGS+x}" ] && _CPPFLAGS=$CPPFLAGS
40 [ -n "${CFLAGS+x}" ] && _CFLAGS=$CFLAGS
41 [ -n "${CXXFLAGS+x}" ] && _CXXFLAGS=$CXXFLAGS
42 [ -n "${LDFLAGS+x}" ] && _LDFLAGS=$LDFLAGS
43 [ -n "${JOBS+x}" ] && _JOBS=$JOBS
44 [ -n "${MAKEFLAGS+x}" ] && _MAKEFLAGS=$MAKEFLAGS
45 [ -n "${PACKAGER+x}" ] && _PACKAGER=$PACKAGER
46 [ -n "${USE_COLORS+x}" ] && _USE_COLORS="$USE_COLORS"
47 : ${ABUILD_CONF:=$sysconfdir/abuild.conf}
48 : ${ABUILD_USERDIR:=$HOME/.abuild}
49 : ${ABUILD_USERCONF:=$ABUILD_USERDIR/abuild.conf}
50 [ -f "$ABUILD_CONF" ] && . "$ABUILD_CONF"
51 [ -f "$ABUILD_USERCONF" ] && . "$ABUILD_USERCONF"
52 APORTSDIR=${_APORTSDIR-$APORTSDIR}
53 gitbase=$(git rev-parse --show-toplevel 2>/dev/null) # already is -P
54 if [ -d "$APORTSDIR" ]; then
55 APORTSDIR=$(cd "$APORTSDIR"; pwd -P)
56 elif [ -z "$APORTSDIR" ] && [ -d "$HOME/aports" ]; then
57 APORTSDIR=$(cd "$HOME/aports"; pwd -P)
58 else
59 if [ -n "$gitbase" ]; then
60 case $(git config remote.origin.url) in
61 */aports) APORTSDIR=$gitbase ;;
62 *) APORTSDIR= ;;
63 esac
64 else
65 APORTSDIR=
66 fi
67 fi
68 # source any .abuild file at the aports root, but only if we are currently in aports tree
69 [ -n "$APORTSDIR" ] && [ -f "$APORTSDIR/.abuild" ] && [ "$APORTSDIR" = "$gitbase" ] && . "$APORTSDIR/.abuild"
70 BUILDDIR=${_BUILDDIR-$BUILDDIR}
71 PKGDEST=${_PKGDEST-$PKGDEST}
72 SRCPKGDEST=${_SRCPKGDEST-$SRCPKGDEST}
73 REPODEST=${_REPODEST-$REPODEST}
74 SRCDEST=${_SRCDEST-$SRCDEST}
75 CARCH=${_CARCH-$CARCH}
76 CHOST=${_CHOST-$CHOST}
77 CTARGET=${_CTARGET-$CTARGET}
78 CPPFLAGS=${_CPPFLAGS-$CPPFLAGS}
79 CFLAGS=${_CFLAGS-$CFLAGS}
80 CXXFLAGS=${_CXXFLAGS-$CXXFLAGS}
81 LDFLAGS=${_LDFLAGS-$LDFLAGS}
82 JOBS=${_JOBS-$JOBS}
83 MAKEFLAGS=${_MAKEFLAGS-$MAKEFLAGS}
84 PACKAGER=${_PACKAGER-$PACKAGER}
85 USE_COLORS=${_USE_COLORS-$USE_COLORS}
86
87 [ -z "$CBUILD" ] && CBUILD="$CHOST"
88 [ -z "$CTARGET" ] && CTARGET="$CHOST"
89 [ -z "$CARCH" ] && CARCH="$(hostspec_to_arch $CHOST)"
90 [ -z "$CLIBC" ] && CLIBC="$(hostspec_to_libc $CHOST)"
91 [ -z "$CTARGET_ARCH" ] && CTARGET_ARCH="$(hostspec_to_arch $CTARGET)"
92 [ -z "$CTARGET_LIBC" ] && CTARGET_LIBC="$(hostspec_to_libc $CTARGET)"
93
94}
95readconfig
96
97# expects $1 to be a package directory in the aports tree ('foo' or 'main/foo')
98# outputs APKBUILD's path if successful
99aports_buildscript() {
100 [ -n "$APORTSDIR" ] || return 1
101 if [ "${1#*/}" != "$1" ]; then
102 ( cd "$APORTSDIR/$1" && [ -f APKBUILD ] && echo "$PWD/APKBUILD" )
103 else
104 ( cd "$APORTSDIR"/*/"$1" && [ -f APKBUILD ] && echo "$PWD/APKBUILD" )
105 fi
106}
107
108# expects $1 to be a file, or a directory containing an APKBUILD, or a package directory in the aports tree
109# outputs APKBUILD's path if successful (doesn't verify that it's a valid APKBUILD)
110any_buildscript() {
111 if [ -f "$1" ]; then
112 echo "$1"
113 elif [ -d "$1" ]; then
114 [ -f "$1/APKBUILD" ] || return 1
115 echo "$1/APKBUILD"
116 else
117 aports_buildscript "$1" || return 1
118 fi
119}
120
121# output functions
122msg() {
123 [ -n "$quiet" ] && return 0
124 local prompt="$GREEN>>>${NORMAL}"
125 printf "${prompt} %s\n" "$1" >&2
126}
127
128msg2() {
129 [ -n "$quiet" ] && return 0
130 # ">>> %s"
131 printf " %s\n" "$1" >&2
132}
133
134warning() {
135 local prompt="${YELLOW}>>> WARNING:${NORMAL}"
136 printf "${prompt} %s\n" "$1" >&2
137}
138
139warning2() {
140 # ">>> WARNING: %s\n"
141 printf " %s\n" "$1" >&2
142}
143
144error() {
145 local prompt="${RED}>>> ERROR:${NORMAL}"
146 printf "${prompt} %s\n" "$1" >&2
147}
148
149error2() {
150 # ">>> ERROR:
151 printf " %s\n" "$1" >&2
152}
153
154set_xterm_title() {
155 if [ "$TERM" = xterm ] && [ -n "$USE_COLORS" ]; then
156 printf "\033]0;$1\007" >&2
157 fi
158}
159
160disable_colors() {
161 NORMAL=""
162 STRONG=""
163 RED=""
164 GREEN=""
165 YELLOW=""
166 BLUE=""
167}
168
169enable_colors() {
170 NORMAL="\033[1;0m"
171 STRONG="\033[1;1m"
172 RED="\033[1;31m"
173 GREEN="\033[1;32m"
174 YELLOW="\033[1;33m"
175 BLUE="\033[1;34m"
176}
177
178if [ -n "$USE_COLORS" ] && [ -t 1 ]; then
179 enable_colors
180else
181 disable_colors
182fi
183
184# caller may override
185cleanup() {
186 return 0
187}
188
189die() {
190 error "$@"
191 cleanup
192 exit 1
193}