summarylogtreecommitdiffstats
path: root/deb.PKGBUILD
blob: 2a4abd5a0f744c703ada53000c3624c988e09be7 (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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# Maintainer: Moses Narrow <moe_narrow@use.startmail.com>
# Maintainer: Rudi [KittyCash] <rudi@skycoinmail.com>
_pkgname=privateness
pkgname=${_pkgname}
_githuborg=NESS-Network
pkgdesc=".deb build for NESS Core and Wallet. privateness.network"
#set to native architecture with dpkg
_pkgarch=$(dpkg --print-architecture)
#Uncoment to select architecture - cross compile not working currently
#_pkgarch=amd64
#_pkgarch=arm64
#_pkgarch=armhf
#leave arch package as any
arch=('any')
#manually version for now
_pkgver=0.27.1
#_tag_ver=0.27.1
pkgver=${_pkgver}
#pkgver='autogenerated'
#pkgrel keeps getting reset when build is run
_pkgrel=1
#pkgrel=1
pkgrel=${_pkgrel}
_pkggopath="github.com/${_githuborg}/${_pkgname}"
url="https://${_pkggopath}"
license=()
#make deps for every architecture are included here..
makedepends=('dpkg' 'git' 'go' 'musl' 'kernel-headers-musl') #'aarch64-linux-musl' 'arm-linux-gnueabihf-musl' 'skycoin-keyring')
depends=()
source=("git+${url}.git" ##branch=${BRANCH:-develop}"
"ness-wallet.sh"  )
sha256sums=('SKIP'
            '23babd4af4ebdff1fb914161bcec54cfa9307a5f26fc74ae388f5b131335efb2')
#            'SKIP'
#            'SKIP')
#validpgpkeys=('DE08F924EEE93832DABC642CA8DC761B1C0C0CFC')  # Moses Narrow <moe_narrow@use.startmail.com>

prepare() {
#skip signature verification for now because yay handles it differently than makepkg
	#verify PKGBUILD signature
#	gpg --verify ${srcdir}/deb.PKGBUILD.sig ${srcdir}/deb.PKGBUILD

  # https://wiki.archlinux.org/index.php/Go_package_guidelines
	mkdir -p ${srcdir}/go/src/github.com/${_githuborg}/ ${srcdir}/go/bin.${_pkgarch} ${srcdir}/go/apps.${_pkgarch}
  ln -rTsf ${srcdir}/${_pkgname} ${srcdir}/go/src/${_pkggopath}
  cd ${srcdir}/go/src/${_pkggopath}/
}

build() {
local GOPATH=${srcdir}/go
local GOBIN=${GOPATH}/bin.${_pkgarch}
local _GOAPPS=${GOPATH}/apps.${_pkgarch}
local GOOS=linux
export CC=musl-gcc
  #static cross-compilation
  #[[ $_pkgarch == "amd64" ]] && local GOARCH=amd64 && local CC=musl-gcc
  #[[ $_pkgarch == "arm64" ]] && local GOARCH=arm64 && local CC=aarch64-linux-musl-gcc
  #[[ $_pkgarch == "armhf" ]] && local GOARCH=arm && local GOARM=6 && local CC=arm-linux-gnueabihf-musl-gcc

#_ldflags=('-linkmode external -extldflags "-static" -buildid=')

#create the skywire binaries
cd ${srcdir}/go/src/${_pkggopath}
_cmddir=${srcdir}/go/src/${_pkggopath}/cmd

_buildbins address_gen
_buildbins cipher-testdata
_buildbins monitor-peers
_buildbins newcoin
_buildbins privateness
_buildbins privateness-cli
#binary transparency
cd $GOBIN
_msg2 'binary sha256sums'
sha256sum $(ls)


#create control file for the debian package
echo "Package: privateness" > ${srcdir}/${_pkgarch}.control
echo "Version: ${_pkgver}-${_pkgrel}" >> ${srcdir}/${_pkgarch}.control
echo "Priority: optional" >> ${srcdir}/${_pkgarch}.control
echo "Section: web" >> ${srcdir}/${_pkgarch}.control
echo "Architecture: ${_pkgarch}" >> ${srcdir}/${_pkgarch}.control
#echo "Depends: ${_debdeps}" >> ${srcdir}/${_pkgarch}.control
echo "Maintainer: github.com/NESS-network" >> ${srcdir}/${_pkgarch}.control
echo "Description: ${pkgdesc}" >> ${srcdir}/${_pkgarch}.control
}

#I had to speed up the build for testing but there's a risk of using old binaries.
#will change this when the commit for the build tracks a branch
_buildbins() {
_GOHERE=$GOBIN  #target bin dir
_binpath=$3   #find the binary here- expecting 'apps/' or empty
_binname=$1 #which binary to build
_msg2 "building ${_binname} binary"
if [[ ! -f ${_GOHERE}/${_binname} ]] ; then #don't waste time rebuilding existing bins
	cd ${_cmddir}/${_binpath}${_binname}
  go build -trimpath --ldflags '-s -w -linkmode external -extldflags "-static" -buildid=' -o $_GOHERE/ .
fi
}


package() {
_msg2 'creating dirs'
#set up to create a .deb package
_debpkgdir="${_pkgname}-${pkgver}-${_pkgrel}-${_pkgarch}"
_pkgdir="${pkgdir}/${_debpkgdir}"
_nessdir="opt/privateness"
_nessbin="${_nessdir}/bin"
#create directory trees
_nesssrcdir=${srcdir}/${_pkgname}
_nesspath=${_pkgdir}/${_nessdir}
_nessgobin=${_nesspath}/bin
_nessguidir=${_nesspath}/src/gui
mkdir -p ${_pkgdir}/usr/bin
mkdir -p ${_nessgobin}
mkdir -p ${_nessguidir}
#install binaries & symlink to /usr/bin
_msg2 'installing binaries'
_nessbin=${srcdir}/go/bin
#collect the binaries & install
_nessbins=$( ls "$_nessbin")
for i in $_nessbins; do
  install -Dm755 ${srcdir}/go/bin.${_pkgarch}/${i} ${_nessgobin}/${i}
  ln -rTsf ${_nessgobin}/$i ${_pkgdir}/usr/bin/${i}
  chmod 755 ${_pkgdir}/usr/bin/${i}
done
_msg2 'installing gui sources'
#install the web dir (UI)
cp -r ${_nesssrcdir}/src/gui/static ${_nessguidir}
_msg2 'installing scripts'
#install the scripts
#_nessscripts=$( ls --ignore=*.service ${srcdir}/${_pkgname}-scripts/ )
#for i in $_nessscripts; do
  install -Dm755 ${srcdir}/ness-wallet.sh ${_nessgobin}/ness-wallet
  ln -rTsf ${_nessgobin}/ness-wallet ${_pkgdir}/usr/bin/ness-wallet
  chmod 755 ${_pkgdir}/usr/bin/ness-wallet
#done
#_msg2 'installing systemd services'
#install the system.d service
#  install -Dm644 ${srcdir}/${_pkgname}-scripts/${_pkgname}-node.service ${pkgdir}/usr/lib/systemd/system/${_pkgname}-node.service
_msg2 'correcting symlink names'
#correct symlink names
cd ${_pkgdir}/usr/bin/
mv newcoin privateness-newcoin
mv address_gen privateness-address-gen
mv cipher-testdata privateness-cipher-testdata
mv monitor-peers privateness-monitor-peers
_msg2 'available binaries and scripts in /usr/bin :'
ls

_msg2 'installing control file'
install -Dm755 ${srcdir}/${_pkgarch}.control ${_pkgdir}/DEBIAN/control
#install -Dm755 ${srcdir}/${_scripts}/postinst.sh ${_pkgdir}/DEBIAN/postinst
#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
}

#_install2() {
#_binname="${1##*/}"
#_binname="${_binname%%.*}"
#install -Dm755 ${1} ${_pkgdir}/${2}/${_binname}
#ln -rTsf ${_pkgdir}/${2}/${_binname} ${_pkgdir}/usr/bin/${_binname}
#chmod +x ${_pkgdir}/usr/bin/${_binname}
#}

_msg2() {
	(( QUIET )) && return
	local mesg=$1; shift
	printf "${BLUE}  ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@"
}