# Maintainer: Moses Narrow # Maintainer: Rudi [KittyCash] _projectname=skycoin pkgname=skywire _pkgname=${pkgname} _githuborg=${_projectname} pkgdesc="Skywire Mainnet Node implementation. Develop Banch. Debian package" #Uncoment to select architecture - not working currently #_pkgarch=amd64 #_pkgarch=arm64 #_pkgarch=armhf #set to native architecture with dpkg _pkgarch=$(dpkg --print-architecture) #leave arch package as any arch=('any') _pkgver='0.3.0' _tag_ver='v0.3.0' pkgver='autogenerated' #pkgver='autogenerated' pkgrel=6 #pkgrel=6 _pkggopath="github.com/${_githuborg}/${_pkgname}" url="https://${_pkggopath}" license=() makedepends=('dpkg' 'git' 'go' 'musl' 'kernel-headers-musl' 'skycoin-keyring') depends=() _debdeps="reprepro" #_debdeps="" _scripts="skywire-deb-scripts" source=("git+${url}.git#branch=${BRANCH:-develop}" "${_scripts}.tar.gz" 'deb.PKGBUILD.sig' 'deb.PKGBUILD') sha256sums=('SKIP' '61122b39103760f4543b8a4c3da1ce695333ff4915cf76199ba8fb337cb13774' 'SKIP' 'SKIP') validpgpkeys=('DE08F924EEE93832DABC642CA8DC761B1C0C0CFC') # Moses Narrow #tar -czvf skywire-deb-scripts.tar.gz skywire-deb-scripts #updpkgsums deb.PKGBUILD ## BINARY CROSS COMPILATION IS NOT WORKING - REASONS UNKNOWN ## #[[ $_pkgarch == "amd64" ]] && _buildwith=(env GOOS=linux GOARCH=amd64) #[[ $_pkgarch == "arm64" ]] && _buildwith=(env GOOS=linux GOARCH=arm64) #[[ $_pkgarch == "armhf" ]] && _buildwith=(env GOOS=linux GOARCH=arm GOARM=6) ## Build only on native architecture for now ## 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 "${_pkgver}_${_date}.${_count}_${_commit}_${BRANCH:-develop}" echo "${_pkgver}" } prepare() { #verify PKGBUILD signature gpg --verify ${srcdir}/deb.PKGBUILD.sig ${srcdir}/deb.PKGBUILD # https://wiki.archlinux.org/index.php/Go_package_guidelines mkdir -p ${srcdir}/go/src/github.com/${_githuborg}/ ${srcdir}/go/bin.${_pkgarch} ${srcdir}/go/apps.${_pkgarch} ln -rTsf ${srcdir}/${_pkgname} ${srcdir}/go/src/${_pkggopath} cd ${srcdir}/go/src/${_pkggopath}/ } build() { export GOPATH=${srcdir}/go export GOBIN=${GOPATH}/bin.${_pkgarch} export GOAPPS=${GOPATH}/apps.${_pkgarch} export CC=musl-gcc #export GOOS=linux #export GOARCH=amd64 #create read only cache binary go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOBIN/ ${_scripts}/readonlycache.go #create the skywire binaries cd ${srcdir}/go/src/${_pkggopath} _cmddir=${srcdir}/go/src/${_pkggopath}/cmd #using go build for determinism _msg2 'building skychat binary' cd ${_cmddir}/apps/skychat go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOAPPS/ . _msg2 'building skysocks binary' cd ${_cmddir}/apps/skysocks go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOAPPS/ . _msg2 'building skysocks-client binary' cd ${_cmddir}/apps/skysocks-client go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOAPPS/ . _msg2 'building vpn-client binary' cd ${_cmddir}/apps/vpn-client go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOAPPS/ . _msg2 'building vpn-server binary' cd ${_cmddir}/apps/vpn-server go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOAPPS/ . _msg2 'building skywire-visor binary' cd ${_cmddir}/skywire-visor go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOBIN/ . _msg2 'building skywire-cli binary' cd ${_cmddir}/skywire-cli go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $GOBIN/ . _msg2 'building setup-node binary' cd ${_cmddir}/setup-node go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o $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) #create control file for the debian package echo "Package: skywire" > ${srcdir}/${_pkgarch}.control echo "Version: ${pkgver}-${pkgrel}" >> ${srcdir}/${_pkgarch}.control echo "Priority: optional" >> ${srcdir}/${_pkgarch}.control echo "Section: web" >> ${srcdir}/${_pkgarch}.control echo "Architecture: ${_pkgarch}" >> ${srcdir}/${_pkgarch}.control echo "Depends: ${_debdeps}" >> ${srcdir}/${_pkgarch}.control echo "Maintainer: the-skycoin-project" >> ${srcdir}/${_pkgarch}.control echo "Description: ${pkgdesc}" >> ${srcdir}/${_pkgarch}.control #create control file for the hypervisorkey debian package echo "Package: hypervisorkey" > ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Version: ${pkgver}-${pkgrel}" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Priority: optional" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Section: web" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Architecture: ${_pkgarch}" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Depends: ${_pkgname}" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Maintainer: the-skycoin-project" >> ${srcdir}/${_pkgarch}.hypervisorkey.control echo "Description: package for the hypervisor key" >> ${srcdir}/${_pkgarch}.hypervisorkey.control } package() { _msg2 'creating dirs' #set up to create a .deb package _debpkgdir=${_pkgname}-${pkgver}-${pkgrel}-${_pkgarch} _pkgdir=${pkgdir}/${_debpkgdir} _skydir="opt/skywire" 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}/transport_logs _msg2 'installing binaries' #loop to install the binaries _skywirebins=$( ls ${srcdir}/go/bin.${_pkgarch} ) for i in ${_skywirebins}; do _msg2 "$i" install -Dm755 ${srcdir}/go/bin.${_pkgarch}/${i} ${_pkgdir}/${_skydir}/bin/${i} ln -rTsf ${_pkgdir}/${_skydir}/bin/${i} ${_pkgdir}/usr/bin/${i} done #check #_msg2 'testing `skywire-cli visor gen-config --help`' #${pkgdir}/opt/skywire/bin/skywire-cli visor gen-config --help _msg2 'installing apps' #loop to install the apps _skywireapps=$( ls ${srcdir}/go/apps.${_pkgarch} ) for i in ${_skywireapps}; do _msg2 "$i" install -Dm755 ${srcdir}/go/apps.${_pkgarch}/${i} ${_pkgdir}/${_skydir}/apps/${i} ln -rTsf ${_pkgdir}/${_skydir}/apps/${i} ${_pkgdir}/usr/bin/${i} done _msg2 'installing scripts and systemd services' #install the satellite package build script and elements for distributing the hypervisor key install -Dm755 ${srcdir}/${_scripts}/keypkg-gen.sh ${pkgdir}/usr/bin/keypkg-gen install -Dm755 ${srcdir}/${_pkgarch}.hypervisorkey.control ${pkgdir}/opt/${_pkgname}/hypervisorkey/DEBIAN/control install -Dm755 ${srcdir}/${_scripts}/hypervisorkey.postinst ${pkgdir}/opt/${_pkgname}/hypervisorkey/DEBIAN/postinst mkdir -p ${pkgdir}/opt/${_pkgname}/hypervisorkey/opt/${_pkgname} #Change binary name of skywire-visor to skywire cd ${_pkgdir}/usr/bin/ mv ${_pkgname}-visor ${_pkgname} #install the system.d services install -Dm644 ${srcdir}/${_scripts}/${_pkgname}.service ${_pkgdir}/etc/systemd/system/${_pkgname}.service install -Dm644 ${srcdir}/${_scripts}/${_pkgname}-visor.service ${_pkgdir}/etc/systemd/system/${_pkgname}-visor.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/skywire-tls-gen #install -Dm644 ${srcdir}/${_pkgname}/static/skywire-manager-src/ssl/certificate.cnf ${pkgdir}/${_skydir}/ssl/certificate.cnf install -Dm644 ${srcdir}/${_scripts}/certificate.cnf ${pkgdir}/${_skydir}/ssl/certificate.cnf #install the readonly-cache binary sytemd service #install -Dm755 ${srcdir}/readonlycache ${_pkgdir}/usr/bin/readonlycache ##this was installed from the GOBIN install -Dm644 ${srcdir}/${_scripts}/readonly-cache.service ${_pkgdir}/etc/systemd/system/readonly-cache.service #install the apt repo creation script install -Dm755 ${srcdir}/${_scripts}/apt-repo-create.sh ${_pkgdir}/usr/bin/apt-repo-create #install the hypervisor key package creation script install -Dm755 ${srcdir}/${_scripts}/keypkg-gen.sh ${_pkgdir}/usr/bin/keypkg-gen #install the control file and postinst script for the debian package install -Dm755 ${srcdir}/${_pkgarch}.control ${_pkgdir}/DEBIAN/control install -Dm755 ${srcdir}/${_scripts}/postinst.sh ${_pkgdir}/DEBIAN/postinst _msg2 'creating the debian package' #create the debian package cd $pkgdir dpkg-deb --build ${_debpkgdir} mv *.deb ../../ #exit so the arch package doesn't get built exit } _msg2() { (( QUIET )) && return local mesg=$1; shift printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" }