diff options
-rw-r--r-- | .SRCINFO | 32 | ||||
-rw-r--r-- | PKGBUILD | 167 | ||||
-rw-r--r-- | keeweb.sh | 16 | ||||
-rw-r--r-- | package.json.patch.js | 34 |
4 files changed, 97 insertions, 152 deletions
@@ -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 - @@ -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')); |