# Maintainer: Jesus E. _xsecretboxver=1.0.2 _crypto_commit=eec23a3978adcfd26c29f4153eaa3e3d9b2cc53a _servicever=1.0.0 pkgname=dnscrypt-proxy pkgver=2.0.44 pkgrel=3 pkgdesc="A flexible DNS proxy, with support for modern encrypted DNS protocols such as DNSCrypt v2 and DNS-over-HTTP" arch=('i686' 'x86_64') url="https://dnscrypt.info" license=('ISC') depends=('glibc') optdepends=('python-urllib3: for generate-domains-blacklist') makedepends=('gcc-go') install="${pkgname}.install" backup=("etc/${pkgname}/${pkgname}.toml" "etc/${pkgname}/blacklist.txt" "etc/${pkgname}/cloaking-rules.txt" "etc/${pkgname}/forwarding-rules.txt" "etc/${pkgname}/ip-blacklist.txt" "etc/${pkgname}/whitelist.txt") source=("${pkgname}-${pkgver}.tar.gz::https://github.com/dnscrypt/${pkgname}/archive/${pkgver}.tar.gz" "xsecretbox-${_xsecretboxver}.tar.gz::https://github.com/jedisct1/xsecretbox/archive/refs/tags/${_xsecretboxver}.tar.gz" "crypto-${_crypto_commit}.tar.gz::https://github.com/golang/crypto/archive/${_crypto_commit}.tar.gz" "service-${_servicever}.tar.gz::https://github.com/kardianos/service/archive/refs/tags/v${_servicever}.tar.gz" 'dnscrypt-proxy.confd' 'dnscrypt-proxy.initd' 'config-privacy.patch' 'remove-go-systemd-support.patch' 'fix-textflag.h.patch' 'dnscrypt-proxy.run') sha512sums=('009e2b669c1d6f6cd6b41f5e04d08735587f420dacdea8d422a3c12a62614c1ce1963deebca3af1f956070abd9ff5df9182cb27e31fa0fac8a95478739445801' '90a3f0fc6719e91bcc8aaa2edb484659584a76b83292f91740bb01459e9327b1814f60e8bd415e07ece4efa2b9e03eda6b9052598e6628f00ff9c8ab82e5fd8a' '225d2a1c05854c57ee1aac5a9faeb38c79b7878343c7e500c2d23e83a5d2b30f0871ca77fe0b2fcee795045e18e56fb4f2e851a1d81f9d5941a73f45f9afa20e' '4884ab4c69d140d12e2c49ab21dba74647fb8ee8b11a7294b8ec1806768a2fc2976012e8f00bb5be235b009883cb72ec89ea036e18226827a3985ca18a8d91da' '486ccc01e988cc082d1e0f943361ee96c71a8cf2f4b93e4f74e3885701c34b1fcba0ae522fce28d1102ec5818d39f0e6d092229d4793c402cbcde1ee06e30cf2' 'b29918d9909bf8d409c108ca70830a7bfd1f7b03c5d0fa5340a779a8ae552b2a09faf16252371b015f7e50c8bc8535614fbed68503bc53b07b79ce100d506b1a' 'e395df8ee71ebcc1eeccb653c0410bf0f4ce9d3c8c25681f727ba68f210b7ead7efd216635a0b925268ae667cc744b348eea6835927fa74bc377ab0e8f7a9d28' 'b67cfca61d38eb6458a5c4bcea42ec4abe25cc5c5fde8bfee8fc34c5d8585a1553184e84f20bfef0812593a3a0497f7b2eca338b079d2a59ba08ed741aefe13d' '4aa24244196a0c67216a10c1696910978a5dbeb1d4218dd8c4fe7d84e5ccd32dda109267ee2129cda3749be41110667f19f1b6626ffac67355f08e61f2a2e52f' '5fc2e1433193a3c7aef80275716fac626dcad491caebd3b8f950f7e361c39d0caf099317610208b95fc636e6965d91c74be2599b20aac98d59ed6cbe9f9879ce') export GOOS=linux case "$CARCH" in x86_64) export GOARCH=amd64 ;; i686) export GOARCH=386 GO386=387 ;; esac # create a fake go path directory and pushd into it # $1 real directory # $2 gopath directory _fake_gopath_pushd() { install -d -m755 "/build/go/src/${2%/*}" rm -rf "/build/go/src/$2" || true ln -rsT "$1" "/build/go/src/$2" pushd "/build/go/src/$2" >/dev/null } _fake_gopath_popd() { popd >/dev/null } prepare() { cd "$pkgname-$pkgver" # remove support for unsafe and dangerous for privacy protocols patch -Np1 -i $srcdir/config-privacy.patch # fix textflag.h in i686 patch -Np1 -i $srcdir/fix-textflag.h.patch # remove systemD rm -v dnscrypt-proxy/systemd_linux.go || true rm -v dnscrypt-proxy/service_linux.go || true patch -Np1 -i $srcdir/remove-go-systemd-support.patch # use crypto eec23a3978adcfd26c29f4153eaa3e3d9b2cc53a rm -rf vendor/golang.org/x/crypto || true mv -T $srcdir/crypto-${_crypto_commit} vendor/golang.org/x/crypto # use xsecretbox 1.0.2 rm -rv vendor/github.com/jedisct1/xsecretbox || true mv -T $srcdir/xsecretbox-${_xsecretboxver} vendor/github.com/jedisct1/xsecretbox # use service 1.0.0 rm -rf vendor/github.com/kardianos/service || true mv -T $srcdir/service-${_servicever} vendor/github.com/kardianos/service # copy go packages from vendor msg2 "Building golang.org" _fake_gopath_pushd "$srcdir/$pkgname-$pkgver/vendor/golang.org" golang.org _fake_gopath_popd msg2 "Building github.com" _fake_gopath_pushd "$srcdir/$pkgname-$pkgver/vendor/github.com" github.com _fake_gopath_popd msg2 "Building gopkg.in" _fake_gopath_pushd "$srcdir/$pkgname-$pkgver/vendor/gopkg.in" gopkg.in _fake_gopath_popd } build() { cd $pkgname-$pkgver/$pkgname export CGO_CPPFLAGS="${CPPFLAGS}" export CGO_CFLAGS="${CFLAGS}" export CGO_CXXFLAGS="${CXXFLAGS}" export CGO_LDFLAGS="${LDFLAGS}" export GOFLAGS="-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw" go build } package() { local _config cd $pkgname-$pkgver # executable install -vDm 755 "${pkgname}/${pkgname}" "${pkgdir}/usr/sbin/${pkgname}" # config files install -vDm 644 "${pkgname}/example-${pkgname}.toml" "${pkgdir}/etc/${pkgname}/${pkgname}.toml" for _config in {{blacklist,ip-blacklist},{cloaking,forwarding}-rules,whitelist}.txt; do install -vDm 644 "${pkgname}/example-${_config}" "${pkgdir}/etc/${pkgname}/${_config}" done # utils install -vDm 644 utils/generate-domains-blacklists/*.{conf,txt} \ -t "${pkgdir}/usr/share/${pkgname}/utils/generate-domains-blacklists" install -vDm 755 utils/generate-domains-blacklists/generate-domains-blacklist.py \ "${pkgdir}/usr/bin/generate-domains-blacklist" # OpenRC and runit install -Dm644 "$srcdir"/dnscrypt-proxy.confd "$pkgdir"/etc/conf.d/dnscrypt-proxy install -Dm755 "$srcdir"/dnscrypt-proxy.initd "$pkgdir"/etc/init.d/dnscrypt-proxy install -Dm755 "$srcdir/${pkgname}.run" "${pkgdir}/etc/sv/${pkgname}/run" # license install -vDm 644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE" # docs install -vDm 644 {ChangeLog,README.md} -t "${pkgdir}/usr/share/doc/${pkgname}" }