joplin: prepare

This commit is contained in:
Antoine Martin 2023-05-04 10:08:30 -04:00
parent a959a255de
commit 7122efda87

View file

@ -20,6 +20,7 @@ makedepends="
yarn
python3
rsync
p7zip
jq
yq
electron
@ -41,84 +42,50 @@ source="
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"
}
_yarn_cache="$srcdir"/yarn-cache
prepare() {
default_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"
msg "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
msg "Tweaking .yarnrc"
yq -i ".cacheFolder=(\"$_yarn_cache\")" "$srcdir"/joplin-$pkgver/.yarnrc.yml
msg2 "Tweaking .yarnrc"
yq -i -y ".cacheFolder=(\"$cache\")" "$srcdir/joplin-$pkgver/.yarnrc.yml"
msg2 "Tweaking lerna.json"
msg "Tweaking lerna.json"
local tmp_json="$(mktemp --tmpdir="$srcdir")"
local lerna_json="$srcdir/joplin-$pkgver/lerna.json"
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"
msg "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
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
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
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
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
msg2 "Installing dependencies through Yarn 3..."
msg "Installing dependencies through Yarn 3..."
# FSevents is on the optinal dependencies and its Mac Only
eval $yarn_bin
yarn
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
msg "Building the workspace"
yarn workspace @joplin/lib install
yarn workspace @joplin/renderer install
yarn workspace @joplin/app-desktop install
yarn workspace @joplin/app-desktop run electron-builder build --linux
}
check() {
@ -126,77 +93,66 @@ check() {
}
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
msg "Packaging CLI with Repo Gulp"
cd "$builddir"/packages/app-cli/
_gulp_bin=$(yarn bin gulp)
msg2 "Using gulp: $_gulp_bin"
$_gulp_bin build
yarn 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
mkdir -p "$pkgdir"/usr/share/joplin/
mv package.tgz "$pkgdir"/usr/share/joplin/
cd "$pkgdir"/usr/share/joplin/
yarn init
# FIXME: The repo wran crashed
# You also need to pipe yes, for depeendy
yes | yarn add ./package.tgz
msg2 "Fixing Directories Permissions"
msg "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"
msg "Removing References to \$pkgdir"
find "$pkgdir" -name package.json -print0 | xargs -0 sed -i "/_where/d"
msg2 "Fixing Permissions set by npm"
msg "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"
msg "Installing files"
install -Dm644 "$builddir"/LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname/
install -Dm755 "$srcdir"/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"
mkdir -p "$builddir"/packages/app-desktop/dist/
touch "$builddir"/packages/app-desktop/dist/AppImage
cd "$srcdir/joplin-$pkgver/packages/app-desktop/node_modules/@joplin/"
cd "$builddir"/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"
mkdir -p "$pkgdir"/usr/share/joplin-desktop
cp -R "." "$pkgdir"/usr/share/joplin-desktop
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"
msg "Installing files"
install -Dm644 "$builddir"/LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname
install -Dm755 $srcdir/joplin-desktop.sh "$pkgdir"9/usr/bin/joplin-desktop
install -Dm644 $srcdir/joplin.desktop -t "$pkgdir"/usr/share/applications
local -r src_icon_dir="$builddir"/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"
"$pkgdir"/usr/share/icons/hicolor/${size}x$size/apps/joplin.png
done
}