summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO32
-rw-r--r--PKGBUILD167
-rw-r--r--keeweb.sh16
-rw-r--r--package.json.patch.js34
4 files changed, 97 insertions, 152 deletions
diff --git a/.SRCINFO b/.SRCINFO
index ad521b9968d5..082cdd81422c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,27 +1,25 @@
pkgbase = keeweb-git
pkgdesc = Desktop password manager compatible with KeePass databases. (develop branch)
- pkgver = 1.17.0+3+gf8ec47bf
+ pkgver = 1.18.7.r37.gc1fda05c
pkgrel = 1
- url = https://keeweb.info
+ url = https://keeweb.info/
arch = any
license = MIT
- makedepends = asar
- makedepends = git
- makedepends = libsass
makedepends = npm
- depends = electron
- depends = org.freedesktop.secrets
- depends = libusb
- provides = keeweb
- provides = keeweb-desktop
+ makedepends = git
+ makedepends = nvm
+ makedepends = gendesk
+ makedepends = asar
+ depends = electron13-bin
+ depends = libsecret
+ provides = keeweb=1.18.7
conflicts = keeweb
+ conflicts = keeweb-web
+ conflicts = keeweb-devel
conflicts = keeweb-desktop
- source = keeweb-git::git+https://github.com/keeweb/keeweb.git#branch=develop
- source = git+https://github.com/keeweb/keeweb-native-modules.git
- source = package.json.patch.js
- sha1sums = SKIP
- sha1sums = SKIP
- sha1sums = 5e2a12694cf56ec9ed558554819dba0187e7fbdc
+ source = keeweb.git::git+https://github.com/keeweb/keeweb.git
+ source = keeweb.sh
+ sha256sums = SKIP
+ sha256sums = dc0c5ca385ad81a08315a91655c7c064b5bf110eada55e61265633ae198b39f8
pkgname = keeweb-git
-
diff --git a/PKGBUILD b/PKGBUILD
index 5c5a96127cc0..686ebf67c43d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,118 +1,83 @@
-# Maintainer: surefire <surefire at cryptomile dot net>
+# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
+# Contributor: surefire <surefire at cryptomile dot net>
# Contributor wenLiangcan <boxeed at gmail dot com>
-
pkgname=keeweb-git
-pkgver=1.17.0+3+gf8ec47bf
-_electron=electron
+_pkgname=KeeWeb
+pkgver=1.18.7.r37.gc1fda05c
+_electronversion=13
+_nodeversion=16
pkgrel=1
pkgdesc="Desktop password manager compatible with KeePass databases. (develop branch)"
arch=('any')
-url="https://keeweb.info"
+url="https://keeweb.info/"
+_ghurl="https://github.com/keeweb/keeweb"
license=('MIT')
+conflicts=(
+ "${pkgname%-git}"
+ "${pkgname%-git}-web"
+ "${pkgname%-git}-devel"
+ "${pkgname%-git}-desktop"
+)
+provides=("${pkgname%-git}=${pkgver%.r*}")
depends=(
- $_electron
- 'org.freedesktop.secrets'
- 'libusb'
+ "electron${_electronversion}-bin"
+ 'libsecret'
)
makedepends=(
- 'asar'
- 'git'
- 'libsass'
- 'npm'
+ 'npm'
+ 'git'
+ 'nvm'
+ 'gendesk'
+ 'asar'
)
-conflicts=('keeweb' 'keeweb-desktop')
-provides=('keeweb' 'keeweb-desktop')
source=(
- "${pkgname}::git+https://github.com/keeweb/keeweb.git#branch=develop"
- "git+https://github.com/keeweb/keeweb-native-modules.git"
- 'package.json.patch.js'
-)
-
-sha1sums=('SKIP'
- 'SKIP'
- '5e2a12694cf56ec9ed558554819dba0187e7fbdc')
-
-case "$CARCH" in
- i686) _arch=ia32;;
- x86_64) _arch=x64;;
- aarch64) _arch=arm64;;
- *) _arch=DUMMY;;
-esac
-
+ "${pkgname//-/.}::git+${_ghurl}.git"
+ "${pkgname%-git}.sh")
+sha256sums=('SKIP'
+ 'dc0c5ca385ad81a08315a91655c7c064b5bf110eada55e61265633ae198b39f8')
pkgver() {
- cd "${pkgname}"
- git describe --long --tags | sed 's/^v//; s/_/./g; s/-/+/g'
+ cd "${srcdir}/${pkgname//-/.}"
+ git describe --long --tags --exclude='*[a-z][a-z]*' | sed -E 's/^v//;s/([^-]*-g)/r\1/;s/-/./g'
}
-
-prepare() {
- cd "${srcdir}/${pkgname}"
-
- # remove extra dependencies
- node ../package.json.patch.js
-
- sed -i \
- -e "/const electronVersion/ s/pkg.dependencies.electron/'$(</usr/lib/${_electron}/version)'/" \
- Gruntfile.js
-
- sed -i \
- -e "/'eslint',/ d" \
- grunt.tasks.js
-
- sed -i \
- -e "/const BundleAnalyzerPlugin/ d" \
- -e "/new BundleAnalyzerPlugin({$/, /^\s*})$/ d" \
- build/webpack.config.js
+_ensure_local_nvm() {
+ export NVM_DIR="${srcdir}/.nvm"
+ source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
+ nvm install "${_nodeversion}"
+ nvm use "${_nodeversion}"
}
-
build() {
- 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
-
- npm install --nodedir=/usr
-
- npx grunt build-web-app build-desktop-app-content
-
- 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
-
- HOME="${srcdir}/.electron-gyp" \
- npm_config_use_system_libusb=true \
- npx electron-rebuild --arch="${_arch}" --version="$(</usr/lib/${_electron}/version)" --only=argon2,keytar,usb,yubikey-chalresp,keyboard-auto-type
+ sed -e "s|@electronversion@|${_electronversion}|" \
+ -e "s|@appname@|${pkgname%-git}|g" \
+ -e "s|@runname@|app.asar|g" \
+ -e "s|@options@||g" \
+ -i "${srcdir}/${pkgname%-git}.sh"
+ _ensure_local_nvm
+ gendesk -q -f -n --categories="Utility" --name="${_pkgname}" --exec="${pkgname%-git} %U"
+ cd "${srcdir}/${pkgname//-/.}"
+ export npm_config_build_from_source=true
+ export npm_config_cache="${srcdir}/.npm_cache"
+ export ELECTRON_SKIP_BINARY_DOWNLOAD=1
+ export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/v//g')"
+ export npm_config_target="${SYSTEM_ELECTRON_VERSION}"
+ export ELECTRONVERSION="${_electronversion}"
+ export npm_config_disturl=https://electronjs.org/headers
+ HOME="${srcdir}/.electron-gyp"
+ if [ `curl -s ipinfo.io/country | grep CN | wc -l ` -ge 1 ];then
+ export npm_config_registry=https://registry.npmmirror.com
+ export npm_config_electron_mirror=https://registry.npmmirror.com/-/binary/electron/
+ export npm_config_electron_builder_binaries_mirror=https://registry.npmmirror.com/-/binary/electron-builder-binaries/
+ else
+ echo "Your network is OK."
+ fi
+ sed "s|'AppImage', 'snap', 'rpm'|'dir'|g" -i Gruntfile.js
+ npm install
+ npm run dev-desktop-linux
}
-
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}/usb/build/Release/usb_bindings.node" \
- "${_pkg_mdir}/usb-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
-}
+ install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
+ install -Dm644 "${srcdir}/${pkgname//-/.}/tmp/desktop/${pkgname%-git}-linux-"*/resources/app.asar -t "${pkgdir}/usr/lib/${pkgname%-git}"
+ cp -r "${srcdir}/${pkgname//-/.}/tmp/desktop/${pkgname%-git}-linux-"*/resources/node_modules "${pkgdir}/usr/lib/${pkgname%-git}"
+ install -Dm644 "${srcdir}/${pkgname//-/.}/graphics/512x512.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"
+ install -Dm644 "${srcdir}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
+ install -Dm644 "${srcdir}/${pkgname//-/.}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
+} \ No newline at end of file
diff --git a/keeweb.sh b/keeweb.sh
new file mode 100644
index 000000000000..7ddcaab8d734
--- /dev/null
+++ b/keeweb.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+_APPDIR="/usr/lib/@appname@"
+_RUNNAME="${_APPDIR}/@runname@"
+_OPTIONS="@options@"
+export PATH="${_APPDIR}:${PATH}"
+export LD_LIBRARY_PATH="${_APPDIR}/swiftshader:${_APPDIR}/lib:${LD_LIBRARY_PATH}"
+export ELECTRON_IS_DEV=0
+export ELECTRON_FORCE_IS_PACKAGED=true
+export NODE_ENV=production
+cd "${_APPDIR}"
+if [[ $EUID -ne 0 ]] || [[ $ELECTRON_RUN_AS_NODE ]]; then
+ exec electron@electronversion@ "${_RUNNAME}" "${_OPTIONS}" "$@" || exit $?
+else
+ exec electron@electronversion@ "${_RUNNAME}" "${_OPTIONS}" --no-sandbox "$@" || exit $?
+fi \ No newline at end of file
diff --git a/package.json.patch.js b/package.json.patch.js
deleted file mode 100644
index 31362616c831..000000000000
--- a/package.json.patch.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-const PATCHABLE_FILE = './package.json';
-
-const fs = require('fs');
-const data = JSON.parse(fs.readFileSync(PATCHABLE_FILE));
-
-// remove extra dependencies
-const removePkg = [
- /^chai$/,
- /^electron-/,
- /^electron$/,
- /^eslint-/,
- /^eslint$/,
- /^grunt-contrib-compress$/,
- /^grunt-contrib-deb$/,
- /^grunt-contrib-watch$/,
- /^grunt-electron$/,
- /^grunt-eslint$/,
- /^mocha$/,
- /^puppeteer$/,
- /^stats-webpack-plugin$/,
- /^sumchecker$/,
- /^webpack-bundle-analyzer$/,
- /^webpack-dev-server$/,
- /keeweb-native-modules$/,
-];
-
-Object.keys(data.dependencies).forEach(dep => {
- if (removePkg.some(re => re.test(dep)))
- delete data.dependencies[dep];
-});
-
-fs.writeFileSync(PATCHABLE_FILE, JSON.stringify(data, null, '\t'));