summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 02bc21592c374f2206e30355321ab9a394e978ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
# Maintainer: Steve Skydev <steve@skycoin.net>
projectname=skycoin
pkgname=skywire-mainnet
pkgname1=skywire
pkgdesc="Skywire: Building a New Internet. Skycoin.net"
pkgver='autogenerated'
pkggopath="github.com/$projectname/$pkgname1"
pkgrel=1
arch=('x86_64' 'i686' 'armv6h' 'armv7h' 'aarch64')
url="https://${pkggopath}"
license=(MIT)
makedepends=(dep git go gcc)
provides=('skywire')
conflicts=('skywire')
source=("git+${url}.git#branch=${BRANCH:-mainnet}")
sha256sums=('SKIP')
validpgpkeys=('DE08F924EEE93832DABC642CA8DC761B1C0C0CFC')

export GOOS=linux
case "$CARCH" in
  x86_64) export GOARCH=amd64 ;;
esac
export GOROOT_FINAL=/usr/lib/go
export GOPATH_FINAL=$HOME/go
export GOBIN_FINAL=$HOME/go/bin

pkgver() {
	cd "$srcdir/$pkgname1"
	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 "$date.${count}_$commit"
}

prepare() {
  # https://wiki.archlinux.org/index.php/Go_package_guidelines

  mkdir -p $srcdir/go/src/${pkggopath//$pkgname1/} "$srcdir"/go/bin
  ln -rTsf $srcdir/$pkgname1 $srcdir/go/src/$pkggopath
  cd $srcdir/go/src/$pkggopath/
  git checkout mainnet
  git submodule --quiet update --init --recursive

  export GOPATH="$srcdir"/go
  export GOBIN=${GOPATH}/bin
  export PATH=${GOPATH}/bin:${PATH}
  msg2 'installing go dependencies'
  dep init
  dep ensure
}

build() {
  export GOPATH=$srcdir/go
  export GOBIN=${GOPATH}/bin
  export PATH=${GOPATH}/bin:${PATH}
  cd $srcdir/go/src/$pkggopath
  GO111MODULE=on go install \
  -gcflags "all=-trimpath=${GOPATH}" \
  -asmflags "all=-trimpath=${GOPATH}" \
  -ldflags "-extldflags $LDFLAGS" \
  -v ./...
  mkdir skywire
  mkdir apps
  # Build apps.
  GO111MODULE=on go build -o ./apps/chat.v1.0 ./cmd/apps/chat
  GO111MODULE=on go build -o ./apps/helloworld.v1.0 ./cmd/apps/helloworld
  GO111MODULE=on go build -o ./apps/therealproxy.v1.0 ./cmd/apps/therealproxy
  GO111MODULE=on go build -o ./apps/therealproxy-client.v1.0  ./cmd/apps/therealproxy-client
  GO111MODULE=on go build -o ./apps/therealssh.v1.0  ./cmd/apps/therealssh
  GO111MODULE=on go build -o ./apps/therealssh-client.v1.0  ./cmd/apps/therealssh-client

  #user must generate default json config by running this script after install
  echo -e '#!/bin/bash \n # this script sets up skywire after installation \n mkdir -p ~/skywire \n sudo chmod 777 ~/skywire \n sudo chmod 777 ~/apps \n cd ~/ \n ln -s /usr/lib/skycoin/skywire/apps ~/ \n skywire-cli config \n skywire-node skywire.json' > $srcdir/go/bin/$pkgname1-setup
  chmod +x $srcdir/go/bin/$pkgname1-setup
}

package() {
  msg2 'installing files'
  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/
  #putting the sources in /usr/lib/skycoin/skywire
  cp -r $srcdir/$pkgname1/ $pkgdir/usr/lib/$projectname/
  #restate go envs
  export GOPATH=$pkgdir/usr/lib/$projectname/go
  export GOBIN=$pkgdir/usr/lib/$projectname/go/bin
  #put all bins in /go/bin
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/chat.v1.0 $srcdir/go/bin/skywire-chat
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/helloworld.v1.0 $srcdir/go/bin/skywire-helloworld
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/therealproxy.v1.0 $srcdir/go/bin/skywire-therealproxy
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/therealproxy-client.v1.0 $srcdir/go/bin/skywire-therealproxy-client
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/therealssh.v1.0 $srcdir/go/bin/skywire-therealssh
  cp $srcdir/go/src/github.com/skycoin/skywire/apps/therealssh-client.v1.0 $srcdir/go/bin/skywire-therealssh-client
  #mke sure all the binaries are prepended with 'skywire-'
  skybins="$srcdir"/go/bin
  potentialnameconflicts=$( ls --ignore=skywire* "$skybins")
  cd $skybins
  for i in $potentialnameconflicts; do
      mv $i $pkgname1-$i
  done
  #now symlink binaries to /usr/bin
  skywirebins=$( ls $skybins )
  for i in $skywirebins; do
    install -Dm755 $srcdir/go/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
  msg2 'please run skywire-setup after installing this package'
}