summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD168
1 files changed, 129 insertions, 39 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 6d3942a4e4d6..207200fdd8d4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,58 +1,148 @@
+# Maintainer: Carl Smedstad <carl.smedstad at protonmail dot com>
# Maintainer: Ali Molaei <ali dot molaei at protonmail dot com>
# Maintainer: Ben Westover <me at benthetechguy dot net>
# Contributor: Lenovsky <lenovsky at pm dot me>
# Contributor: aimileus <me at aimileus dot nl>
pkgname=protonmail-bridge
+_name=proton-bridge
pkgver=3.6.1
-pkgrel=2
+pkgrel=3
pkgdesc="Integrate ProtonMail paid account with any program that supports IMAP and SMTP"
-arch=('x86_64')
-url="https://protonmail.com/bridge"
-license=('GPL3')
-makedepends=('go' 'cmake' 'ninja' 'zip' 'qt6-base' 'git' 'python' 'unzip')
-depends=('hicolor-icon-theme' 'libsecret' 'libglvnd' 'icu' 'qt6-declarative' 'qt6-svg' 'qt6-wayland')
+arch=(x86_64)
+url="https://github.com/ProtonMail/proton-bridge"
+license=(GPL3)
+depends=(
+ abseil-cpp
+ gcc-libs
+ glib2
+ glibc
+ grpc
+ hicolor-icon-theme
+ libsecret
+ protobuf
+ qt6-base
+ qt6-declarative
+ qt6-svg
+ sentry-native
+)
+makedepends=(
+ cmake
+ go
+)
optdepends=(
- 'org.freedesktop.secrets: Applications that support Freedesktop secrets api'
- 'gnome-keyring: gnome-keyring support'
- 'pass: pass support'
+ 'gnome-keyring: gnome-keyring support'
+ 'org.freedesktop.secrets: Applications that support Freedesktop secrets api'
+ 'pass: pass support'
+ 'qt6-wayland: Wayland support'
+)
+
+source=(
+ "$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz"
+ "protonmail-bridge.desktop"
+ "remove-vcpkg-dependency.patch"
+)
+sha256sums=(
+ '2dd18b5460fff9c84edaf3eb7401357e8d311c3e63564db8c5adcb63e54877af'
+ '404db600803b9be875365d84e0726c3f7aedceaf122a795ca2248ee9f005753b'
+ '436a9a293424fb7d48a8fd61fff7d63985dec56d6170cd2fbae24fe03ef98136'
)
-conflicts=('protonmail-bridge-bin')
-options=('!emptydirs' '!strip')
-
-source=("git+https://github.com/ProtonMail/proton-bridge.git#tag=v${pkgver}"
- "git+https://github.com/microsoft/vcpkg.git"
- "protonmail-bridge.desktop"
- "qt-dir.patch"
- "modern-icu.patch")
-sha256sums=('SKIP'
- 'SKIP'
- '226bc140ec5c34cfdff42b33058d045446a4006518d2660db932c7f51632b48a'
- '60175b564bdf1f7e3e51933748019e4335054c72f08cdf4c453a00437fdc93a8'
- '3adae43253c1e8a60f0e74df4592de280a1827a914514b46cbe7f36cea6856b2')
+
+_archive="$_name-$pkgver"
prepare() {
- cd proton-bridge
- git submodule init
- git config submodule.submodules/vcpkg.url "$srcdir/vcpkg"
- git -c protocol.file.allow=always submodule update
+ cd "$_archive"
- cat ../qt-dir.patch | patch -p1
- cat ../modern-icu.patch | patch -p1
+ patch --forward --strip 1 --input "$srcdir/remove-vcpkg-dependency.patch"
+
+ # Use system Qt rather than bundling it
+ rm internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake
+ touch internal/frontend/bridge-gui/bridge-gui/DeployLinux.cmake
+
+ # Avoid downloading Go dependencies in build() by doing it here instead
+ go mod download -x
}
-build(){
- export PATH=$PATH:$(go env GOPATH)/bin/
- cd proton-bridge
- make build
+build() {
+ cd "$_archive"
+
+ (
+ cd ./utils/
+ ./credits.sh bridge
+ )
+
+ export CGO_CPPFLAGS="${CPPFLAGS}"
+ export CGO_CFLAGS="${CFLAGS}"
+ export CGO_CXXFLAGS="${CXXFLAGS}"
+ export CGO_LDFLAGS="${LDFLAGS}"
+ export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
+
+ _ld_flags=" \
+ -X github.com/ProtonMail/proton-bridge/v3/internal/constants.Version=$pkgver \
+ -X github.com/ProtonMail/proton-bridge/v3/internal/constants.Revision=NOGIT \
+ -X github.com/ProtonMail/proton-bridge/v3/internal/constants.Tag=$pkgver \
+ -X github.com/ProtonMail/proton-bridge/v3/internal/constants.BuildTime= \
+ -X 'github.com/ProtonMail/proton-bridge/v3/internal/constants.FullAppName=Proton Mail Bridge' \
+ -X 'github.com/ProtonMail/proton-bridge/v3/internal/constants.BuildEnv=Arch Linux' \
+ "
+
+ go build -v \
+ -ldflags "$_ld_flags" \
+ -o bridge \
+ ./cmd/Desktop-Bridge/
+
+ cmake \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_RPATH=YES \
+ -Wno-dev \
+ -DBRIDGE_APP_FULL_NAME='Proton Mail Bridge' \
+ -DBRIDGE_VENDOR='Proton AG' \
+ -DBRIDGE_REVISION=NOGIT \
+ -DBRIDGE_TAG=$pkgver \
+ -DBRIDGE_DSN_SENTRY= \
+ -DBRIDGE_BUILD_ENV='Arch Linux' \
+ -DBRIDGE_APP_VERSION=$pkgver \
+ -S internal/frontend/bridge-gui/bridge-gui \
+ -B build
+ cmake --build build
+}
+
+check() {
+ cd "$_archive"
+
+ cmake --build build --target bridgepp-test
+ ./build/bridgepp/bridgepp-test
+
+ # Skip long-running tests or tests interacting with the keyring
+ _unit_tests=$(
+ go list ./internal/... ./pkg/... \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/app' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/bridge' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/dialer' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/services' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/user' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/usertypes' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/internal/vault' \
+ | grep -v 'github.com/ProtonMail/proton-bridge/v3/pkg/keychain' \
+ | sort
+ )
+
+ # shellcheck disable=SC2086
+ go test -count=1 $_unit_tests
}
package() {
- mkdir -p "${pkgdir}"/opt
- mkdir -p "${pkgdir}"/usr/bin
- cp -r proton-bridge/cmd/Desktop-Bridge/deploy/linux/ "${pkgdir}"/opt/protonmail-bridge
- install -D -m644 "${pkgdir}"/opt/protonmail-bridge/LICENSE -t "${pkgdir}"/usr/share/licenses/"${pkgname}"/
- install -D -m644 "${pkgdir}"/opt/protonmail-bridge/logo.svg "${pkgdir}"/usr/share/icons/hicolor/scalable/apps/"${pkgname}".svg
- install -D -m644 "${srcdir}"/protonmail-bridge.desktop -t "${pkgdir}"/usr/share/applications/
- ln -s "/opt/protonmail-bridge/proton-bridge" "$pkgdir/usr/bin/protonmail-bridge"
+ cd "$_archive"
+
+ install -Dm644 -t "$pkgdir/usr/share/licenses/$pkgname/" LICENSE
+ install -Dm644 -t "$pkgdir/usr/share/applications/" "$srcdir/protonmail-bridge.desktop"
+ install -Dm644 -t "$pkgdir/usr/share/doc/protonmail/bridge/" ./*.md
+ install -Dm644 dist/bridge.svg "$pkgdir/usr/share/icons/hicolor/scalable/apps/protonmail-bridge.svg"
+
+ install -Dm755 bridge "$pkgdir/usr/lib/protonmail/bridge/bridge"
+ install -Dm755 build/bridge-gui "$pkgdir/usr/lib/protonmail/bridge/bridge-gui"
+
+ install -dm755 "$pkgdir/usr/bin/"
+ ln -s /usr/lib/protonmail/bridge/bridge-gui "$pkgdir/usr/bin/protonmail-bridge"
}