projects/aports·blob v2.28.0 · refs

196 lines · 4.9 KiB

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