projects/aports·blob v2.27.1 · refs

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