summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoses Narrow2019-09-06 16:06:02 -0500
committerMoses Narrow2019-09-06 16:06:02 -0500
commit9b4297837b22ff93879aca898d3d5c56333d9f37 (patch)
tree74ef81a2f1b8b3448cbdc5c537f9edf05c427559
parent2ac641a6cb11a8e4e44eabc6c81817bd3cc228cf (diff)
downloadaur-9b4297837b22ff93879aca898d3d5c56333d9f37.tar.gz
Deterministic Docker Build of the wallet
-rw-r--r--.SRCINFO18
-rw-r--r--Dockerfile20
-rw-r--r--PKGBUILD138
3 files changed, 150 insertions, 26 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 55d139eed27d..31eacf97ff66 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,10 +1,20 @@
pkgbase = skycoin-bin
- pkgdesc = Skycoin Cryptocurrency Wallet; binary release
- pkgver = 0.0.0
+ pkgdesc = Skycoin Cryptocurrency Wallet; Deterministic Build
+ pkgver = 0.26.0
pkgrel = 1
url = https://github.com/skycoin/skycoin
- arch = any
- sha256sums = BINARY RELEASE POSSIBLY COMPROMISED ; DISABLING UNTIL FURTHER NOTICE
+ arch = x86_64
+ makedepends = git
+ makedepends = docker
+ provides = skycoin
+ source = https://github.com/skycoin/skycoin/archive/v0.26.0.tar.gz
+ source = https://dl.google.com/go/go1.13.linux-amd64.tar.gz
+ source = Dockerfile
+ sha256sums = 60f7f2a7c33dbe754ffc74b86de7c2a759e246a83953d4d52fb869d1b3fa1ee2
+ sha256sums = 68a2297eb099d1a76097905a2ce334e3155004ec08cdea85f24527be3c48e856
+ sha256sums = SKIP
pkgname = skycoin-bin
+ options = !strip
+ options = staticlibs
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000000..521ffa857e09
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,20 @@
+FROM debian:stretch
+
+RUN apt-get update && apt-get install -y unzip wget tar ca-certificates git build-essential
+run mkdir /sources
+ADD docker /sources
+RUN mv /sources/go /go
+RUN mkdir -p /opt/go && cp -r /go /opt/go/go1.13
+RUN mv /sources/skycoin* /sources/skycoin
+RUN cd /opt/go/go1.13/src && GOROOT_BOOTSTRAP=/go ./make.bash
+
+ENV PATH "/opt/go/go1.13/bin:$PATH"
+
+RUN mkdir -p /home/skycoin/go/src/github.com/skycoin/
+RUN cp -r /sources/skycoin /home/skycoin/go/src/github.com/skycoin/skycoin
+RUN rm -rf /sources
+RUN cd /home/skycoin/go/src/github.com/skycoin/skycoin
+
+ENV GOPATH /home/skycoin/go
+
+ENTRYPOINT ["go"]
diff --git a/PKGBUILD b/PKGBUILD
index 74fdca384595..caf08e7d38bf 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,20 +1,26 @@
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
# Maintainer: Rudi [KittyCash] <rudi@skycoinmail.com>
+#t.me/Skycoin for inquiries
pkgname=skycoin-bin
pkgname1=skycoin
projectname=skycoin
-pkgdesc="Skycoin Cryptocurrency Wallet; binary release"
+pkgdesc="Skycoin Cryptocurrency Wallet; Deterministic Build"
pkgoption1="gui-standalone-linux-x64"
pkgoption2="gui-standalone-linux-arm"
-pkgver='0.0.0'
+pkgver='0.26.0'
pkggopath="github.com/$projectname/$pkgname1"
pkgrel=1
-arch=('any')
+arch=('x86_64')
url="https://${pkggopath}"
license=()
-makedepends=()
-sha256sums=('BINARY RELEASE POSSIBLY COMPROMISED ; DISABLING UNTIL FURTHER NOTICE')
-#t.me/Skycoin for inquiries
+makedepends=(git docker)
+provides=(skycoin)
+source=("${url}/archive/v${pkgver}.tar.gz"
+"https://dl.google.com/go/go1.13.linux-amd64.tar.gz"
+'Dockerfile')
+sha256sums=('60f7f2a7c33dbe754ffc74b86de7c2a759e246a83953d4d52fb869d1b3fa1ee2'
+'68a2297eb099d1a76097905a2ce334e3155004ec08cdea85f24527be3c48e856'
+'SKIP')
#detect architecture & adjust source & checksums accordingly
#case "$CARCH" in
@@ -29,27 +35,115 @@ sha256sums=('BINARY RELEASE POSSIBLY COMPROMISED ; DISABLING UNTIL FURTHER NOTIC
# ;;
#esac
-#source+=("https://downloads.skycoin.net/wallet/$pkgname1-$pkgver-$_pkgarch.tar.gz")
+ prepare() {
+ # https://wiki.archlinux.org/index.php/Go_package_guidelines
+ mkdir -p ${srcdir}/docker
+ mv ${srcdir}/${pkgname1}-${pkgver} ${srcdir}/docker/${pkgname1}-${pkgver}
+ mv ${srcdir}/go ${srcdir}/docker/go
+
+ cp -b ../Dockerfile ${srcdir}/Dockerfile
+ docker build -t skycoin/wallet:0.26.0 ${srcdir}
+
+ mkdir ${srcdir}/bin
+}
build() {
- msg 2 'creating launcher scripts skycoin-wallet & skycoin-wallet-nohup'
- mkdir -p $srcdir/$pkgname1-scripts
- cd $srcdir/$pkgname1-scripts
- echo -e '#!/bin/bash \n #launch skycoin wallet \n export GOBIN=/usr/lib/skycoin/go/bin \n export GOPATH=GOBIN=/usr/lib/skycoin/go \n skycoin -gui-dir=/usr/lib/skycoin/skycoin/src/gui/static/ -launch-browser=true -enable-all-api-sets=true -enable-gui=true -rpc-interface=false -log-level=debug' > $pkgname1-wallet
- chmod +x $pkgname1-wallet
- echo -e '#!/bin/bash \n #launch skycoin wallet with nohup \n export GOBIN=/usr/lib/skycoin/go/bin \n export GOPATH=GOBIN=/usr/lib/skycoin/go \n nohup skycoin -gui-dir=/usr/lib/skycoin/skycoin/src/gui/static -launch-browser=true -enable-all-api-sets=true -enable-gui=true -log-level=debug > /dev/null 2>&1 &echo "skycoin wallet has started"' > $pkgname1-wallet-nohup
- chmod +x $pkgname1-wallet-nohup
+
+docker run -it --rm -v ${srcdir}:${srcdir} -w ${srcdir} -e CGO_ENABLED=0 skycoin/wallet:0.26.0 build -o ${srcdir}/bin/skycoin github.com/skycoin/skycoin/cmd/skycoin
+docker run -it --rm -v ${srcdir}:${srcdir} -w ${srcdir} -e CGO_ENABLED=0 skycoin/wallet:0.26.0 build -o ${srcdir}/bin/newcoin github.com/skycoin/skycoin/cmd/newcoin
+docker run -it --rm -v ${srcdir}:${srcdir} -w ${srcdir} -e CGO_ENABLED=0 skycoin/wallet:0.26.0 build -o ${srcdir}/bin/cipher-testdata github.com/skycoin/skycoin/cmd/cipher-testdata
+docker run -it --rm -v ${srcdir}:${srcdir} -w ${srcdir} -e CGO_ENABLED=0 skycoin/wallet:0.26.0 build -o ${srcdir}/bin/monitor-peers github.com/skycoin/skycoin/cmd/monitor-peers
+
+sha256sum ${srcdir}/bin/* > ${srcdir}/sha256sums.txt
+
+msg 2 'creating launcher scripts skycoin-wallet & skycoin-wallet-nohup'
+mkdir -p ${srcdir}/${pkgname1}-scripts
+cd ${srcdir}/${pkgname1}-scripts
+#Launch wallet in terminal
+echo -e '#!/bin/bash
+#launch skycoin wallet
+export GOBIN=/usr/lib/skycoin/go/bin
+export GOPATH=GOBIN=/usr/lib/skycoin/go
+skycoin -gui-dir=/usr/lib/skycoin/skycoin/src/gui/static/ -launch-browser=true -enable-all-api-sets=true -enable-gui=true -log-level=debug' > ${pkgname1}-wallet
+chmod +x ${pkgname1}-wallet
+#launch wallet quietly in the background
+echo -e '#!/bin/bash
+#launch skycoin wallet with nohup
+export GOBIN=/usr/lib/skycoin/go/bin
+export GOPATH=GOBIN=/usr/lib/skycoin/go
+nohup skycoin -gui-dir=/usr/lib/skycoin/skycoin/src/gui/static -launch-browser=true -enable-all-api-sets=true -enable-gui=true -log-level=debug > /dev/null 2>&1 &echo "skycoin wallet has started"' > ${pkgname1}-wallet-nohup
+chmod +x ${pkgname1}-wallet-nohup
+#Launch skycoin daemon
+echo -e '#!/bin/bash
+#launch skycoin daemon
+export GOBIN=/usr/lib/skycoin/go/bin
+export GOPATH=GOBIN=/usr/lib/skycoin/go \n skycoin -gui-dir=/usr/lib/skycoin/skycoin/src/gui/static/ -enable-gui=false -launch-browser=false -log-level=debug -enable-all-api-sets=true' > ${pkgname1}-node
+chmod +x ${pkgname1}-node
+#stop skycoin
+echo -e '#!/bin/bash
+#halt skycoin
+sudo killall skycoin
+sudo killall cli
+sudo killall cipher-testdata
+sudo killall newcoin
+sudo killall monitor-peers
+echo "skycoin halted"' > ${pkgname1}-halt
+chmod +x ${pkgname1}-halt
+#
+msg 2 'creating system.d .service files'
+#these service files point to skywire & skywire-node-miner scripts from above
+#the systemd service files included with skywire are wrong for archlinux (debian formatted)
+cd ${srcdir}/
+echo -e '[Unit]
+Description=Skycoin Node service
+After=network.target
+After=network-online.target
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/skycoin-node
+RemainAfterExit=yes
+ExecStop=/usr/bin/skycoin-halt
+TryExec=/usr/bin/skycoin
+
+[Install]
+WantedBy=multi-user.target' > ${pkgname1}-node.service
}
+#TO DO
+#check() {
+#}
+
package() {
-msg2 'installing files'
-install -Dm755 $srcdir/$pkgname1-$pkgver-$_pkgarch/$pkgname1 $pkgdir/usr/lib/$projectname/go/bin/$pkgname1
-mkdir -p $pkgdir/usr/bin
-ln -rTsf $pkgdir/usr/lib/$projectname/go/bin/$pkgname1 $pkgdir/usr/bin/$pkgname1
-chmod 755 $pkgdir/usr/bin/$pkgname1
-cp -r $srcdir/$pkgname1-$pkgver-$_pkgarch $pkgdir/usr/lib/$projectname/$pkgname1
-skycoinscripts=$( ls $srcdir/$pkgname1-scripts )
+options=(!strip staticlibs)
+#create directory trees
+mkdir -p ${pkgdir}/usr/bin
+mkdir -p ${pkgdir}/usr/lib/${projectname}/go/bin
+mkdir -p ${pkgdir}/usr/lib/${projectname}/${pkgname1}/src/gui
+#install binaries & symlink to /usr/bin
+msg2 'installing binaries'
+skybin=${srcdir}/bin
+#avoid generic names for binaries
+#collect the binaries & install
+skybins=$( ls "$skybin")
+for i in $skybins; do
+ install -Dm755 ${srcdir}/bin/$i ${pkgdir}/usr/lib/${projectname}/go/bin/$i
+ ln -rTsf ${pkgdir}/usr/lib/${projectname}/go/bin/$i ${pkgdir}/usr/bin/$i
+ chmod 755 ${pkgdir}/usr/bin/$i
+done
+#install the web dir (UI)
+cp -r ${srcdir}/docker/${pkgname1}-${pkgver}/src/gui/static ${pkgdir}/usr/lib/${projectname}/${pkgname1}/src/gui
+#install the scripts
+skycoinscripts=$( ls ${srcdir}/${pkgname1}-scripts )
for i in $skycoinscripts; do
-cp $srcdir/$pkgname1-scripts/$i $pkgdir/usr/bin/$i
+cp ${srcdir}/${pkgname1}-scripts/$i ${pkgdir}/usr/bin/$i
+done
+#make symlinks have less generic names
+namechange=$(ls --ignore='skycoin*' ${pkgdir}/usr/bin/)
+for i in $namechange; do
+mv ${pkgdir}/usr/bin/$i ${pkgdir}/usr/bin/${pkgname1}-$i
done
+#install the system.d service
+install -Dm644 ${srcdir}/${pkgname1}-node.service ${pkgdir}/usr/lib/systemd/system/${pkgname1}-node.service
}
+
+#previous #source+=("https://downloads.skycoin.net/wallet/$pkgname1-$pkgver-$_pkgarch.tar.gz")