blob: 257faf4d8774be9ba934220ce801f3abac582878 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#!/bin/bash
# Copyright 2010 - 2011 Nicolás Reynolds
# Copyright 2011 Joshua Ismael Haase Hernández
# ---------- GNU General Public License 3 ----------
# This file is part of Parabola.
# Parabola is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Parabola is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Parabola. If not, see <http://www.gnu.org/licenses/>.
# set -x # uncomment for debug
function copy_log { # copy logs if they exist
find "${CHROOTDIR}/${CHROOT}/build/" -name "*\.log" -exec cp {} ./ \;
}
function trap_exit { # End inmediately but print a useful message
copy_log
error "$@"
exit 1
}
# Trap signals from makepkg
set -E
trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT
trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT
trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR
source /etc/libretools.conf
CLEANFIRST="false"
UPDATEFIRST="false"
CHECKNONFREE="true"
LIBRECHROOT_ARGS=""
MAKEPKG_ARGS=""
function usage {
echo ''
echo 'cd to a dir containing a PKGBUILD and run:'
echo '$0 [options] [-- makechrootpkg args [-- makepkg args]]'
echo 'This script will build your package on a chroot.'
echo ''
echo 'OPTIONS:'
echo ''
echo ' -h : show this message.'
echo ' -c : clean the chroot before building.'
echo ' -u : update the chroot before building.'
echo ' -d <chrootdir> : use this dir instead of "$CHROOTDIR"'
echo ' -n <chrootname> : use this dir instead of "$CHROOT".'
echo ' -N : do not check freedom issues' # As fullpkg-check will do that before
echo ''
exit 1
}
while getopts 'hcud:n:N' arg ; do
case "${arg}" in
h) usage ;;
c) CLEANFIRST="true" ;;
u) UPDATEFIRST="true" ;;
d) CHROOTDIR="$OPTARG"
LIBRECHROOT_ARGS='-d "$OPTARG"' ;;
n) CHROOT="$OPTARG" ;;
N) CHECKNONFREE="false" ;;
esac
done
# Pass all arguments after -- right to makechrootpkg
MAKEPKG_ARGS="$makepkg_args ${*:$OPTIND}"
if (( EUID )); then
error "This script must be run as root"
exit 1
fi
if [ ! -e PKGBUILD ]; then # Check if we are actually on a build directory. Do this early.
error "This isn't a build directory"; usage
fi
msg "Checking PKGBUILD for non-free issues"
if "$CHECKNONFREE"; then
if ! pkgbuild-check-nonfree; then
if [[ $? -eq 15 ]]; then # other errors mean fail, not nonfree
error "PKGBUILD contains non-free issues"
exit 15
else
warning "PKGBUILD couldn't be check aganist non-free issues"
fi
fi
fi
if "$CLEANFIRST"; then
librechroot -c "$LIBRECHROOT_ARGS" "$CHROOT"
fi
if "$UPDATEFIRST"; then
librechroot -u "$LIBRECHROOT_ARGS" "$CHROOT"
fi
unset CLEANFIRST UPDATEFIRST LIBRECHROOT_ARGS
makechrootpkg -r "$CHROOTDIR" -l "$CHROOT" $MAKEPKG_ARGS
ev="$?" # exit value
copy_log
exit $ev
|