Files
extra/dnscrypt-proxy/PKGBUILD
2025-06-22 20:39:04 -05:00

139 lines
5.9 KiB
Bash

# Maintainer: Jesus E. <heckyel@riseup.net>
_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}"
}