user/joplin: new aport
This commit is contained in:
parent
1fc4159ed2
commit
3be6a2d1e5
1 changed files with 210 additions and 0 deletions
210
user/joplin/APKBUILD
Normal file
210
user/joplin/APKBUILD
Normal file
|
@ -0,0 +1,210 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
|
||||
pkgname="joplin"
|
||||
pkgver=2.9.17
|
||||
pkgrel=0
|
||||
install="joplin.install"
|
||||
depends="
|
||||
electron
|
||||
gtk3
|
||||
libexif
|
||||
libgsf
|
||||
libjpeg-turbo
|
||||
libwebp
|
||||
libxss
|
||||
nodejs>=17.3
|
||||
nss
|
||||
orc
|
||||
rsync
|
||||
libvips
|
||||
libappindicator-gtk2
|
||||
"
|
||||
arch="x86_64"
|
||||
makedepends="
|
||||
npm
|
||||
yarn
|
||||
python3
|
||||
rsync
|
||||
jq
|
||||
yq
|
||||
electron
|
||||
libgsf
|
||||
node-gyp>=8.4.1
|
||||
libvips
|
||||
"
|
||||
url="https://joplinapp.org/"
|
||||
subpackages="$pkgname-desktop"
|
||||
license="MIT"
|
||||
source="
|
||||
joplin-${pkgver}.tar.gz::https://github.com/laurent22/joplin/archive/v${pkgver}.tar.gz
|
||||
joplin.desktop
|
||||
joplin-desktop.sh
|
||||
joplin.sh
|
||||
"
|
||||
|
||||
# local npm cache directory
|
||||
_yarn_cache="yarn-cache"
|
||||
|
||||
## Sets up a local cache to prevent the redownloding the packages on rebuilds
|
||||
_get_cache() {
|
||||
if [[ "${_yarn_cache}" =~ ^/ ]]; then
|
||||
printf "%s" "${_yarn_cache}"
|
||||
else
|
||||
printf "%s" "${srcdir}/${_yarn_cache}"
|
||||
fi
|
||||
}
|
||||
|
||||
_get_yarn_bin() {
|
||||
local yarn_bin=$(yq ".yarnPath" ${srcdir}/joplin-${pkgver}/.yarnrc.yml)
|
||||
#Remove quotes
|
||||
yarn_bin="${yarn_bin%\"}"
|
||||
yarn_bin="${yarn_bin#\"}"
|
||||
printf "%s" "${srcdir}/joplin-${pkgver}/${yarn_bin}"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
local cache=$(_get_cache)
|
||||
local yarn_bin=$(_get_yarn_bin)
|
||||
msg2 "Yarn cache directory: $cache"
|
||||
msg2 "Yarn binary: ${yarn_bin}"
|
||||
|
||||
msg2 "Disabling husky (git hooks)"
|
||||
sed -i '/"husky": ".*"/d' "${srcdir}/joplin-${pkgver}/package.json"
|
||||
|
||||
# There are so many people
|
||||
msg2 "Checking Node PATH"
|
||||
local w_node=$(which node)
|
||||
if [[ $w_node != "/usr/bin/node" ]]; then
|
||||
msg2 "WARNING: Using path ${w_node} beware its not the defualt path, check if you are using nvm or similar"
|
||||
fi
|
||||
|
||||
msg2 "Tweaking .yarnrc"
|
||||
yq -i -y ".cacheFolder=(\"${cache}\")" "${srcdir}/joplin-${pkgver}/.yarnrc.yml"
|
||||
|
||||
msg2 "Tweaking lerna.json"
|
||||
local tmp_json="$(mktemp --tmpdir="$srcdir")"
|
||||
local lerna_json="${srcdir}/joplin-${pkgver}/lerna.json"
|
||||
|
||||
msg2 "Deleting app-mobile"
|
||||
rm -r "${srcdir}/joplin-${pkgver}/packages/app-mobile"
|
||||
rm -r "${srcdir}/joplin-${pkgver}/packages/app-clipper"
|
||||
|
||||
if [[ ${pkgver} == 2.9.17 ]]; then
|
||||
# Temporary fix for 2.9.17
|
||||
# Let yarn resolve version ^2.12.1 of nan package to 2.17.0 instead of 2.15.0 (https://github.com/nodejs/nan/pull/943)
|
||||
local package_json=${srcdir}/joplin-${pkgver}/package.json
|
||||
cp $package_json $package_json.bak
|
||||
jq '. + {"resolutions": {"nan@^2.12.1": "2.17.0"}}' $package_json.bak > $package_json
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
build() {
|
||||
local cache=$(_get_cache)
|
||||
local yarn_bin=$(_get_yarn_bin)
|
||||
msg2 "Yarn cache directory: $cache"
|
||||
cd "${srcdir}/joplin-${pkgver}"
|
||||
|
||||
# Force Lang
|
||||
# INFO: https://github.com/alfredopalhares/joplin-pkgbuild/issues/25
|
||||
export LANG=en_US.utf8
|
||||
|
||||
msg2 "Installing dependencies through Yarn 3..."
|
||||
# FSevents is on the optinal dependencies and its Mac Only
|
||||
eval $yarn_bin
|
||||
|
||||
msg2 "Building the workspace"
|
||||
$yarn_bin workspace @joplin/lib install
|
||||
$yarn_bin workspace @joplin/renderer install
|
||||
$yarn_bin workspace @joplin/app-desktop install
|
||||
$yarn_bin workspace @joplin/app-desktop run electron-builder build --linux
|
||||
}
|
||||
|
||||
check() {
|
||||
npm run test || exit 0
|
||||
}
|
||||
|
||||
package() {
|
||||
depends=('coreutils' 'libsecret' 'nodejs' 'python')
|
||||
|
||||
local cache=$(_get_cache)
|
||||
local yarn_bin=$(_get_yarn_bin)
|
||||
msg2 "Yarn cache directory: $cache"
|
||||
|
||||
msg2 "Packaging CLI with Repo Gulp"
|
||||
cd "${srcdir}/joplin-${pkgver}/packages/app-cli/"
|
||||
gulp_bin=$($yarn_bin bin gulp)
|
||||
msg2 "Using gulp: ${gulp_bin}"
|
||||
${gulp_bin} build
|
||||
$yarn_bin pack
|
||||
|
||||
msg2 "Installing package"
|
||||
mkdir -p "${pkgdir}/usr/share/joplin/"
|
||||
mv package.tgz tt"${pkgdir}/usr/share/joplin/"
|
||||
cd "${pkgdir}/usr/share/joplin/"
|
||||
$yarn_bin init
|
||||
# FIXME: The repo wran crashed
|
||||
# You also need to pipe yes, for depeendy
|
||||
yes | yarn add ./package.tgz
|
||||
|
||||
msg2 "Fixing Directories Permissions"
|
||||
# Non-deterministic race in npm gives 777 permissions to random directories.
|
||||
# See https://github.com/npm/cli/issues/1103 for details.
|
||||
find "${pkgdir}/usr" -type d -exec chmod 755 {} +
|
||||
|
||||
msg2 "Removing References to \$pkgdir"
|
||||
find "$pkgdir" -name package.json -print0 | xargs -0 sed -i "/_where/d"
|
||||
|
||||
msg2 "Fixing Permissions set by npm"
|
||||
# npm gives ownership of ALL FILES to build user
|
||||
# https://bugs.archlinux.org/task/63396
|
||||
chown -R root:root "${pkgdir}"
|
||||
|
||||
msg2 "Installing LICENSE"
|
||||
install -Dm644 "${srcdir}/joplin-${pkgver}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}/"
|
||||
|
||||
msg2 "Installing Startup Script"
|
||||
cd "${srcdir}"
|
||||
install -Dm755 joplin.sh "${pkgdir}/usr/bin/joplin"
|
||||
}
|
||||
|
||||
|
||||
package_joplin-desktop() {
|
||||
pkgdesc="A note taking and to-do application with synchronization capabilities - Desktop"
|
||||
depends=('electron' 'gtk3' 'libexif' 'libgsf' 'libjpeg-turbo' 'libwebp' 'libxss' 'nodejs'
|
||||
'nss' 'orc')
|
||||
optdepends=('libappindicator-gtk3: for tray icon')
|
||||
conflicts=('joplin-desktop-electron')
|
||||
|
||||
# ./generateSha512.js fails if AppImage is not built
|
||||
mkdir -p "${srcdir}/joplin-${pkgver}/packages/app-desktop/dist/"
|
||||
touch "${srcdir}/joplin-${pkgver}/packages/app-desktop/dist/AppImage"
|
||||
|
||||
cd "${srcdir}/joplin-${pkgver}/packages/app-desktop/node_modules/@joplin/"
|
||||
ln -sf "../../../fork-uslug" "."
|
||||
|
||||
msg2 "Packaging the desktop..."
|
||||
# TODO: Cleanup app.asar file
|
||||
cd dist/linux-unpacked/
|
||||
mkdir -p "${pkgdir}/usr/share/joplin-desktop"
|
||||
cp -R "." "${pkgdir}/usr/share/joplin-desktop"
|
||||
msg2 "Installing LICENSE..."
|
||||
cd "${srcdir}/joplin-${pkgver}/"
|
||||
install -Dm644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
|
||||
|
||||
msg "Installing startup script and desktop file..."
|
||||
cd "${srcdir}"
|
||||
install -Dm755 ${srcdir}/joplin-desktop.sh "${pkgdir}/usr/bin/joplin-desktop"
|
||||
install -Dm644 ${srcdir}/joplin.desktop -t "${pkgdir}/usr/share/applications"
|
||||
|
||||
msg "Installing icons"
|
||||
local -r src_icon_dir="${srcdir}/joplin-${pkgver}/packages/app-desktop/build/icons"
|
||||
local -i size
|
||||
for size in 16 22 24 32 36 48 64 72 96 128 192 256 512; do
|
||||
[[ -f "${src_icon_dir}/${size}x${size}.png" ]] && install -Dm644 \
|
||||
"${src_icon_dir}/${size}x${size}.png" \
|
||||
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/joplin.png"
|
||||
done
|
||||
}
|
||||
|
Loading…
Reference in a new issue