diff options
author | Caleb Maclennan | 2022-02-04 21:13:45 +0300 |
---|---|---|
committer | Caleb Maclennan | 2022-02-04 22:03:49 +0300 |
commit | dd7159c87448362936730070fc6ab69ff9687a4b (patch) | |
tree | 93d1fe2c1842cb12ff6a9333811786ebe8f95c2a /PKGBUILD | |
parent | a5f16450620620ac4b13e734f5855a087c973860 (diff) | |
download | aur-zettlr.tar.gz |
Overhaul with an eye to migrating to [community]
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 212 |
1 files changed, 56 insertions, 156 deletions
@@ -1,170 +1,70 @@ -# Maintainer: BrLi <brli at chakralinux dot org> # Maintainer: Caleb Maclennan <caleb@alerque.com> - -# Decide whether to include pandoc binary into zettlr package -# Default to false, the application will use Arch's pandoc -_bundle_pandoc=false +# Contributor: BrLi <brli at chakralinux dot org> pkgname=zettlr +_pkgname=${pkgname^} pkgver=2.1.3 -pkgrel=1 -pkgdesc="A markdown editor for writing academic texts and taking notes" -arch=('x86_64') -url='https://www.zettlr.com' -license=('GPL' 'custom') # Noted that the icon and name are copyrighted -depends=(electron) -makedepends=(git yarn nodejs-lts-gallium) # check .github/workflows/build.yml for NODE_VERSION -optdepends=('pandoc: For exporting to various format' - 'texlive-bin: For Latex support' - 'ttf-lato: Display output in a more comfortable way') -_csl_locale_commit=c38205618f1a23eb80e8c5f33c8086648ca3874b # Dec 23, 2021 -_csl_style_commit=ccb71844fdafb2b7a48cccb364f4b4c03d3cdce6 # Sep 19, 2021 -_pandoc_binary_ver=2.17 # check scripts/get-pandoc.sh for update -options=(!strip) -source=("${pkgname}-${pkgver}.tar.gz::https://github.com/Zettlr/Zettlr/archive/v${pkgver}.tar.gz" - '0001-Do-not-download-pandoc.patch' - # citation style - "locales-${pkgver}-${pkgrel}.zip::https://github.com/citation-style-language/locales/archive/${_csl_locale_commit}.zip" - "chicago-author-date-${pkgver}-${pkgrel}.csl::https://github.com/citation-style-language/styles/raw/${_csl_style_commit}/chicago-author-date.csl") +pkgrel=2 +pkgdesc='A Markdown Editor for the 21st century' +arch=(x86_64) +url=https://www.zettlr.com +_url="https://github.com/$_pkgname/$_pkgname" +license=(GPL) +depends=(electron + otf-crimson-text + pandoc + ttf-inconsolata + ttf-liberation) +makedepends=(gendesk + git + nodejs-lts-gallium # check .github/workflows/build.yml for NODE_VERSION + yarn) +optdepends=('texlive-bin: For Latex support') +_archive="$_pkgname-$pkgver" +source=("$_url/archive/v$pkgver/$_archive.tar.gz" + "$pkgname.sh" + "$pkgname.xml") sha256sums=('ec77affb8a0db08bf480c9ec0b5caef771251e3b5e1f2ba9219bb7ce466c66fe' - 'a0fe981dade0ce52be190d8e8a2fd7f6c05c32c7d44d96c63f6f494460d483ef' - '275fc80a391b4002b52182deb12997a1408118b7753977ea69ef5256c6f3ff47' - '1455e57b314fd13ba155f4ab93f061e3e6393c13cd0f16380adb9d73614f7930') -if ${_bundle_pandoc} ; then - # pandoc binary source - source+=("https://github.com/jgm/pandoc/releases/download/${_pandoc_binary_ver}/pandoc-${_pandoc_binary_ver}-linux-amd64.tar.gz") - sha256sums+=('3fe3d42179af289d4f5452b9317d2bc9cd139a4f33a37f68d70e128f1d415aa4') -fi - -prepare() { - cd "Zettlr-${pkgver}" + 'c96a7d8e8b538896721e1657aaa7a1fc79836c50f90888f77ccea23e90230326' + 'c3ecbb490a1d4fa5bc42f7166cc375e5629a452d25bb1d4facb5541938681292') - # Use pacman mechanism to download pandoc binary instead of using upstream script - patch -Np1 -i $srcdir/0001-Do-not-download-pandoc.patch +_yarnargs="--cache-folder '$srcdir/cache' --link-folder '$srcdir/link'" - # csl:refresh from package.json - find "${srcdir}/locales-$_csl_locale_commit" -name "*.xml" \ - -exec cp {} static/csl-locales/ \; - cp "${srcdir}/locales-$_csl_locale_commit/locales.json" static/csl-locales/ - cp "${srcdir}/chicago-author-date-${pkgver}-$pkgrel.csl" static/csl-styles/chicago-author-date.csl - -if ${_bundle_pandoc} ; then - # Put pandoc binary in place - cp "${srcdir}/pandoc-${_pandoc_binary_ver}/bin/pandoc" resources/pandoc-linux-x64 - ln -sf pandoc-linux-x64 resources/pandoc -else - # Using Arch's pandoc, need to fake a link, otherwise npm/yarn complains - ln -sf /usr/bin/pandoc resources/pandoc-linux-x64 - ln -sf /usr/bin/pandoc resources/pandoc -fi +prepare() { + local _electronVersion=$(electron --version | sed -e 's/^v//') + gendesk -q -f -n \ + --pkgname "$pkgname" \ + --pkgdesc "$pkgdesc" \ + --name="$_pkgname" \ + --categories=Office \ + --custom StartupWMClass="$_pkgname" + cd "$_archive" + echo -ne '#!/usr/bin/env bash\n\nexit 0' > scripts/get-pandoc.sh + sed -i -e '/"electron"/d' package.json + yarn $_yarnargs install --frozen-lockfile --ignore-scripts + yarn $_yarnargs add --dev --no-lockfile electron@$_electronVersion + yarn $_yarnargs install --pure-lockfile # postinstall script installs electron-builder deps + ln -sf /usr/bin/pandoc resources/pandoc-linux-x64 } build() { - cd "Zettlr-${pkgver}" - local NODE_ENV='' - yarn install --cache-folder "${srcdir}/cache" \ - --link-folder "${srcdir}/link" - yarn reveal:build - - node node_modules/.bin/electron-forge package - - # Remove fonts - cd "${srcdir}/Zettlr-${pkgver}/.webpack" - find . -type d -name "fonts" -exec rm -rf {} + - - # Remove references to $srcdir - find renderer -type f -name 'index.js.map' -exec sed -i "s,${srcdir}/Zettlr,/usr/lib/${pkgname},g" {} + - - # Remove resources for other OSs and leftovers - cd "${srcdir}/Zettlr-${pkgver}/resources" - rm -rfv NSIS - rm -rfv icons/dmg - rm -rfv icons/*icns - rm -rfv icons/*.ico - rm -rfv screenshots - rm -r .gitignore - - # Remove fonts - cd "${srcdir}/Zettlr-${pkgver}/static" - rm -rf fonts + cd "$_archive" + local NODE_ENV='' + yarn $_yarnargs reveal:build + yarn $_yarnargs package:linux-x64 } -# check() { -# cd "${srcdir}/Zettlr-${pkgver}" -# # Require electron module to test -# yarn add --cache-folder "${srcdir}/cache" --link-folder "${srcdir}/link" electron -# # The "test" function in package.json -# node node_modules/mocha/bin/mocha -# # The "test-gui" function in package.json, not useful in our case -# node scripts/test-gui.js -# # Clean up -# yarn remove electron -# rm yarn.lock -# rm node_modules/.bin -rf -# } - package() { - local _destdir=usr/lib/"${pkgname}" - install -dm755 "${pkgdir}/${_destdir}" - - cd "${srcdir}/Zettlr-${pkgver}" - - # Copy the generated electron project - cp -r --no-preserve=ownership --preserve=mode ./.webpack "${pkgdir}/${_destdir}/" - cp -r --no-preserve=ownership --preserve=mode ./resources "${pkgdir}/${_destdir}/" - cp -r --no-preserve=ownership --preserve=mode ./static "${pkgdir}/${_destdir}/" - cp -r --no-preserve=ownership --preserve=mode ./package.json "${pkgdir}/${_destdir}/" - - # Install start script to /usr/bin - install -Dm755 /dev/stdin "${pkgdir}/usr/bin/Zettlr" <<END -#!/bin/sh -exec electron /${_destdir} "\$@" -END - - # install icons of various sizes to hi-color theme - for px in 16 24 32 48 64 96 128 256 512 1024; do - install -Dm644 "${srcdir}/Zettlr-${pkgver}/resources/icons/png/${px}x${px}.png" \ - "${pkgdir}/usr/share/icons/hicolor/${px}x${px}/apps/Zettlr.png" - done - - # Generate desktop entry file - # Based on descriptions in package.json and forge.config.js - install -Dm644 /dev/stdin "${pkgdir}/usr/share/applications/Zettlr.desktop" <<END -[Desktop Entry] -Name=Zettlr -Comment=A powerful Markdown Editor with integrated tree view -Exec=Zettlr %U -Terminal=false -Type=Application -Icon=Zettlr -StartupWMClass=Zettlr -MimeType=text/markdown; -Categories=Office; -END - - # Generate mimetype configuration file to associate with zettlr - # Based on electron-builder.yml - install -Dm644 /dev/stdin "${pkgdir}/usr/share/mime/packages/Zettlr.xml" <<END -<?xml version="1.0" encoding="utf-8"?> -<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> - <mime-type type="text/markdown"> - <glob pattern="*.md"/> - <comment>Markdown document</comment> - <icon name="x-office-document" /> - </mime-type> - <mime-type type="text/markdown"> - <glob pattern="*.markdown"/> - <comment>Markdown document</comment> - <icon name="x-office-document" /> - </mime-type> - <mime-type type="text/markdown"> - <glob pattern="*.rmd"/> - <comment>RMarkdown document</comment> - <icon name="x-office-document" /> - </mime-type> -</mime-info> -END - - # license - install -Dm644 -t "${pkgdir}/usr/share/licenses/${pkgname}/" "${srcdir}/Zettlr-${pkgver}/LICENSE" + install -Dm0755 "${source[1]}" "$pkgdir/usr/bin/$pkgname" + install -Dm0644 -t "$pkgdir/usr/share/applications/" "$pkgname.desktop" + cd "$_archive" + local _destdir="usr/lib/$pkgname" + install -Dm0644 -t "$pkgdir/$_destdir/resources/" \ + "out/$_pkgname-linux-x64/resources/"{app.asar,icon.code.icns} + ln -sf /usr/bin/pandoc "$pkgdir/$_destdir/resources/pandoc" + for px in 16 24 32 48 64 96 128 256 512 1024; do + install -Dm0644 "resources/icons/png/${px}x${px}.png" \ + "$pkgdir/usr/share/icons/hicolor/${px}x${px}/apps/$pkgname.png" + done + install -Dm0644 -t "$pkgdir/usr/share/mime/packages/" "../${source[2]}" } |