diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 79 |
1 files changed, 53 insertions, 26 deletions
@@ -1,14 +1,15 @@ # Maintainer: surefire@cryptomile.net pkgname=keeweb -pkgver=1.15.7 -pkgrel=2 +pkgver=1.16.0 +_electron=electron +pkgrel=1 pkgdesc="Desktop password manager compatible with KeePass databases" arch=('any') url="https://keeweb.info" license=('MIT') depends=( - 'electron9' + $_electron 'org.freedesktop.secrets' ) makedepends=( @@ -23,29 +24,29 @@ optdepends=('xdotool: for auto-type') conflicts=('keeweb-desktop') source=( "${pkgname}::git+https://github.com/keeweb/keeweb.git#tag=v${pkgver}" - 'keeweb.sh' + "git+https://github.com/keeweb/keeweb-native-modules.git#tag=0.4.1" 'package.json.patch.js' ) sha1sums=('SKIP' - '7793e6391d2160458ca54648daa63bb2f1717e4c' - 'd64a29202b71f30b1c4eaef5c01cee574b55894a') + 'SKIP' + '5e2a12694cf56ec9ed558554819dba0187e7fbdc') case "$CARCH" in - i686) _keeweb_arch=ia32;; - x86_64) _keeweb_arch=x64;; - aarch64) _keeweb_arch=arm64;; - *) _keeweb_arch=DUMMY;; + i686) _arch=ia32;; + x86_64) _arch=x64;; + aarch64) _arch=arm64;; + *) _arch=DUMMY;; esac prepare() { - cd "${pkgname}" + 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 \ @@ -59,36 +60,62 @@ prepare() { } build() { - cd "${pkgname}" + export npm_config_build_from_source=true + export npm_config_optional=false + + cd "${srcdir}/${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 - npm install + npm install --nodedir=/usr npm install css-loader 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 -package() { - cd "${pkgname}" + cat <<-EOF > tmp/desktop/keeweb + #!/usr/bin/sh + exec ${_electron} /usr/lib/keeweb/app.asar --disable-updater "\$@" + EOF - install -Dm0755 ../keeweb.sh "${pkgdir}/usr/bin/keeweb" - install -Dm0644 -t "${pkgdir}/usr/lib/keeweb" tmp/app.asar + cd "${srcdir}/keeweb-native-modules" - #TODO: requires a rebuild from source code - install -Dm0644 -t "${pkgdir}/usr/lib/keeweb/node_modules/@keeweb/keeweb-native-modules" node_modules/@keeweb/keeweb-native-modules/*-linux-${_keeweb_arch}.node + local electron_build_opts=( + production + arch=$_arch + runtime=electron + disturl=https://electronjs.org/headers + target=$(</usr/lib/${_electron}/version) + target_arch=$_arch + use_system_libusb=true + ) - install -Dm0644 -t "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE DEPS-LICENSE + HOME="${srcdir}/.electron-gyp" npm install "${electron_build_opts[@]/#/--}" +} + +package() { + cd "${srcdir}/${pkgname}" + install -Dm0755 -t "${pkgdir}/usr/bin" tmp/desktop/keeweb + 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}/argon2/build-tmp-napi-v3/Release/argon2.node" \ + "${_pkg_mdir}/argon2-linux-${_arch}.node" + install -Dm0644 "${_src_mdir}/keytar/build/Release/keytar.node" \ + "${_pkg_mdir}/keytar-linux-${_arch}.node" + install -Dm0644 "${_src_mdir}/usb/build/Release/usb_bindings.node" \ + "${_pkg_mdir}/usb-linux-${_arch}.node" + install -Dm0644 "${_src_mdir}/yubikey-chalresp/build/Release/yubikey-chalresp.node" \ + "${_pkg_mdir}/yubikey-chalresp-linux-${_arch}.node" } |