summaryrefslogtreecommitdiff
path: root/libre/nextcloud-client/PKGBUILD
blob: 5d57543e31a4ed68e6ede36096de166bdaafe2dd (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
# Maintainer (Arch): Caleb Maclennan <caleb@alerque.com>
# Maintainer (Arch): Chih-Hsuan Yen <yan12125@archlinux.org>
# Contributor (Arch): Tyler Dence <tyzoid@archlinux32.org>
# Contributor (Arch): Konstantin Shalygin <k0ste@k0ste.ru>
# Maintainer: David P. <megver83@parabola.nu>
# Contributor: bill-auger <bill-auger@programmer.net>

# parabola changes and rationale:
#  - build without qt5-webengine
#  - disable tests which require networking

pkgbase=nextcloud-client
# Put config files for libcloudproviders integration in a separate package as
# there is no simple way yet to disable it.
# See: https://gitlab.gnome.org/World/libcloudproviders/-/issues/17
pkgname=(nextcloud-client nextcloud-client-cloudproviders)
epoch=2
# Upstream does not provide signed tarballs (yet)
# https://github.com/nextcloud/desktop/issues/1510
pkgver=3.10.0
_tag=19a02ad0b0146167949a9a06d4cb4a1137df8153
pkgrel=2
pkgrel+=.parabola1
arch=(x86_64)
arch+=(i686 armv7h)
url='https://nextcloud.com/'
_url=https://github.com/nextcloud/desktop
license=(GPL)
makedepends=(cmocka
             doxygen
             extra-cmake-modules
             git
             inkscape
             kio5
             libcloudproviders
             openssl
             python-sphinx
             qt5-quickcontrols2
             qt5-svg
             qt5-tools
             qt5-websockets
             qtkeychain-qt5
             sqlite)
source=("$pkgbase::git+$_url.git?signed#tag=$_tag")
source+=(no-webengine.patch)
validpgpkeys=(
  A26B951528EA1BA1678C7AE5D406C75CEE1A36D6 # https://github.com/camilasan
  42E775EAA3E47F9E0D5CDB0E00819E3BF4177B28 # https://github.com/misch7
  17166A5275C5FA6F1A48FD78074BBBCB8DECC9E2 # https://github.com/er-vin.gpg
  0739B11EDA696A3616666F6AE04221E85C5BB816 # https://github.com/allexzander
  267BF70F7905C2723B0243267D0F74F05C22F553 # https://github.com/mgallien
  3A877D9A896A057948059DEDAD2C27357B2CB11D # https://github.com/FlexW
)
sha256sums=('SKIP'
            '1e6d35210a15b8dfa94582d7db875e6ede2cd6b4e70f12cda02ff0be5a6badfb')

pkgver() {
  cd $pkgbase
  git describe --tags | sed 's/^v//;s/-/+/g'
}

_pkgver() {
  curl -fs https://api.github.com/repos/nextcloud/desktop/git/ref/tags/v$pkgver |
    jq -r .object.sha
}

prepare() {
  # tmpdir for check()
  mkdir -p tmpdir
  cd $pkgbase
  # Monkey patch that disables bulk upload capability which causes infinite
  # loops for many server/client combos. Feature is also disabled by default on
  # server end in v23.0.3 because it was so problematic. This can abe re-enabled
  # when underlying bug squashed:
  # https://github.com/nextcloud/desktop/issues/5726
  sed -i -e '/bulkupload/s/return _.*;$/return false;/' src/libsync/capabilities.cpp
  # Disable tests that touch on disabled feature
  sed -i -e '/SyncEngine/s/^/#/' -e '/Capabilities/s/^/#/' -e '/SecureFileDrop/s/^/#/' test/CMakeLists.txt

  # disable tests which require networking
  sed -i -e '/OAuth/s/^/#/'             test/CMakeLists.txt
  sed -i -e '/PushNotifications/s/^/#/' test/CMakeLists.txt

  echo "applying no-webengine.patch"
  patch -Np1 -i "${srcdir}"/no-webengine.patch
}

build() {
  cd $pkgbase

  # bundled breakpad in libcrashreporter-qt submodule is too old and does not build with glibc >= 2.26
  # Upstream fix: https://github.com/google/breakpad/commit/bddcc58860f522a0d4cbaa7e9d04058caee0db9d
  cmake -B build -S . \
    -DCMAKE_BUILD_TYPE=None \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DWITH_CRASHREPORTER=OFF \
    -DBUILD_UPDATER=OFF \
    -DUNIT_TESTING=ON \
    -DPLUGINDIR=lib/qt/plugins # Fix vfs plugin install dir https://github.com/nextcloud/desktop/issues/3781#issuecomment-918918320

  # TODO: fix installation of PDF and HTML documents
  # WIP at https://github.com/yan12125/desktop/tree/doc-install-path
  make -C build all doc-man
}

check() {
  cd $pkgbase/build

  # Tests fail if $TMPDIR is too small; specify an alternative for machines
  # with a small /tmp partition.
  # Use UTC as TestCookies is sensitive to the timezone
  # https://github.com/nextcloud/desktop/blob/v3.2.2/test/testcookies.cpp#L24
  QT_QPA_PLATFORM=offscreen TMPDIR="$srcdir/tmpdir" TZ=UTC ARGS="--rerun-failed --output-on-failure" make test
}

package_nextcloud-client() {
  pkgdesc='Nextcloud desktop client'
  depends=(hicolor-icon-theme
           karchive5
           libcloudproviders
           openssl
           qt5-graphicaleffects
           qt5-quickcontrols
           qt5-quickcontrols2
           qt5-svg
           qt5-websockets
           qtkeychain-qt5
           sqlite
           xdg-utils)
  optdepends=('kio5: integration with Dolphin'
              'nemo-python: integration with Nemo'
              'python-nautilus: integration with Nautilus'
              'python-caja: integration with Caja'
              'nextcloud-client-cloudproviders: cloudproviders support')
  backup=('etc/Nextcloud/sync-exclude.lst')

  cd $pkgbase/build

  make DESTDIR="$pkgdir" install

  rm -v "$pkgdir"/usr/share/cloud-providers/com.nextcloudgmbh.Nextcloud.ini
  rm -v "$pkgdir"/usr/share/dbus-1/services/com.nextcloudgmbh.Nextcloud.service
  cd "$pkgdir"/usr/share && rmdir -p cloud-providers dbus-1/services
}

package_nextcloud-client-cloudproviders() {
  pkgdesc='cloudproviders support for the Nextcloud desktop client'
  depends=(nextcloud-client)

  cd $pkgbase/build
  make -C shell_integration/libcloudproviders DESTDIR="$pkgdir" install
}