# Maintainer: Moses Narrow # Maintainer: Rudi [KittyCash] _projectname=skycoin pkgname=skywire _pkgname=${pkgname} _githuborg=${_projectname} pkgdesc="Skywire Mainnet Node implementation; develop branch - Debian package." _pkggopath="github.com/${_githuborg}/${_pkgname}" pkgver='autogenerated' pkgrel=1 #pkgrel=7 _pkgarch=$(dpkg --print-architecture) _pkgver=${pkgver} _pkgrel=${pkgrel} arch=( 'i686' 'x86_64' 'aarch64' 'armv8' 'armv7' 'armv7l' 'armv7h' 'armv6h' 'armhf' 'armel' 'arm' ) url="https://${_pkggopath}" license=() makedepends=('dpkg' 'git' 'go' 'musl' 'kernel-headers-musl') depends=() _debdeps="" install=skywire.install _scripts="skywire-scripts" source=("git+${url}.git#branch=develop" "${_scripts}.tar.gz" ) sha256sums=('SKIP' '7fa8f41d580270eb337737d3aaf051de1d91ed0d30f230a019b5d6596011c6ff') #tar -czvf skywire-deb-scripts.tar.gz skywire-deb-scripts #updpkgsums deb.PKGBUILD pkgver() { _version=$(git ls-remote --tags --refs --sort="version:refname" ${url}.git | tail -n1) _version=${_version##*/} _version=${_version%%-*} _version=${_version//v/} echo ${_version} } 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} ${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 local _version="${pkgver}" 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 _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 -tags systray -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 -tags systray -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $_GOAPPS . _msg2 "building skywire-cli binary" cd ${_cmddir}/skywire-cli go build -tags systray -trimpath --ldflags="" --ldflags "${BUILDINFO} -s -w -linkmode external -extldflags '-static' -buildid=" -o $GOBIN . _msg2 "building skywire-visor binary" cd ${_cmddir}/skywire-visor go build -tags systray -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) ### CONTROL FILES CREATION ### #create control file for the debian package echo "Package: skywire-dev" > ${srcdir}/control echo "Version: ${_pkgver}-${_pkgrel}" >> ${srcdir}/control echo "Priority: optional" >> ${srcdir}/control echo "Section: web" >> ${srcdir}/control echo "Architecture: ${_pkgarch}" >> ${srcdir}/control echo "Depends: ${_debdeps}" >> ${srcdir}/control echo "Provides: skywire" >> ${srcdir}/control echo "Maintainer: skycoin" >> ${srcdir}/control echo "Description: ${pkgdesc}" >> ${srcdir}/control } package() { #set up to create a .deb package _debpkgdir="${_pkgname}-${pkgver}-${_pkgrel}-${_pkgarch}" _pkgdir="${pkgdir}/${_debpkgdir}" _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}/local mkdir -p ${_pkgdir}/${_skydir}/scripts mkdir -p ${_pkgdir}/${_systemddir} cd $_pkgdir _msg2 'installing binaries' install -Dm755 ${GOBIN}/* ${_pkgdir}/${_skybin}/ for _i in ${_pkgdir}/${_skybin}/* ; do ln -rTsf ${_i} ${_pkgdir}/usr/bin/${_i##*/} done _msg2 'installing app binaries' _apps=${pkgdir}/test/apps install -Dm755 ${_GOAPPS}/* ${_pkgdir}/${_skyapps}/ for _i in ${_pkgdir}/${_skyapps}/* ; do ln -rTsf ${_i} ${_pkgdir}/usr/bin/${_i##*/} done _msg2 'Installing scripts' install -Dm755 ${srcdir}/${_scripts}/${_pkgname}/* ${_pkgdir}/${_skyscripts}/ for _i in ${_pkgdir}/${_skyscripts}/* ; do ln -rTsf ${_i} ${_pkgdir}/usr/bin/${_i##*/} done chmod +x ${_pkgdir}/usr/bin/* #rename visor to skywire - matche the skycoin / skycoin-cli of the skycoin wallet [[ -f ${_pkgdir}/usr/bin/${_pkgname}-visor ]] && ln -rTsf ${_pkgdir}/usr/bin/${_pkgname}-visor ${_pkgdir}/usr/bin/${_pkgname} _msg2 'installing dmsghttp-config.json' install -Dm644 ${srcdir}/${_pkgname}/dmsghttp-config.json ${_pkgdir}/${_skydir}/dmsghttp-config.json _msg2 'installing skywire systemd services' install -Dm644 ${srcdir}/${_scripts}/systemd/* ${_pkgdir}/${_systemddir}/ _msg2 'installing desktop files and icons' mkdir -p ${_pkgdir}/usr/share/applications/ ${_pkgdir}/usr/share/icons/hicolor/48x48/apps/ install -Dm644 ${srcdir}/${_scripts}/desktop/com.skywire.Skywire.desktop ${_pkgdir}/usr/share/applications/com.skywire.Skywire.desktop install -Dm644 ${srcdir}/${_scripts}/desktop/com.skywirevpn.SkywireVPN.desktop ${_pkgdir}/usr/share/applications/com.skywirevpn.SkywireVPN.desktop install -Dm644 ${srcdir}/${_scripts}/desktop/skywire.png ${_pkgdir}/usr/share/icons/hicolor/48x48/apps/skywire.png install -Dm644 ${srcdir}/${_scripts}/desktop/skywirevpn.png ${_pkgdir}/usr/share/icons/hicolor/48x48/apps/skywirevpn.png _msg2 'installing skywire control file, postinst & postrm scripts' install -Dm755 ${srcdir}/control ${_pkgdir}/DEBIAN/control install -Dm755 ${srcdir}/${_scripts}/postinst.sh ${_pkgdir}/DEBIAN/postinst [[ -f ${srcdir}/${_scripts}/postrm.sh ]] && install -Dm755 ${srcdir}/${_scripts}/postrm.sh ${_pkgdir}/DEBIAN/postrm _msg2 'creating the debian package' #create the debian package cd $pkgdir dpkg-deb --build -z9 ${_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" "$@" } _msg3() { (( QUIET )) && return local mesg=$1; shift printf "${BLUE} -->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" }