aboutsummaryrefslogtreecommitdiffstats
path: root/testing/elektra/APKBUILD
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2018-02-07 13:46:33 +0100
committerJakub Jirutka <jakub@jirutka.cz>2018-02-07 13:47:19 +0100
commit120a747aea14fdcf1449a8264f90b048bcd5d97a (patch)
treea95c44241715f5f9bde728daac9cab16f012f07f /testing/elektra/APKBUILD
parent03c1bdba4241495011fc68cc4839efc34e21ae3f (diff)
downloadaports-120a747aea14fdcf1449a8264f90b048bcd5d97a.tar.bz2
aports-120a747aea14fdcf1449a8264f90b048bcd5d97a.tar.xz
testing/elektra: new aport
https://www.libelektra.org A universal and secure framework to access configuration parameters
Diffstat (limited to 'testing/elektra/APKBUILD')
-rw-r--r--testing/elektra/APKBUILD402
1 files changed, 402 insertions, 0 deletions
diff --git a/testing/elektra/APKBUILD b/testing/elektra/APKBUILD
new file mode 100644
index 0000000000..7773db4f5b
--- /dev/null
+++ b/testing/elektra/APKBUILD
@@ -0,0 +1,402 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+# TODO: Add rest of the tools.
+# TODO: Fix some scripts/tools to not require bash.
+pkgname=elektra
+_pkgname=libelektra
+pkgver=0.8.21
+pkgrel=0
+pkgdesc="A universal and secure framework to access configuration parameters"
+url="https://www.libelektra.org"
+arch="all"
+license="BSD-3-Clause"
+_luaver=5.3
+# kdb doesn't work correctly without these plugins.
+depends="$pkgname-dump=$pkgver-r$pkgrel
+ $pkgname-list=$pkgver-r$pkgrel
+ $pkgname-spec=$pkgver-r$pkgrel
+ $pkgname-sync=$pkgver-r$pkgrel"
+checkdepends="bash gtest"
+makedepends="
+ augeas-dev
+ boost-dev
+ cmake
+ curl-dev
+ discount discount-dev
+ fts-dev
+ libdrm-dev
+ libgcrypt-dev
+ libgit2-dev
+ libressl-dev
+ lua$_luaver-dev
+ glib-dev
+ python3-dev
+ qt5-qtbase-dev
+ qt5-qtdeclarative-dev
+ qt5-qtsvg-dev
+ ruby ruby-dev
+ swig
+ yajl-dev
+ yaml-cpp-dev
+ "
+install="$pkgname.post-deinstall"
+triggers="$pkgname.trigger=/usr/lib/$pkgname"
+subpackages="
+ $pkgname-dev
+ $pkgname-doc
+ $pkgname-glib
+ lua$_luaver-elektra:_lua
+ py3-elektra:_py3
+ ruby-elektra:_ruby
+ $pkgname-qt-gui:_gui
+ $pkgname-libs
+ $pkgname-bash-completion:bashcomp:noarch
+ $pkgname-fish-completion:fishcomp:noarch
+ $pkgname-zsh-completion:zshcomp:noarch
+ $pkgname-plugins-all:_all:noarch
+ "
+source="$_pkgname-$pkgver.tar.gz::https://github.com/ElektraInitiative/$_pkgname/archive/$pkgver.tar.gz
+ fix-bash-shebang.patch
+ fix-augeas-internal-inconsistency.patch
+ cmake-allow-override-rpath.patch"
+builddir="$srcdir/$_pkgname-$pkgver"
+options="!check" # FIXME!
+
+# All plugins except:
+# * status:obsolete
+# * status:experimental
+# * journald - considered evil
+# * wresolver - resolver for non-POSIX, e.g. w32/w64 systems
+# * xerces - we don't have xerces package
+# * yamlcpp - segfaults FIXME
+_plugins="
+ augeas
+ base64
+ boolean
+ c
+ cachefilter
+ camel
+ ccode
+ conditionals
+ constants
+ counter
+ crypto_gcrypt
+ crypto_openssl
+ csvstorage
+ curlget
+ date
+ desktop
+ dini
+ directoryvalue
+ dpkg
+ dump
+ enum
+ error
+ fcrypt
+ filecheck
+ fstab
+ gitresolver
+ glob
+ hexcode
+ hidden
+ hosts
+ iconv
+ ini
+ ipaddr
+ keytometa
+ line
+ lineendings
+ list
+ logchange
+ lua
+ mathcheck
+ mini
+ multifile
+ network
+ ni
+ noresolver
+ null
+ path
+ profile
+ python
+ range
+ regexstore
+ rename
+ required
+ resolver_fm_b_b
+ resolver_fm_pb_b
+ resolver_fm_hb_b
+ resolver_fm_hp_b
+ resolver_fm_ub_x
+ resolver_fm_xb_x
+ resolver_fm_xp_x
+ resolver_fm_xhp_x
+ resolver_fm_uhb_xb
+ resolver_fm_hpu_b
+ shell
+ spec
+ struct
+ sync
+ syslog
+ tcl
+ timeofday
+ tracer
+ type
+ uname
+ validation
+ xmltool
+ yajl
+ "
+for _i in $_plugins; do
+ subpackages="$subpackages $pkgname-$_i:_plugin"
+done
+
+# All bindings except:
+# * status:experimental
+# * intercept_env - currently doesn't work on musl (0.8.21)
+_bindings="
+ cpp
+ glib
+ swig_lua
+ swig_python
+ swig_ruby
+ "
+
+build() {
+ mkdir -p "$builddir"/build
+ cd "$builddir"/build
+
+ cmake .. \
+ -DCMAKE_BUILD_TYPE=MinSizeRel \
+ -DCMAKE_C_FLAGS_MINSIZEREL_INIT="$CFLAGS" \
+ -DCMAKE_CXX_FLAGS_MINSIZEREL_INIT="$CXXFLAGS" \
+ -DCMAKE_EXE_LINKER_FLAGS_MINSIZEREL_INIT="$LDFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_RPATH=/usr/lib/$pkgname \
+ -DTARGET_PLUGIN_FOLDER=$pkgname \
+ -DCMAKE_VERBOSE_MAKEFILE=OFF \
+ -DBUILD_DOCUMENTATION=OFF \
+ -DBUILD_SHARED_LIBS=ON \
+ -DBUILD_STATIC=OFF \
+ \
+ -DENABLE_DEBUG=OFF \
+ -DENABLE_LOGGER=OFF \
+ -DINSTALL_TESTING=OFF \
+ -DBINDINGS=$(printf '%s;' $_bindings) \
+ -DPLUGINS=$(printf '%s;' $_plugins) \
+ -DTOOLS='kdb;qt-gui' \
+ \
+ -DLUA_LIBRARIES="/usr/lib/liblua-$_luaver.so.0" \
+ -DLUA_INCLUDE_DIR=$(pkg-config --variable=includedir lua$_luaver ) \
+ -DTARGET_LUA_CMOD_FOLDER=$(pkg-config --variable=INSTALL_LMOD lua$_luaver) \
+ -DTARGET_LUA_CMOD_FOLDER=$(pkg-config --variable=INSTALL_CMOD lua$_luaver)
+ make
+}
+
+check() {
+ cd "$builddir"/build
+ make run_all
+}
+
+package() {
+ # These are virtual providers. abuild doesn't recognize them as
+ # produced by this APKBUILD and tries to install them as make
+ # dependencies. That's why they are defined in package().
+ depends="$depends $pkgname-resolver"
+
+ cd "$builddir"/build
+
+ make DESTDIR="$pkgdir" install
+
+ # This is a shell script that just executes /usr/lib/elektra/tool_exec/qt-gui.
+ # It was originally made as a workaround for some RPATH issue we don't have.
+ rm "$pkgdir"/usr/bin/elektra-qt-editor
+
+ cd "$pkgdir"/usr/lib/elektra
+
+ # We create these symlinks in trigger, so they are correctly updated
+ # when user install a different provider.
+ rm libelektra-resolver.so libelektra-storage.so
+
+ ## Delete some useless or unusable tools.
+
+ # Completions are in separate packages.
+ rm tool_exec/install-sh-completion
+ # This seems to be just for development.
+ rm tool_exec/benchmark-createtree
+ rm tool_exec/update-snippet-repository
+ # Needs experimental plugin mozprefs.
+ rm tool_exec/configure-firefox
+ # Needs binding intercept_env.
+ rm tool_exec/elektrify-getenv
+ # Needs experimental binding intercept_fs.
+ rm tool_exec/elektrify-open
+}
+
+libs() {
+ default_libs
+ mv "$pkgdir"/usr/lib/*.so.* "$subpkgdir"/usr/lib/
+}
+
+glib() {
+ pkgdesc="Glib bindings for Elektra"
+ depends=""
+
+ _submv usr/lib/libgelektra-*.so
+}
+
+_lua() {
+ pkgdesc="Lua $_luaver bindings for Elektra"
+ depends=""
+
+ _submv usr/lib/lua
+}
+
+_py3() {
+ pkgdesc="Python 3 bindings for Elektra"
+ depends=""
+
+ _submv usr/lib/python3.*
+}
+
+_ruby() {
+ pkgdesc="Ruby bindings for Elektra"
+ depends=""
+
+ _submv usr/lib/ruby
+}
+
+_gui() {
+ pkgdesc="Qt GUI for Elektra"
+ depends="$depends $pkgname-resolver"
+
+ _submv usr/lib/elektra/tool_exec/qt-gui usr/bin/elektra-qt-editor
+ _submv usr/share/appdata
+ _submv usr/share/applications
+ _submv usr/share/icons
+}
+
+bashcomp() {
+ pkgdesc="Bash completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel bash"
+
+ _submv usr/share/bash-completion
+}
+
+fishcomp() {
+ pkgdesc="Fish completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel fish"
+
+ _submv usr/share/fish/vendor_completions.d usr/share/fish/completions
+}
+
+zshcomp() {
+ pkgdesc="ZSH completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel zsh"
+
+ _submv usr/share/zsh/vendor-completions usr/share/zsh/site-functions
+}
+
+_plugin() {
+ local name=${subpkgname#$pkgname-}
+ local readme="$builddir/src/plugins/${name%%_*}/README.md"
+
+ [ -f "$readme" ] || die "$readme doesn't exist!"
+
+ pkgdesc="Elektra plugin - $(_getinfo description "$readme")"
+ depends=$(_to_pkgnames $(_getinfo needs "$readme" '') | xargs)
+
+ if provides=$(_getinfo provides "$readme"); then
+ # Convert plugin names to package names.
+ provides=$(_to_pkgnames $provides)
+
+ # Remove pkgnames clashing with subpackages.
+ : ${_plugins_pkgname:="$(printf "$pkgname-%s\n" $_plugins dev doc libs)"}
+ provides=$(_set_difference "$provides" "$_plugins_pkgname" | xargs)
+ fi
+
+ # Overrides
+ case "$name" in
+ base64)
+ provider_priority=50;; # provides binary
+ crypto_gcrypt)
+ depends="$depends gnupg"
+ provider_priority=50;; # provides crypto
+ crypto_*)
+ depends="$depends gnupg";;
+ dini)
+ depends="$depends $pkgname-dump $pkgname-ini"
+ provider_priority=40;; # provides storage storage-ini
+ dump)
+ provider_priority=50;; # provides storage
+ hexcode)
+ provider_priority=50;; # provides code
+ resolver_fm_hpu_b)
+ provider_priority=50;; # provides resolver
+ esac
+ msg "Resolved provides: $provides"
+ msg "Resolved depends: $depends"
+
+ _submv usr/lib/elektra/libelektra-$name.so*
+}
+
+_all() {
+ pkgdesc="Virtual package that installs *all* plugins shipped with Elektra"
+ depends=$(printf "$pkgname-%s=$pkgver-r$pkgrel\n" $_plugins)
+
+ mkdir -p "$subpkgdir"
+}
+
+# Prints value of property $1 in the plugin's readme file $2,
+# or prints $3 if no value.
+_getinfo() {
+ local name="$1"
+ local file="$2"
+ local default="${3:-}"
+ local value
+
+ value=$(sed -n "s|^- infos/$name = *\(.*\) *|\1|p" "$file")
+ [ "$value$default" ] || return 1
+ printf '%s\n' "${value:-$default}"
+}
+
+# Converts plugin names $@ into package names, i.e. adds prefix $pkgname-
+# and replaces "/" with "-".
+_to_pkgnames() {
+ local item; for item in "$@"; do
+ case "$item" in
+ */*) echo "$pkgname-${item%%/*}"
+ echo "$pkgname-$item" | tr '/' '-';;
+ *) echo "$pkgname-$item";;
+ esac
+ done
+}
+
+# Prints space-separated items from $1 that are not in $2.
+_set_difference() {
+ printf '%s\n' $1 $2 $2 | sort | uniq -u
+}
+
+# Moves file/directory $1 from the $pkgdir to $2 (or $1 if $2 not given)
+# in the $subpkgdir.
+_submv() {
+ local src="$1"
+ local dest="${2:-}"
+
+ if [ "$dest" ]; then
+ mkdir -p "$subpkgdir"/${dest%/*}
+ mv "$pkgdir"/$src "$subpkgdir"/$dest
+ else
+ mkdir -p "$subpkgdir"/${src%/*}
+ mv "$pkgdir"/$src "$subpkgdir"/${src%/*}/
+ fi
+ rmdir -p "$pkgdir"/${src%/*} 2>/dev/null || true
+}
+
+sha512sums="9ad3bb7eeb36d921189d93cb347ec73262503d85397b574ef603080cee52d1959752740e5018a0e7eb5dc187bce8aae3b6fc0057a6385bce94e5338604c6bc57 libelektra-0.8.21.tar.gz
+cbfe8b96a806825d5f7194734a646bdb3fb273bf6be44b3b47e9b2f63bf90a7ece867e74808da743ff33211abba0682aba55d02a3dbfa0a5efc3dc821444bd87 fix-bash-shebang.patch
+48d645142bf63282e13d1c76c1ddedc5633e365a1a87d0cd49c75fa801eed44b57fb66eee49badc7a9e6210f6ccd2af82779f0658f90263fd23b959f4e70b84c fix-augeas-internal-inconsistency.patch
+717b343b6509d14949a154bbbf13d5722f47f97717dbd839763fc89f8f9033d5214f903df23b4ca7f196ae9dbfe6a3348542411c714e471ca4a50b39bdff3abc cmake-allow-override-rpath.patch"