From 2a8e89e412a0cb344c62aee455d522cd983be1d7 Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Thu, 29 Mar 2018 02:21:27 +0200 Subject: Upload tools for the source (non-vcs) versions --- src/make_install.sh | 15 ++++++ src/sample.PKGBUILD | 38 ++++++++++++++++ src/sample.install | 78 ++++++++++++++++++++++++++++++++ src/update.sh | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 259 insertions(+) create mode 100755 src/make_install.sh create mode 100644 src/sample.PKGBUILD create mode 100644 src/sample.install create mode 100755 src/update.sh diff --git a/src/make_install.sh b/src/make_install.sh new file mode 100755 index 0000000..a24837f --- /dev/null +++ b/src/make_install.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ "$#" -lt 1 ] +then + echo "Usage: $0 xy-zw [base_dir]" >&2 + exit 1 +elif [ "$#" -gt 1 ] +then + cd "$2" || exit 1 +fi + +lang=$1 +pkgname=dict-freedict-${lang} + +sed "s/%LANG%/${lang}/g" sample.install > ${pkgname}/${pkgname}.install diff --git a/src/sample.PKGBUILD b/src/sample.PKGBUILD new file mode 100644 index 0000000..7aaa338 --- /dev/null +++ b/src/sample.PKGBUILD @@ -0,0 +1,38 @@ +# Maintainer: Einhard Leichtfuß +%CONTRS% +_lang=%LANG% +pkgname=dict-freedict-${_lang} +pkgver=%VER% +_pkgver=${pkgver//_/-} +pkgrel=1 +pkgdesc="%LANG_A% -> %LANG_B% dictionary for dictd et al. from Freedict.org" +arch=('any') +url="http://www.freedict.org/" +license=('GPL') +optdepends=('dictd: dict client and server') +makedepends=('dictd' 'freedict-tools') +install=${pkgname}.install +source=("https://sourceforge.net/projects/freedict/files/${_lang}/${_pkgver}/freedict-${_lang}-${_pkgver}.src.tar.xz") +sha512sums=('%CHECKSUM%') + +%PREPARE% + +build() +{ + cd $_lang + make FREEDICT_TOOLS=/usr/lib/freedict-tools build-dictd +} + +package() +{ + mkdir -p "${pkgdir}/usr/share/dictd" + cp ${_lang}/build/dictd/${_lang}.{dict.dz,index} \ + "${pkgdir}/usr/share/dictd/" + + mkdir -p "${pkgdir}/usr/share/doc/freedict/${_lang}" + for file in ${_lang}/{AUTHORS,README,NEWS,ChangeLog} + do + test -f ${file} && \ + cp ${file} "${pkgdir}/usr/share/doc/freedict/${_lang}/" + done +} diff --git a/src/sample.install b/src/sample.install new file mode 100644 index 0000000..882fbf5 --- /dev/null +++ b/src/sample.install @@ -0,0 +1,78 @@ +basename=%LANG% +pkgname=dict-freedict-$basename +dictd_conf=/etc/dict/dictd.conf +datadir=/usr/share/dictd +conf="database $basename { + data $datadir/$basename.dict.dz + index $datadir/$basename.index +}" + +post_install() +{ + echo + if pacman -Qq dictd > /dev/null 2>&1 + then + if grep -q "^database *$basename" "$dictd_conf" + then + echo "$pkgname already configured in $dictd_conf" + else + echo "Adding configuration for $pkgname to $dictd_conf" + echo "$conf" >> "$dictd_conf" + fi + + if systemctl -q is-active dictd.service + then + echo "Restarting dictd service in order to" \ + "use the new dictionary database" + systemctl restart dictd.service + else + echo "Starting dictd service in order to" \ + "use the new dictionary database" + systemctl start dictd.service + fi + else + echo "dictd does not appear to be installed." + echo "In order to use this database you should either" \ + "install dictd or alternatively" \ + "another dict server and configure it on your own." + fi + echo +} + +post_upgrade() +{ + if pacman -Qq dictd > /dev/null 2>&1 && \ + systemctl -q is-active dictd.service + then + echo -e "\nRestarting dictd service in order to" \ + "use the updated dictionary database" + systemctl restart dictd.service + fi +} + +post_remove() +{ + if pacman -Qq dictd > /dev/null 2>&1 + then + current_conf="$(grep -A 3 "^database *$basename" "$dictd_conf")" + if test -n "$current_conf" + then + echo + if test "$current_conf" = "$conf" + then + echo "Removing configuration for $pkgname from $dictd_conf" + sed -i "/database $basename {/,/}/d" "$dictd_conf" + else + echo "User created / modified configuration" \ + "for $pkgname in $dictd_conf is left untouched." + fi + fi + + if systemctl -q is-active dictd.service + then + echo "Restarting dictd service in order to" \ + "stop using the removed dictionary database" + systemctl restart dictd.service + fi + fi +} diff --git a/src/update.sh b/src/update.sh new file mode 100755 index 0000000..50720e7 --- /dev/null +++ b/src/update.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +if [ "$#" -ne 0 ] +then + cd "$1" || exit 1 +fi + +typeset -a langs +langs=( + fra-deu deu-fra + deu-eng eng-deu + fra-eng eng-fra + spa-eng eng-spa + ) + +typeset -A long +long[fra]=French +long[deu]=German +long[eng]=English +long[spa]=Spanish + +typeset -A contrs +contrs[deu-eng]=\ +'# Contributor: akane '$'\n' +contrs[eng-deu]=\ +'# Contributor: akane '$'\n' +contrs[fra-eng]=\ +'# Contributor: Benjamin Vanderford '$'\n' +contrs[eng-fra]=\ +'# Contributor: Benjamin Vanderford '$'\n' + +typeset -A prepare +prepare[deu-fra]=\ +'prepare() +{ + cd $_lang + sed -i '"'s/\(10\)\(100\>.*1 mit 100 Nullen\)/\1\^\2/'"' ${_lang}.tei +} +' + + +# $1: lang to update +function update +{ + echo "Updating $lang ($pkgver -> $convver)..." + + lang_a="${long[${lang%-*}]}" + lang_b="${long[${lang#*-}]}" + + checksum="$(wget -qO - "$url" | sha512sum | sed -E 's/\s*-$//')" + + tmp="$(mktemp)" + tmp_="$(mktemp)" + + sed -e "s/%LANG%/${lang}/" \ + -e "s/%LANG_A%/${lang_a}/; s/%LANG_B%/${lang_b}/" \ + -e "s/%VER%/${convver}/" \ + -e "s/%CHECKSUM%/${checksum}/" \ + < ../sample.PKGBUILD \ + > "$tmp" + + if test -n "${contrs[$lang]}" + then + cat <(sed '/%CONTRS%/,$ d' < "$tmp") \ + <(echo -n "${contrs[$lang]}") \ + <(sed '0,/%CONTRS%/ d' < "$tmp") \ + > "$tmp_" + else + sed '/%CONTRS%/ d' < "$tmp" > "$tmp_" + fi + + if [[ "$ver" == "$convver" ]] + then + sed -i \ + -e '/^_pkgver=\${pkgver\/\/_\/-}$/ d' \ + -e 's/_pkgver/pkgver/g' \ + "$tmp_" + fi + + if test -n "${prepare[$lang]}" + then + cat <(sed '/%PREPARE%/,$ d' < "$tmp_") \ + <(echo -n "${prepare[$lang]}") \ + <(sed '0,/%PREPARE%/ d' < "$tmp_") \ + > PKGBUILD + else + sed '/%PREPARE%/,+1 d' < "$tmp_" > PKGBUILD + fi + + makepkg --printsrcinfo > .SRCINFO + + rm "$tmp" "$tmp_" +} + + +curl -sO http://freedict.org/freedict-database.json + + +for lang in ${langs[@]} +do + cd dict-freedict-${lang} + git pull -q + pkgver="$(grep pkgver .SRCINFO | sed -E 's/\s*pkgver\s*=\s*(.+)\s*/\1/')" + ver="$(jq -r ".[] | select(.name == \"${lang}\") | .releases[] | select(.platform==\"src\") | .version" ../freedict-database.json)" + url="$(jq -r ".[] | select(.name == \"${lang}\") | .releases[] | select(.platform==\"src\") | .URL" ../freedict-database.json)" + url="${url%/download}" + convver="${ver//-/_}" + + if [[ "$pkgver" != "$convver" ]] + then + echo "$lang requires update ($pkgver -> $convver)." + urq=true + else + urq=false + fi + + if [[ "$url" != "https://sourceforge.net/projects/freedict/files/${lang}/${ver}/freedict-${lang}-${ver}.src.tar.xz" ]] + then + echo "$lang URL changed ($url)." + else + if [[ "$1" == "-u" && "$2" == "$lang" ]] || ([[ "$1" == "-ua" ]] && $urq) + then + update "$2" + fi + fi + + cd .. +done -- cgit v1.2.3