Skip to content

Commit

Permalink
revisions for PR#366
Browse files Browse the repository at this point in the history
Former-commit-id: 3ea2c02
  • Loading branch information
0pcom committed Jun 3, 2020
1 parent 381adb7 commit b75a269
Show file tree
Hide file tree
Showing 4 changed files with 150 additions and 52 deletions.
54 changes: 3 additions & 51 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -160,61 +160,13 @@ release: ## Build `skywire-visor`, `skywire-cli`, `hypervisor` and apps without
${OPTS} go build ${BUILD_OPTS} -o ./apps/vpn-client ./cmd/apps/vpn-client

package-amd64: ## Build the debian package. USE ROOT FOR THIS.
mkdir -p ${PACKAGEDIR}/DEBIAN ${PACKAGEDIR}/usr/bin ${PACKAGEDIR}/etc/systemd/system
cp -b static/*.service ${PACKAGEDIR}/etc/systemd/system/
echo "Package: skywire" > ${PACKAGEDIR}/DEBIAN/control
echo "Version: ${PACKAGEVERSION}" >> ${PACKAGEDIR}/DEBIAN/control
echo "Priority: optional" >> ${PACKAGEDIR}/DEBIAN/control
echo "Section: web" >> ${PACKAGEDIR}/DEBIAN/control
echo "Architecture: amd64" >> ${PACKAGEDIR}/DEBIAN/control
echo "Maintainer: SkycoinProject" >> ${PACKAGEDIR}/DEBIAN/control
echo "Description: Skywire Mainnet Node implementation" >> ${PACKAGEDIR}/DEBIAN/control
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/skywire-visor ./cmd/skywire-visor
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/skywire-cli ./cmd/skywire-cli
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/skywire-hypervisor ./cmd/hypervisor
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/apps/skychat ./cmd/apps/skychat
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/apps/skysocks ./cmd/apps/skysocks
${OPTS} go build ${BUILD_OPTS} -o ./${PACKAGEDIR}/usr/bin/apps/skysocks-client ./cmd/apps/skysocks-client
dpkg-deb --build ${PACKAGEDIR}
rm -rf ${PACKAGEDIR}
./dPKGBUILD.sh amd64

package-arm64: ## Build the debian package. USE ROOT FOR THIS.
mkdir -p ${PACKAGEDIRARM64}/DEBIAN ${PACKAGEDIRARM64}/usr/bin ${PACKAGEDIRARM64}/etc/systemd/system
cp -b static/*.service ${PACKAGEDIRARM64}/etc/systemd/system/
echo "Package: skywire" > ${PACKAGEDIRARM64}/DEBIAN/control
echo "Version: ${PACKAGEVERSION}" >> ${PACKAGEDIRARM64}/DEBIAN/control
echo "Priority: optional" >> ${PACKAGEDIRARM64}/DEBIAN/control
echo "Section: web" >> ${PACKAGEDIRARM64}/DEBIAN/control
echo "Architecture: arm64" >> ${PACKAGEDIRARM64}/DEBIAN/control
echo "Maintainer: SkycoinProject" >> ${PACKAGEDIRARM64}/DEBIAN/control
echo "Description: Skywire Mainnet Node implementation" >> ${PACKAGEDIRARM64}/DEBIAN/control
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/skywire-visor ./cmd/skywire-visor
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/skywire-cli ./cmd/skywire-cli
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/skywire-hypervisor ./cmd/hypervisor
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/apps/skychat ./cmd/apps/skychat
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/apps/skysocks ./cmd/apps/skysocks
${OPTS} env GOOS=linux GOARCH=arm64 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARM64}/usr/bin/apps/skysocks-client ./cmd/apps/skysocks-client
dpkg-deb --build ${PACKAGEDIRARM64}
rm -rf ${PACKAGEDIRARM64}
./dPKGBUILD.sh arm64

package-armhf: ## Build the debian package. USE ROOT FOR THIS.
mkdir -p ${PACKAGEDIRARMHF}/DEBIAN ${PACKAGEDIRARMHF}/usr/bin ${PACKAGEDIRARMHF}/etc/systemd/system
cp -b static/*.service ${PACKAGEDIRARMHF}/etc/systemd/system/
echo "Package: skywire" > ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Version: ${PACKAGEVERSION}" >> ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Priority: optional" >> ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Section: web" >> ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Architecture: armhf" >> ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Maintainer: SkycoinProject" >> ${PACKAGEDIRARMHF}/DEBIAN/control
echo "Description: Skywire Mainnet Node implementation" >> ${PACKAGEDIRARMHF}/DEBIAN/control
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/skywire-visor ./cmd/skywire-visor
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/skywire-cli ./cmd/skywire-cli
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/skywire-hypervisor ./cmd/hypervisor
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/apps/skychat ./cmd/apps/skychat
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/apps/skysocks ./cmd/apps/skysocks
${OPTS} env GOOS=linux GOARCH=arm GOARM=6 go build ${BUILD_OPTS} -o ./${PACKAGEDIRARMHF}/usr/bin/apps/skysocks-client ./cmd/apps/skysocks-client
dpkg-deb --build ${PACKAGEDIRARMHF}
rm -rf ${PACKAGEDIRARMHF}
./dPKGBUILD.sh armhf

all-packages: package-amd64 package-arm64 package-armhf

Expand Down
146 changes: 146 additions & 0 deletions dPKGBUILD.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
#!/usr/bin/bash
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
#create the debian package
#adapted from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=skywire-git
#usage: ./dPKGBUILD.sh architecture
pkgname=skywire
pkgdesc="Skywire Mainnet Node implementation. Skycoin.com"
pkgver=$(git describe --abbrev=0 | tr --delete v)
#increment pkgrel with any changes ; reset on updated version
pkgrel=1
#default to the system architecture if not provided as an argument to this script
if [ -z $1 ]; then
pkgarch=$(dpkg --print-architecture)
else
pkgarch=$1
fi
#support non-native builds for additional architectures here
[ $pkgarch == "amd64" ] && buildwith=(env GOOS=linux GOARCH=amd64)
[ $pkgarch == "arm64" ] && buildwith=(env GOOS=linux GOARCH=amd64)
[ $pkgarch == "armhf" ] && buildwith=(env GOOS=linux GOARCH=arm GOARM=6)

pkggopath="github.com/${githuborg}/skywire-mainnet"

#srcdir and pkgdir are understood by makepkg on Arch
sourcedir=$(pwd)
sourcedir=${sourcedir}
srcdir=${sourcedir}/src
pkgdir=${sourcedir}/${pkgname}-${pkgver}-${pkgrel}-${pkgarch}

#add build deps here
makedepends=(go npm install)
#add any runtime deps here
depends=()

#check for make dependancies
for t in ${makedepends} ; do
if [ -z "$(command -v "${t}")" ] ; then
# not found
error "Missing make dependancy '${t}'"
error "Please install it and run this script again."
return 1
fi
done

info()
{
printf '\033[0;32m[ INFO ]\033[0m %s\n' "${FUNCNAME[1]}: ${1}"
}

prepare() {
#how to package golang applications on archlinux:
# 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 ${sourcedir} ${srcdir}/go/src/${pkggopath}
ln -rTsf ${sourcedir} ${srcdir}/skywire-mainnet
}


build() {
export GOPATH=${srcdir}/go
export GOBIN=${GOPATH}/bin
export GOAPPS=${GOPATH}/apps
export PATH=${GOPATH}/bin:${PATH}
cd ${srcdir}/go/src/${pkggopath}
#build hypervisor UI
make install-deps-ui
make lint-ui
make build-ui
info 'building binaries'
cmddir=${srcdir}/go/src/${pkggopath}/cmd
#using go build like this results in determinism
cd ${cmddir}/apps/skychat
info 'building skychat binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOAPPS/ .
cd ${cmddir}/apps/skysocks
info 'building skysocks binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOAPPS/ .
cd ${cmddir}/apps/skysocks-client
info 'building skysocks-client binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOAPPS/ .
cd ${cmddir}/skywire-visor
info 'building skywire-visor binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOBIN/ .
cd ${cmddir}/skywire-cli
info 'building skywire-cli binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOBIN/ .
cd ${cmddir}/setup-node
info 'building setup-node binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOBIN/ .
cd ${cmddir}/hypervisor
info 'building hypervisor binary'
${buildwith} go build -trimpath -ldflags '-extldflags ${LDFLAGS}' -ldflags=-buildid= -o $GOBIN/ .
#binary transparency
#cd $GOBIN
#info 'binary sha256sums'
#sha256sum $(ls)
#cd $GOAPPS
#sha256sum $(ls)
}

package() {
#create directory trees
sudo mkdir -p ${pkgdir}/usr/bin/apps
sudo mkdir -p ${pkgdir}/etc/skywire
sudo mkdir -p ${pkgdir}/DEBIAN
#create control file
echo "Package: ${pkgname}" > ${srcdir}/control
echo "Version: ${pkgver}" >> ${srcdir}/control
echo "Priority: optional" >> ${srcdir}/control
echo "Section: web" >> ${srcdir}/control
echo "Architecture: ${pkgarch}" >> ${srcdir}/control
echo "Maintainer: SkycoinProject" >> ${srcdir}/control
echo "Description: ${pkgdesc}" >> ${srcdir}/control
info 'installing binaries'
sudo mv ${srcdir}/control ${pkgdir}/DEBIAN/control
#install binaries
sudo install -Dm755 ${srcdir}/go/bin/hypervisor ${pkgdir}/usr/bin/skywire-hypervisor
sudo install -Dm755 ${srcdir}/go/bin/skywire-visor ${pkgdir}/usr/bin/skywire-visor
sudo install -Dm755 ${srcdir}/go/bin/skywire-cli ${pkgdir}/usr/bin/skywire-cli
sudo install -Dm755 ${srcdir}/go/apps/skychat ${pkgdir}/usr/bin/apps/skychat
sudo install -Dm755 ${srcdir}/go/apps/skysocks ${pkgdir}/usr/bin/apps/skysocks
sudo install -Dm755 ${srcdir}/go/apps/skysocks-client ${pkgdir}/usr/bin/apps/skysocks-client
#install the system.d services
sudo install -Dm644 ${srcdir}/skywire-mainnet/init/skywire-hypervisor.service ${pkgdir}/etc/systemd/system/skywire-hypervisor.service
sudo install -Dm644 ${srcdir}/skywire-mainnet/init/skywire-visor.service ${pkgdir}/etc/systemd/system/skywire-visor.service
#create the debian package
dpkg-deb --build ${pkgdir}
}

main_build()
{
prepare || error "Failure occured in prepare()" return 1

build || error "Failure occured in build()" return 1

package || error "Failure occured in package()" return 1

sudo rm -rf $pkgdir $srcdir
}


case "$1" in
*)
main_build || (error "Failed." && exit 1)
;;
esac
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ After=network.target
Type=simple
User=root
Group=root
ExecStart=/usr/bin/skywire-visor /etc/skywire-visor.json
ExecStart=/usr/bin/skywire-visor -c /etc/skywire-visor.json
Restart=on-failure
RestartSec=20
TimeoutSec=30
Expand Down

0 comments on commit b75a269

Please sign in to comment.