user/joplin: new aport

This commit is contained in:
Antoine Martin 2023-05-03 20:22:17 -04:00
parent 1fc4159ed2
commit 3be6a2d1e5

210
user/joplin/APKBUILD Normal file
View 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
}