dotfiles/.ksh/porttools.ksh

211 lines
3.7 KiB
Bash

########################################################################
# OPENBSD PORT TOOLS
########################################################################
#
# CONFIGURATION
#
ME=sdk
MAKE_JOBS=$(sysctl -n hw.ncpuonline)
FETCH_JOBS=12
CVSROOT=$ME@cvs.openbsd.org:/cvs
case $(hostname -s) in
x13) PKGOPT="-Dsnap"; ;;
openbsd) PKGOPT="-Dsnap"; ;;
esac
#
# ALIASES
#
# navigation
alias port-jump="_portjump"
alias port-mark="_portmark"
alias port-last="_portlast"
alias port-out="_portout"
# cleaning
alias port-sweep="_portsweep"
alias port-clean="_portclean"
# making
alias port-refake="_refake"
alias port-reinstall="_reinstall"
alias port-repackage="_repackage"
alias port-remake="_remake"
# checking
alias port-check="_portcheck"
alias port-lib-depends-check="_portlibcheck"
# generating
alias port-modcargo-gen-crates="_portmodcargo_gen"
alias port-modcargo-gen-licenses="_portmodcargo_genlic"
alias port-modgo-gen-modules="_portmodgoupdate"
# source control
alias port-diff="_portgendiff"
alias cvs-update="_cvsupdate"
alias cvs-update-all="_cvsupdateall"
alias cvs-diff="_cvsdiff"
alias cvs-commit="_cvscommit"
alias cvs-release="_cvsrelease"
alias cvs-checkout="_cvscheckout"
# dpb
alias proot-rebuild="_prootrebuild"
alias proot-shell="_prootshell"
alias dpb-make="_dpbmake"
#
# FUNCTIONS
#
_portsweep() {
find . \( -name "*.orig" \
-o -name "*.rej" \
-o -empty \
\) -delete
}
_portjump() {
[ -z $1 ] && exit 0
{
cd /usr/ports \
&& cd $1 \
|| cd */$1 \
|| cd */$1* \
|| cd */*$1 \
|| cd */*$1*
} 2>/dev/null
}
_remake() {
make clean=all
make -j$FETCH_JOBS fetch
make
}
_repackage() {
make clean=packages
FETCH_PACKAGES=No make package
}
_refake() {
rm -f pkg/*.orig
make clean=fake
make fake"
}
_reinstall() {
make reinstall"
}
_portgendiff() {(
pwd | fgrep -q '/usr/ports/' || return 1
set -A N $(make show="PKGNAME EPOCH REVISION")
PN="${N[0]}${N[1]:+v${N[1]}}${N[2]:+p${N[2]}}"
PD=$(pwd | cut -d"/" -f4,5)
cd /usr/ports
cvs -d $CVSROOT diff -uNp "${PD}" > ~/diffs/${PN}.diff
echo ~/diffs/${PN}.diff
)}
_portclean() {(
set -x
cd /usr/ports
doas rm -rf pobj/* plist logs packages bulk update distfiles/*
mkdir -p plist logs packages bulk update
doas make fix-permissions
)}
_cvscommand() {
doas -u $ME cvs -d $CVSROOT $@
}
_cvsupdate() {
_cvscommand -z1 -q up -Pd -A
}
_cvsupdateall() {(
set -x
cd /usr/src && _cvsupdate
cd /usr/xenocara && _cvsupdate
cd /usr/ports && _cvsupdate
cd /usr/www && _cvsupdate
)}
_cvsdiff() {
_cvscommand diff -uNp
}
_cvscommit() {
_cvscommand commit
}
_cvsrelease() {
_cvscommand release
}
_cvscheckout() {
_cvscommand -q -z1 checkout -P
}
_portmark() {
pwd > /var/cache/pmark
}
_portlast() {
cd "$(</var/cache/pmark)"
}
_portout() {
cd "$(</var/cache/pmark)"
cd "$(make show=WRKSRC)"
}
_portlibcheck() {
make port-lib-depends-check
}
_portcheck() {
/usr/ports/infrastructure/bin/portcheck
}
_portmodgoupdate() {
make MODGO_VERSION=latest modgo-gen-modules
}
_portmodcargo_gen() {
make modcargo-gen-crates
}
_portmodcargo_genlic() {
make modcargo-gen-crates-licenses
}
_dpbmake() {
doas chroot /home/dpb /tmp/installdeps.sh $1
doas /usr/ports/infrastructure/bin/dpb -B /home/dpb -c -I $1
}
_prootrebuild() {
doas proot -c /etc/proot.conf
doas chroot /home/dpb pkg_add -Dsnap ccache
{
echo '#!/bin/sh -ex'
echo 'cd /usr/ports/$1'
echo 'FETCH_PACKAGES=-Dsnap make install-depends'
} > /home/dpb/tmp/installdeps.sh
chmod +x /home/dpb/tmp/installdeps.sh
}
_prootshell() {
doas chroot /home/dpb/ ksh -i
}