# Maintainer: Moses Narrow # Maintainer: Rudi [KittyCash] _projectname=skycoin pkgname=skywire _pkgname=${pkgname} _githuborg=${_projectname} pkgdesc="Skywire Mainnet Node implementation. Skycoin.com" _pkggopath="github.com/${_githuborg}/${_pkgname}" pkgver=0.3.0 #pkgver='autogenerated' pkgrel=4 #pkgrel=4 arch=( 'i686' 'x86_64' 'aarch64' 'armv8' 'armv7' 'armv7l' 'armv7h' 'armv6h' 'armhf' 'armel' 'arm' ) url="https://${_pkggopath}" license=() makedepends=('git' 'go' 'musl' 'kernel-headers-musl') #disable signature check pending fixes# 'skycoin-keyring') install=skywire.install _scripts=${_pkgname}-scripts #scripts need at least this commit to work if current build to develop fails #source=("git+${url}.git#commit=d156980280fdb2ddfc8765ff77cdd55c0b7e9d9c" source=("git+${url}.git" ##branch=${BRANCH:-develop}" "${_scripts}.tar.gz" ) #'PKGBUILD.sig' #disable signature checking for now #'PKGBUILD') sha256sums=('SKIP' 'ce17b7e4cb3620c292172e67229919ad57b943c6756a43acc23a3777cb40ecc0') # 'SKIP' # 'SKIP') #validpgpkeys=('DE08F924EEE93832DABC642CA8DC761B1C0C0CFC') # Moses Narrow #'98F934F04F9334B81DFA3398913BBD5206B19620') #iketheadore skycoin #tar -czvf skywire-scripts.tar.gz skywire-scripts #updpkgsums #pkgver() { #cd "${srcdir}/${_pkgname}" #local _version=$(git describe --abbrev=0 | tr --delete v) #local _version=${_version//-/_} #local _date=$(git log -1 --format="%cd" --date=short | sed s/-//g) #local _count=$(git rev-list --count HEAD) #local _commit=$(git rev-parse --short HEAD) #echo "${_version}_${_date}.${_count}_${_commit}_${BRANCH:-develop}" #} prepare() { #verify PKGBUILD signature # gpg --verify ${srcdir}/PKGBUILD.sig ${srcdir}/PKGBUILD #disabled the signature check # https://wiki.archlinux.org/index.php/Go_package_guidelines mkdir -p ${srcdir}/go/src/github.com/${_githuborg}/ ${srcdir}/go/bin ${srcdir}/go/apps ln -rTsf ${srcdir}/${_pkgname} ${srcdir}/go/src/${_pkggopath} cd ${srcdir}/go/src/${_pkggopath}/ #avoid develop branch build failures on ARM [[ $CARCH == "x86_64" ]] && git checkout develop || git checkout d156980280fdb2ddfc8765ff77cdd55c0b7e9d9c } build() { export GOPATH=${srcdir}/go export GOBIN=${GOPATH}/bin export _GOAPPS=${GOPATH}/apps export GOOS=linux export CGO_ENABLED=1 #use musl-gcc for static compilation export CC=musl-gcc _msg2 "building skycache binary" cd ${srcdir}/${_scripts}/ go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOBIN/ skycache.go #create the skywire binaries cd ${srcdir}/go/src/${_pkggopath} _cmddir=${srcdir}/go/src/${_pkggopath}/cmd #static compilation ; need to re-evaluate build determinism _buildbins skychat $_GOAPPS apps/ _buildbins skysocks $_GOAPPS apps/ _buildbins skysocks-client $_GOAPPS apps/ _buildbins vpn-client $_GOAPPS apps/ _buildbins vpn-server $_GOAPPS apps/ _buildbins skywire-visor $GOBIN _buildbins skywire-cli $GOBIN _buildbins setup-node $GOBIN #_msg2 'building hypervisor binary' #hypervisor has been combined with the visor #cd ${_cmddir}/hypervisor #go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOBIN/ . #binary transparency cd $GOBIN _msg2 'binary sha256sums' sha256sum $(ls) cd $_GOAPPS sha256sum $(ls) } #I had to speed up the build for testing but there's a risk of using old binaries. #will change this when the commit for the build tracks a branch _buildbins() { _GOHERE=$2 _binpath=$3 _binname=$1 _msg2 "building ${_binname} binary" if [[ ! -f ${_GOHERE}/${_binname} ]] ; then cd ${_cmddir}/${_binpath}${_binname} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $_GOHERE/ . fi } package() { #create directory trees or the visor might make them with weird permissions _skydir="opt/skywire" _skyapps="${_skydir}/apps" _systemddir="etc/systemd/system" _skybin="${_skydir}/bin" mkdir -p ${pkgdir}/usr/bin mkdir -p ${pkgdir}/${_skydir}/bin mkdir -p ${pkgdir}/${_skydir}/apps mkdir -p ${pkgdir}/${_skydir}/ssl mkdir -p ${pkgdir}/${_skydir}/local mkdir -p ${pkgdir}/${_skydir}/dmsgpty mkdir -p ${pkgdir}/${_skydir}/${_pkgname} mkdir -p ${pkgdir}/${_skydir}/${_pkgname}-save mkdir -p ${pkgdir}/${_skydir}/transport_logs mkdir -p ${pkgdir}/${_skydir}/skycache mkdir -p ${pkgdir}/${_skydir}/hypervisorkey _msg2 'installing binaries' _skywirebins=$( ls ${srcdir}/go/bin ) for i in ${_skywirebins}; do install -Dm755 ${srcdir}/go/bin/${i} ${pkgdir}/${_skybin}/${i} ln -rTsf ${pkgdir}/${_skybin}/${i} ${pkgdir}/usr/bin/${i} done _skywireapps=$( ls ${srcdir}/go/apps ) for i in ${_skywireapps}; do install -Dm755 ${srcdir}/go/apps/${i} ${pkgdir}/${_skyapps}/${i} ln -rTsf ${pkgdir}/${_skyapps}/${i} ${pkgdir}/usr/bin/${i} done #install scripts install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-halt.sh ${pkgdir}/usr/bin/${_pkgname}-halt install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-setuser.sh ${pkgdir}/usr/bin/${_pkgname}-setuser #install the PKGBUILD for generating the config backup (and restoration?) scripts install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-save.sh ${pkgdir}/usr/bin/${_pkgname}-save install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-restore.sh ${pkgdir}/usr/bin/${_pkgname}-restore install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-autoconfig.sh ${pkgdir}/usr/bin/${_pkgname}-autoconfig install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-reset.sh ${pkgdir}/usr/bin/${_pkgname}-reset install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-save.PKGBUILD ${pkgdir}/${_skydir}/${_pkgname}-save/PKGBUILD install -Dm755 ${srcdir}/${_scripts}/${_pkgname}-save.install ${pkgdir}/${_skydir}/${_pkgname}-save/${_pkgname}-save.install #install the satellite PKGBUILD for distributing the hypervisor key and it's script install -Dm755 ${srcdir}/${_scripts}/keypkg-gen.sh ${pkgdir}/usr/bin/keypkg-gen install -Dm755 ${srcdir}/${_scripts}/hypervisorkey.PKGBUILD ${pkgdir}/${_skydir}/hypervisorkey/PKGBUILD install -Dm755 ${srcdir}/${_scripts}/hypervisorkey.install ${pkgdir}/${_skydir}/hypervisorkey/hypervisorkey.install install -Dm755 ${srcdir}/${_scripts}/hypervisorkey-autoconfig.sh ${pkgdir}/${_skydir}/hypervisorkey/hypervisorkey-autoconfig.sh #rename visor to skywire mv ${pkgdir}/usr/bin/${_pkgname}-visor ${pkgdir}/usr/bin/${_pkgname} #install the system.d services (from the source) #install -Dm644 ${srcdir}/go/src/${_pkggopath}/init/${_pkgname}-hypervisor.service ${pkgdir}/usr/lib/systemd/system/${_pkgname}-hypervisor.service #install -Dm644 ${srcdir}/go/src/${_pkggopath}/init/${_pkgname}-visor.service ${pkgdir}/usr/lib/systemd/system/${_pkgname}-visor.service #install the patched system.d services install -Dm644 ${srcdir}/${_scripts}/${_pkgname}.service ${pkgdir}/usr/lib/systemd/system/${_pkgname}.service install -Dm644 ${srcdir}/${_scripts}/${_pkgname}-visor.service ${pkgdir}/usr/lib/systemd/system/${_pkgname}-visor.service #install the skycache systemd service install -Dm644 ${srcdir}/${_scripts}/skycache.service ${pkgdir}/usr/lib/systemd/system/skycache.service #tls key and certificate generation #install -Dm755 ${srcdir}/${_pkgname}/static/skywire-manager-src/ssl/generate-1.sh ${pkgdir}/${_skydir}/ssl/generate.sh install -Dm755 ${srcdir}/${_scripts}/generate.sh ${pkgdir}/${_skydir}/ssl/generate.sh ln -rTsf ${pkgdir}/${_skydir}/ssl/generate.sh ${pkgdir}/usr/bin/${_pkgname}-tls-gen install -Dm644 ${srcdir}/${_pkgname}/static/${_pkgname}-manager-src/ssl/certificate.cnf ${pkgdir}/${_skydir}/ssl/certificate.cnf } _msg2() { (( QUIET )) && return local mesg=$1; shift printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" }