ayaports/user/joplin/APKBUILD
2023-09-01 00:33:10 +00:00

210 lines
6 KiB
Text

# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname="joplin"
pkgver=2.9.17
pkgdesc="A note taking and to-do application with synchronization capabilities"
pkgrel=0
install="joplin.install"
depends="
electron
gtk3
nodejs>=17.3
nss
orc
rsync
libvips
libappindicator-gtk2
coreutils
"
arch="x86_64"
makedepends="
npm
yarn
python3
rsync
jq
yq
electron
libgsf-dev
libexif-dev
libjpeg-turbo-dev
libwebp-dev
libxss-dev
node-gyp>=8.4.1
libvips-dev
libsecret-dev
"
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() {
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"
}
desktop() {
# ./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
}
sha512sums="
decf01d1dd51d6fdfdba7ffd7074d2d22d686e112064fd9232ae7d9947e4261e35c6b7ff30b086321f59adf9fe53f645cf41957216712e49e9ef104a62dc2e0f joplin-2.9.17.tar.gz
dd838bf77552bcd6a4b876ce0a21ab67f01f6462d89954017f7fa587fc0cda7607f92c4969f346c4bb08537f6ec7e62511965b62b65796517a6d29a3a78fe306 joplin.desktop
2e388b2446330ebfa299700969f4ca649a5cac8aac98e574503a7348084eda3741fe5017f35df5ad68a6c1a80bb28a9c1a7fdf4ff207fb8b20f42ac5c26a5ff7 joplin-desktop.sh
723f160523249541ba0f0045a7ddd81563bdaf1463bd64a745605573073b3c1869eb8489bd66cdcbc67a262629b8d5e0f2d021d178280804db4fd97d72937bd5 joplin.sh
"