# 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.4.2 pkgrel=1 #pkgrel=1 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 source=( "${url}/archive/refs/tags/v${pkgver}.tar.gz" "${_scripts}.tar.gz" ) sha256sums=('477a42634b2f979fb9e13448a08dfd5aa325d4d0b72cf787dd7cb86d9f30d64f' 'fad6c525f267271c94650559bab89a78b6a05419ed7682a143c95b0eb51de658') prepare() { # 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}-${pkgver} ${srcdir}/go/src/${_pkggopath} cd ${srcdir}/go/src/${_pkggopath}/ } build() { export GOPATH=${srcdir}/go export GOBIN=${GOPATH}/bin export _GOAPPS=${GOPATH}/apps export GOOS=linux export CGO_ENABLED=1 #default anyways #use musl-gcc for static compilation export CC=musl-gcc cd "${srcdir}/${pkgname}-${pkgver}" local _version="v0.4.2" DMSG_BASE="github.com/skycoin/dmsg" BUILDINFO_PATH="${DMSG_BASE}/buildinfo" BUILDINFO_VERSION="${BUILDINFO_PATH}.version=${_version}" BUILDINFO=${BUILDINFO_VERSION} ${BUILDINFO_DATE} ${BUILDINFO_COMMIT} #create the skywire binaries cd ${srcdir}/go/src/${_pkggopath} _cmddir=${srcdir}/go/src/${_pkggopath}/cmd #static compilation with 'musl' avoids glibc runtime deps #which cause binary to fail if correct glibc / libc6 is not found on the system _msg2 "building skychat binary" cd ${_cmddir}/apps/skychat go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building skysocks binary" cd ${_cmddir}/apps/skysocks go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building skysocks-client binary" cd ${_cmddir}/apps/skysocks-client go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building vpn-client binary" cd ${_cmddir}/apps/vpn-client go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building vpn-server binary" cd ${_cmddir}/apps/vpn-server go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building skywire-cli binary" cd ${_cmddir}/skywire-cli go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $GOBIN . _msg2 "building skywire-visor binary" cd ${_cmddir}/skywire-visor go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $GOBIN . _msg2 "building setup-node binary" cd ${_cmddir}/setup-node go build -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $GOBIN . #binary transparency cd $GOBIN _msg2 'binary sha256sums' sha256sum $(ls) cd $_GOAPPS sha256sum $(ls) } package() { _msg2 'creating dirs' #create directory trees or the visor might make them with weird permissions _skydir="opt/skywire" _skyapps="${_skydir}/apps" _skyscripts="${_skydir}/scripts" _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 mkdir -p ${pkgdir}/${_skydir}/scripts _msg2 'installing binaries' _skywirebins=$( ls ${srcdir}/go/bin ) for i in ${_skywirebins}; do _install2 ${srcdir}/go/bin/${i} ${_skybin} done _msg2 'installing apps' _skywireapps=$( ls ${srcdir}/go/apps ) for i in ${_skywireapps}; do _install2 ${srcdir}/go/apps/${i} ${_skyapps} done _msg2 'installing scripts' _skywirescripts=$( ls ${srcdir}/${_scripts}/${_pkgname} ) for i in ${_skywirescripts}; do _install2 ${srcdir}/${_scripts}/${_pkgname}/${i} ${_skyscripts} done #the main scripts get installed above, the following are satellite-package or haveto do with the tls config - WIP install -Dm755 ${srcdir}/${_scripts}/skywire-save/${_pkgname}-save.PKGBUILD ${pkgdir}/${_skydir}/${_pkgname}-save/PKGBUILD install -Dm755 ${srcdir}/${_scripts}/skywire-save/${_pkgname}-save.install ${pkgdir}/${_skydir}/${_pkgname}-save/${_pkgname}-save.install install -Dm644 ${srcdir}/${_scripts}/skywire-save/${_pkgname}-save.txt ${pkgdir}/${_skydir}/${_pkgname}-save/${_pkgname}-save.install #install the satellite PKGBUILD for distributing the hypervisor key and it's script - works with skycache to share the packages install -Dm755 ${srcdir}/${_scripts}/hypervisorkey/hypervisorkey.PKGBUILD ${pkgdir}/${_skydir}/hypervisorkey/PKGBUILD install -Dm755 ${srcdir}/${_scripts}/hypervisorkey/hypervisorkey.install ${pkgdir}/${_skydir}/hypervisorkey/hypervisorkey.install install -Dm755 ${srcdir}/${_scripts}/hypervisorkey/hypervisorkey-autoconfig.sh ${pkgdir}/${_skydir}/hypervisorkey/hypervisorkey-autoconfig.sh #rename visor to skywire - matche the skycoin / skycoin-cli of the skycoin wallet [[ -f ${pkgdir}/usr/bin/${_pkgname}-visor ]] && mv ${pkgdir}/usr/bin/${_pkgname}-visor ${pkgdir}/usr/bin/${_pkgname} #install the patched system.d services install -Dm644 ${srcdir}/${_scripts}/systemd/${_pkgname}.service ${pkgdir}/${_systemddir}/${_pkgname}.service install -Dm644 ${srcdir}/${_scripts}/systemd/${_pkgname}-visor.service ${pkgdir}/${_systemddir}/${_pkgname}-visor.service #install the skycache systemd service install -Dm644 ${srcdir}/${_scripts}/skycache/skycache.service ${pkgdir}/${_systemddir}/skycache.service #tls key and certificate generation install -Dm755 ${srcdir}/${_scripts}/ssl/generate.sh ${pkgdir}/${_skydir}/ssl/generate.sh ln -rTsf ${pkgdir}/${_skydir}/ssl/generate.sh ${pkgdir}/usr/bin/${_pkgname}-tls-gen install -Dm644 ${srcdir}/${_pkgname}-${pkgver}/static/${_pkgname}-manager-src/ssl/certificate.cnf ${pkgdir}/${_skydir}/ssl/certificate.cnf } _install2() { _binname="${1##*/}" _binname="${_binname%%.*}" install -Dm755 ${1} ${pkgdir}/${2}/${_binname} ln -rTsf ${pkgdir}/${2}/${_binname} ${pkgdir}/usr/bin/${_binname} chmod +x ${pkgdir}/usr/bin/${_binname} } _msg2() { (( QUIET )) && return local mesg=$1; shift printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" } _msg3() { (( QUIET )) && return local mesg=$1; shift printf "${BLUE} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" }