summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD112
1 files changed, 77 insertions, 35 deletions
diff --git a/PKGBUILD b/PKGBUILD
index eb16c3bbfcce..38a6420f7b89 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,87 +1,129 @@
-# Maintainer: surefire@cryptomile.net
+# vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4
+# Maintainer: Peter Cai <peter@typeblog.net>
+# Contributor: <surefire@cryptomile.net>
pkgname=keeweb
-pkgver=1.8.1
+pkgver=1.18.7
+_electron=electron12
pkgrel=1
pkgdesc="Desktop password manager compatible with KeePass databases"
arch=('any')
url="https://keeweb.info"
license=('MIT')
-depends=('electron')
+depends=(
+ "$_electron"
+ 'org.freedesktop.secrets'
+)
makedepends=(
'asar'
'git'
- 'libsass>=3.5.5'
- 'nodejs>=8.15.0'
+ 'libsass'
'npm'
+ 'nodejs'
+ 'cmake'
)
-optdepends=('xdotool: for auto-type')
conflicts=('keeweb-desktop')
source=(
"${pkgname}::git+https://github.com/keeweb/keeweb.git#tag=v${pkgver}"
- 'hide-menubar.patch'
- 'keeweb.sh'
+ "git+https://github.com/keeweb/keeweb-native-modules.git#tag=0.11.7"
+ "git+https://github.com/keeweb/keeweb-connect.git#tag=0.3.7"
'package.json.patch.js'
+ '67e917af3dcd9d78273774e7061f74d893b5523b.patch'
)
sha1sums=('SKIP'
- 'a55c2ed276c6073b7954452cdc88209633d51ace'
- 'c925527f25e732d58438ee16b1c93b33be7bf9c4'
- '914afdd9651e71091d4b927cabd25d75786ec7d4')
+ 'SKIP'
+ 'SKIP'
+ '679f19fcdff4a8df49bb0bd8ee09eab1784cf264'
+ '3b6341f657421899d4e4078b799bece7d93587e5')
+
+case "$CARCH" in
+ i686) _arch=ia32;;
+ x86_64) _arch=x64;;
+ aarch64) _arch=arm64;;
+ *) _arch=DUMMY;;
+esac
prepare() {
- cd "${pkgname}"
-
- patch -Np1 -i ../hide-menubar.patch
+ cd "${srcdir}/${pkgname}"
# remove extra dependencies
node ../package.json.patch.js
sed -i \
- -e "/const electronVersion/ s/pkg.dependencies.electron/'$(</usr/lib/electron/version)'/" \
+ -e "/const electronVersion/ s/pkg.dependencies.electron/'$(</usr/lib/${_electron}/version)'/" \
Gruntfile.js
sed -i \
- -e "/'eslint',/ d" \
- -e "/'uglify',/ d" \
+ -e "/'eslint',/ d" \
grunt.tasks.js
sed -i \
- -e '/Exec=/ c \Exec=keeweb %u' \
- package/deb/usr/share/applications/keeweb.desktop
+ -e "/const BundleAnalyzerPlugin/ d" \
+ -e "/new BundleAnalyzerPlugin({$/, /^\s*})$/ d" \
+ build/webpack.config.js
+ # Patch `getNativeMessagingHostPath` to not rely on the executable path
+ # (in our case, the executable path is the system electron binary)
sed -i \
- -e 's/: "[^@]*@github:/: "github:/' \
- package-lock.json
+ -e 's@function getNativeMessagingHostPath() {@function getNativeMessagingHostPath() {\nreturn "/usr/lib/keeweb/keeweb-native-messaging-host";@' \
+ desktop/scripts/util/browser-extension-installer.js
}
build() {
- cd "${pkgname}"
-
- export SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=1
- export SASS_FORCE_BUILD=1
- export LIBSASS_EXT=auto
- export npm_config_nodedir=/usr
- export npm_config_optional=false
export npm_config_build_from_source=true
+ export npm_config_optional=false
- npm install
+ cd "${srcdir}/${pkgname}"
+
+ SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=1 \
+ SASS_FORCE_BUILD=1 \
+ LIBSASS_EXT=auto \
+ npm install --nodedir=/usr
npx grunt build-web-app build-desktop-app-content
- asar p tmp/desktop/app tmp/app.asar
+ asar p tmp/desktop/app tmp/desktop/app.asar
+
+ cat <<-EOF > tmp/desktop/keeweb
+ #!/usr/bin/sh
+ exec ${_electron} /usr/lib/keeweb/app.asar --disable-updater "\$@"
+ EOF
+
+ cd "${srcdir}/keeweb-native-modules"
+
+ npm install --ignore-scripts
+
+ # https://github.com/antelle/keyboard-auto-type/commit/67e917af3dcd9d78273774e7061f74d893b5523b
+ patch -Np1 <"${srcdir}/67e917af3dcd9d78273774e7061f74d893b5523b.patch"
+
+ HOME="${srcdir}/.electron-gyp" \
+ npx electron-rebuild --arch="${_arch}" --version="$(</usr/lib/${_electron}/version)" --only=argon2,keytar,usb-detection,yubikey-chalresp,keyboard-auto-type
+
+ cd "${srcdir}/keeweb-connect/native-messaging-host"
+ make
}
package() {
- cd "${pkgname}"
-
- install -Dm0755 ../keeweb.sh "${pkgdir}/usr/bin/keeweb"
- install -Dm0644 -t "${pkgdir}/usr/lib/keeweb" tmp/app.asar
+ cd "${srcdir}/${pkgname}"
+ install -Dm0755 -t "${pkgdir}/usr/bin" tmp/desktop/keeweb
+ install -Dm0755 -t "${pkgdir}/usr/lib/keeweb" ../keeweb-connect/native-messaging-host/build/keeweb-native-messaging-host
+ install -Dm0644 -t "${pkgdir}/usr/lib/keeweb" tmp/desktop/app.asar
install -Dm0644 -t "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE DEPS-LICENSE
-
install -Dm0644 -t "${pkgdir}/usr/share/mime/packages" package/deb/usr/share/mime/packages/keeweb.xml
install -Dm0644 -t "${pkgdir}/usr/share/applications" package/deb/usr/share/applications/keeweb.desktop
install -Dm0644 graphics/128x128.png "${pkgdir}/usr/share/pixmaps/keeweb.png"
+
+ local _src_mdir="${srcdir}/keeweb-native-modules/node_modules"
+ local _pkg_mdir="${pkgdir}/usr/lib/keeweb/node_modules/@keeweb/keeweb-native-modules"
+
+ install -Dm0644 "${_src_mdir}/usb-detection/build/Release/detection.node" \
+ "${_pkg_mdir}/usb-detection-linux-${_arch}.node"
+
+ for _mod in argon2 keyboard-auto-type keytar yubikey-chalresp; do
+ install -Dm0644 "${_src_mdir}/${_mod}/build/Release/${_mod}.node" \
+ "${_pkg_mdir}/${_mod}-linux-${_arch}.node"
+ done
}