Skip to content
This repository was archived by the owner on Oct 22, 2019. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 27 additions & 28 deletions makepkgs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ As soon as the program sees one of these options, all command line
argument processing stops.

-h Show this help
-l Only list package info.
-l Only list package info.
-d Only reconstruct repo database.
-s Only sign packages.

Expand All @@ -35,12 +35,12 @@ COMBINABLE FLAGS:
-u <USERNAME> User to run package signing as. Defaults to \$USER,
which retains orignal user name even with privilege
escalation with su.

-f Update RSS Update an RSS feed

END_OF_SHOW_HELP
}
}

### CONSTANTS & SHORTCUTS ###

COLOR='\e[1;35m'
Expand All @@ -54,6 +54,7 @@ TAB3='tput cub 80; tput cuf 80'

NEWPKS=""
BADPKS=""
LOCKFILE="/tmp/makepkgs.lock"
FLAG_MAKE=true # Make packages?
FLAG_LIST=false # Only list package info?
FLAG_REPO=false # Only update the repos?
Expand Down Expand Up @@ -84,39 +85,37 @@ done

shift $((OPTIND-1))

### CHECK TO SEE IF RUN AS ROOT ###
### MAKE SURE THE SCRIPT ISN'T RUNNING WITH ROOT RIGHTS ###

[[ ${EUID} -eq 0 && ! ${FLAG_MAKE} ]] &&
echo "This script must be run as root when making packages." >&2 && exit 1
[[ ${EUID} -eq 0 ]] && echo -e "It's not allowed to build packages as root." && exit 1

### CHECK TO SEE IF WE ARE ALREADY RUNNING ###

if [ -f /var/run/lock/makepkgs.lock ]; then
echo "Lock file /var/run/lock/makepkgs.lock detected. Is the script already running?" >&2
if [ -f ${LOCKFILE} ]; then
echo "Lock file ${LOCKFILE} detected. Is the script already running?" >&2
[ -t 1 ] && echo "This file may be left behind if the script crashes or is interrupted"
[ -t 1 ] && echo "If you are sure that this script is not running please delete the lock file."
exit 1
else
touch /var/run/lock/makepkgs.lock
touch ${LOCKFILE}
fi

### TELL USER ABOUT FALLING BACK TO DEFAULTS ###

[ -z ${CHROOT} ] && CHROOT="/srv/build" && $FLAG_INFO && [ -t 1 ] && echo "No chroot directory specified, defaulting to /srv/build"
[ -z ${CHROOT} ] && CHROOT="/srv/build" && $FLAG_INFO && [ -t 1 ] && echo "No chroot directory specified, defaulting to /srv/build"
[ -z ${REPDIR} ] && REPDIR="/srv/repo" && $FLAG_INFO && [ -t 1 ] && echo "No repo directory specified, defaulting to /srv/repo"
[ -z ${USRNAM} ] && USRNAM="${USER}" && $FLAG_INFO && [ -t 1 ] && echo "No username specified. Will sign packages as ${USER}"

### MAKE SURE WE HAVE THE REQUISITE BINARIES ###

for binary in sed tar xz host curl wget arch-nspawn makechrootpkg; do
for binary in sed tar xz host curl arch-nspawn makechrootpkg; do
type ${binary} > /dev/null 2>&1 || { echo "${binary} is not installed." >&2; exit 1; }
done

### MAKE SURE A REPO NAME WAS SPECIFIED ###

[ -z ${REPNAM} ] && echo "No repo name specified" >&2 && show_help >&2 rm /var/run/lock/makepkgs.lock && exit 1


### MAKE SURE THE BUILD CHROOTS EXISTS ###

for arch in x86_64 i686; do
Expand Down Expand Up @@ -173,7 +172,7 @@ function pkg_ver_aur () {
}

function pkg_get () {
wget -q https://aur.archlinux.org/packages/${1:0:2}/${1}/${1}.tar.gz
curl -s -o ${1}.tar.gz https://aur.archlinux.org/packages/${1:0:2}/${1}/${1}.tar.gz
tar -zxvf ${1}.tar.gz > /dev/null
rm ${1}.tar.gz
}
Expand Down Expand Up @@ -222,7 +221,7 @@ function sign_pkgs() {
function pkg_build () {

message "Preparing to build ${1} for ${4}..."
rm -rf ${REPDIR}/${REPNAM}/build/aur/${1}
sudo rm -rf ${REPDIR}/${REPNAM}/build/aur/${1}

mpec=1
pkg_get ${1}
Expand All @@ -233,20 +232,20 @@ function pkg_build () {

if [ -n "${tany}" -a "${4}" == "i686" ]; then
message 'ANY package detected, will copy x86_64 version.'
cp ${REPDIR}/${REPNAM}/x86_64/${1}* ${REPDIR}/${REPNAM}/i686/
cp -a ${REPDIR}/${REPNAM}/x86_64/${1}* ${REPDIR}/${REPNAM}/i686/
[[ "${2}" != "missing" ]] && pkg_remove ${1} ${2} ${4}
else
if [ -n "${tnat}" -o -n "${tany}" ]; then
chown -R nobody ${REPDIR}/${REPNAM}/build/aur/${1}
chown -R ${USRNAM}:$(id -ng ${USRNAM}) ${REPDIR}/${REPNAM}/build/aur/${1}
cd ${REPDIR}/${REPNAM}/build/aur/${1}
[[ -f ../${1}.sh ]] && message 'Executing PKGBUILD customization...' && sh ../${1}.sh
makechrootpkg -cur ${CHROOT}/${4} -l aurpbs
if [ $? == 0 ]; then
message 'Package creation succeeded!'
if [ -f "`ls ${REPDIR}/${REPNAM}/build/aur/${1}/${1}-*.pkg.tar 2> /dev/null`" ]; then
if [ -f "`ls ${REPDIR}/${REPNAM}/build/aur/${1}/${1}-*.pkg.tar 2> /dev/null`" ]; then
message 'Package left as tarball. Manually compressing...'
xz ${REPDIR}/${REPNAM}/build/aur/${1}/${1}-*.pkg.tar
fi
fi
[[ "${2}" != "missing" ]] && pkg_remove ${1} ${2} ${4}
pkg_add ${1} ${4}; sign_pkgs ${4}; repo_build ${4}; system_update ${4};
NEWPKS="${NEWPKS}${1} for ${4}"$'\n'
Expand Down Expand Up @@ -285,9 +284,9 @@ if [ -f "${REPDIR}/${REPNAM}/build/aur/packages.list" ]; then
### CREATE DIRECTORIES IF THEY DON'T EXIST ###

mkdir -p ${REPDIR}/${REPNAM}/build/aur
mkdir -p ${REPDIR}/${REPNAM}/{x86_64,i686}
mkdir -p ${REPDIR}/${REPNAM}/{x86_64,i686} && chown ${USRNAM}:$(id -ng ${USRNAM}) ${REPDIR}/${REPNAM}/{x86_64,i686}

if [ -t 1 ]; then
if [ -t 1 ]; then
echo -e "${BEGIN}*** STARTING WITH REPO ${REPNAM} ***${RESET}\n"
echo -ne "PACKAGE NAME"; eval ${TAB1}
echo -ne "LCL X86_64 VER"; eval ${TAB2}
Expand All @@ -309,7 +308,7 @@ if [ -f "${REPDIR}/${REPNAM}/build/aur/packages.list" ]; then
system_update x86_64; system_update i686
lvx=$(pkg_ver_loc ${pkg} x86_64); lvi=$(pkg_ver_loc ${pkg} i686)
fi
if [ -t 1 ]; then
if [ -t 1 ]; then
echo -ne "${COLOR}${pkg}${RESET}"; eval $TAB1
echo -ne "${COLOR}${lvx}${RESET}"; eval $TAB2
echo -ne "${COLOR}${lvi}${RESET}"; eval $TAB3
Expand All @@ -329,7 +328,7 @@ if [ -f "${REPDIR}/${REPNAM}/build/aur/packages.list" ]; then
else
$FLAG_INFO && [ -t 1 ] && echo "List mode on...not building missing ${arch} package."
fi
else
else
if pkg_ver_comp ${lvl} ${av}; then
if [ ${FLAG_LIST} == false ]; then
pkg_build ${pkg} ${lvl} ${av} ${arch} && [[ $? == 0 ]] && depupd=1
Expand All @@ -351,20 +350,20 @@ fi

if [ ! ${FLAG_URSS} ]; then

# This section relies on BrainwreckedRSS
# This section relies on BrainwreckedRSS
# Visit rss.bw-tech.net for more information

cd ${REPDIR}/bwrss

[[ "$NEWPKS" != "" ]] &&
[[ "$NEWPKS" != "" ]] &&
NEWPKS=$(echo "$NEWPKS" | sed ':a;N;$!ba;s/\n/\&lt;br\/\&gt; /g') &&
php update.php aurpb "New Packages Built" "AURPB Build Script" "${NEWPKS} &lt;br /&gt;Packages are waiting production."

[[ "$BADPKS" != "" ]] &&
[[ "$BADPKS" != "" ]] &&
BADPKS=$(echo "$BADPKS" | sed ':a;N;$!ba;s/\n/\&lt;br\/\&gt; /g') &&
EXCUSE="Common reasons: Dependencies broken, source dl link broken, AUR maintainer broken."
EXCUSE="Common reasons: Dependencies broken, source dl link broken, AUR maintainer broken."
php update.php aurpb "Failed Packages" "AURPB Build Script" "${BADPKS} &lt;br /&gt;${EXCUSE}"
fi

rm /var/run/lock/makepkgs.lock
rm ${LOCKFILE}
exit 0