summarylogtreecommitdiffstats
path: root/deb.PKGBUILD
blob: 2f9bd9ef1616bd308a092d700949c43aa6e2a775 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
pkgname=skywire-dmsg
_pkgname=dmsg
_githuborg=skycoin
pkgdesc="Skywire Mainnet Node implementation. Skycoin.com"
pkgver='0.0.1'
_pkgver=${pkgver}
pkgrel=1
_pkgrel=${pkgrel}
arch=( 'i686' 'x86_64' 'aarch64' 'armv8' 'armv7' 'armv7l' 'armv7h' 'armv6h' 'armhf' 'armel' 'arm' )
_pkgarch=$(dpkg --print-architecture)
_pkggopath="github.com/${_githuborg}/${_pkgname}"
url="https://${_pkggopath}"
license=()
makedepends=('git' 'go' 'musl' 'kernel-headers-musl' 'dpkg')
source=("git+${url}.git#branch=${BRANCH:-develop}")
sha256sums=('SKIP')

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
#use musl-gcc for static compilation
export CC=musl-gcc

#create the skywire binaries
cd ${srcdir}/go/src/${_pkggopath}
go mod tidy
go mod vendor

_cmddir=${srcdir}/go/src/${_pkggopath}/cmd
for _i in ${_cmddir}/*/*.go ; do
	_dir=${_i/*skycoin\/dmsg\/}
	_dir=${_dir%\/*}
	cd $_dir
	#temporary fix
	if [[ $_i == *"dmsg-discovery"* ]] ; then
	go get github.com/VictoriaMetrics/metrics
	go get github.com/go-chi/chi/v5
	go get github.com/go-chi/chi/v5/middleware
	go get github.com/go-redis/redis/v8
	go get github.com/json-iterator/go
	go get github.com/pires/go-proxyproto
	go get github.com/sirupsen/logrus
	go get github.com/skycoin/noise
	go get github.com/skycoin/skycoin/src/cipher
	go get github.com/skycoin/skywire-utilities/pkg/buildinfo
	go get github.com/skycoin/skywire-utilities/pkg/cipher
	go get github.com/skycoin/skywire-utilities/pkg/cmdutil
	go get github.com/skycoin/skywire-utilities/pkg/httputil
	go get github.com/skycoin/skywire-utilities/pkg/logging
	go get github.com/skycoin/skywire-utilities/pkg/metricsutil
	go get github.com/skycoin/skywire-utilities/pkg/netutil
	go get github.com/skycoin/skywire-utilities/pkg/networkmonitor
	go get github.com/skycoin/skywire-utilities/pkg/skyenv
	go get github.com/skycoin/yamux
	go get github.com/spf13/cobra
	go get github.com/skycoin/dmsg/internal/dmsg-discovery/store
	fi
	if [[ $_i == *"dmsgpty-cli"* ]] ; then
	go get github.com/skycoin/dmsg/pkg/dmsgpty
	go get golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211
	go get github.com/skycoin/skywire/pkg/skyenv
	go get nhooyr.io/websocket
	go get github.com/VictoriaMetrics/metrics
	go get github.com/go-chi/chi/v5
	go get github.com/go-chi/chi/v5/middleware
	go get github.com/go-redis/redis/v8
	go get github.com/json-iterator/go
	go get github.com/pires/go-proxyproto
	go get github.com/sirupsen/logrus
	go get github.com/skycoin/noise
	go get github.com/skycoin/skycoin/src/cipher
	go get github.com/skycoin/skywire-utilities/pkg/buildinfo
	go get github.com/skycoin/skywire-utilities/pkg/cipher
	go get github.com/skycoin/skywire-utilities/pkg/cmdutil
	go get github.com/skycoin/skywire-utilities/pkg/httputil
	go get github.com/skycoin/skywire-utilities/pkg/logging
	go get github.com/skycoin/skywire-utilities/pkg/metricsutil
	go get github.com/skycoin/skywire-utilities/pkg/netutil
	go get github.com/skycoin/skywire-utilities/pkg/networkmonitor
	go get github.com/skycoin/skywire-utilities/pkg/skyenv
	go get github.com/skycoin/yamux
	go get github.com/spf13/cobra
	fi
	go build -trimpath --ldflags '-s -w -linkmode external -extldflags "-static" -buildid=' -o $GOBIN/ .
	cd ../../
done

### CONTROL FILES CREATION ###
#create control file for the debian package
echo "Package: ${_pkgname}" > ${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 "Maintainer: Moses Narrow" >> ${srcdir}/control
echo "Description: ${pkgdesc}" >> ${srcdir}/control

}

package() {
_debpkgdir="${_pkgname}-${pkgver}-${_pkgrel}-${_pkgarch}"
_pkgdir="${pkgdir}/${_debpkgdir}"
mkdir -p ${_pkgdir}/
_msg2 'installing binaries'
mkdir -p ${_pkgdir}/opt/dmsg/bin/
mkdir -p ${_pkgdir}/usr/bin/

for _i in $GOBIN/* ; do
install -Dm755  $_i ${_pkgdir}/opt/dmsg/bin/
done
for _i in ${_pkgdir}/opt/dmsg/bin/* ; do
ln -rTsf ${_i} ${_pkgdir}/usr/bin/${_i##*\/}
done
_msg2 'installing control file'
install -Dm755 ${srcdir}/control ${_pkgdir}/DEBIAN/control

_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" "$@"
}