development/metakit: Added (embedded database library)

This replaces Mk4tcl.

Signed-off-by: Dave Woodfall <dave@slackbuilds.org>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
Juan M. Lasca 2022-08-06 02:17:02 +01:00 committed by Willy Sudiarto Raharjo
parent fb556a691d
commit 75f1483313
No known key found for this signature in database
GPG Key ID: 3F617144D7238786
4 changed files with 202 additions and 0 deletions

View File

@ -0,0 +1,20 @@
Metakit is an efficient embedded database library with a small
footprint. It fills the gap between flat-file, relational,
object-oriented, and tree-structured databases, supporting
relational joins, serialization, nested structures, and instant schema
evolution. There is a C++ API, a Python binding called Mk4py, and a Tcl
binding called Mk4tcl. You can manipulate and exchange data between
any of these.
Data files are portable. The library has been used on Unix, Windows,
Macintosh, VMS, and others, spanning a range of 16- to 64-bit
architectures, from PDA's to S390's.
Metakit is in use in various commercial projects and products on
millions of desktops.
This script builds libmk4, Mk4tcl (bindings for Tcl) and Mk4py
(bindings for Python)
If Mk4Py is not desired, the user may set WITH_PYTHON to "NO", e.g.:
WITH_PYTHON="NO" ./Mk4tcl.SlackBuild

View File

@ -0,0 +1,153 @@
#!/bin/bash
# Slackware build script for metakit
# Based on the build script for Mk4tcl
# Originally written by Zbigniew Baniewski <Zbigniew dot Baniewski [at] gmail [dot] com>
# Copyright 2022 Juan M. Lasca <juanmlasca@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 20220731 from pacakge Mk4tcl:
# * Updated download link
# * Added (optional) Python support
# * Removed Makefile patch (DESTDIR issue corrected via sed)
# * Removed demo binaries (not needed)
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=metakit
VERSION=${VERSION:-2.4.9.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf ${PRGNAM}-${VERSION}
unzip $CWD/${PRGNAM}-${VERSION}.zip
cd ${PRGNAM}-${VERSION}
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
# correct makefiles
sed -i 's/DESTDIR=/DESTDIR ?=/' unix/Makefile.in
sed -i 's/DESTDIR.*=/DESTDIR ?=/' tcl/Makefile.in
mkdir -p builds
cd builds
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
../unix/configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
[ "$ARCH" == "x86_64" ] && ENABLE_64BITS=--enable-64bits || ENABLE_64BITS=""
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
CC=g++ \
../tcl/configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--with-tcl=/usr/lib${LIBDIRSUFFIX} \
--with-tclinclude=/usr/include \
$ENABLE_64BITS \
--enable-threads \
--enable-shared \
--enable-load \
--build=$ARCH-slackware-linux
make
make install-binaries DESTDIR=$PKG
rmdir $PKG/usr/bin
WITH_PYTHON=${WITH_PYTHON:-"YES"}
if [ "$WITH_PYTHON" != "NO" ]; then
cd ../python
python2 setup.py install --root=$PKG
fi
cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
demos doc examples license.terms \
$PKG/usr/doc/$PRGNAM-$VERSION
find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View File

@ -0,0 +1,10 @@
PRGNAM="metakit"
VERSION="2.4.9.8"
HOMEPAGE="https://equi4.com/metakit/"
DOWNLOAD="https://git.jeelabs.org/metakit/snapshot/metakit-2.4.9.8.zip"
MD5SUM="86b3b1c1aac302fd2218cae8aacd6b05"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Juan M. Lasca"
EMAIL="juanmlasca@gmail.com"

View File

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
metakit: metakit (embedded database library)
metakit:
metakit: Metakit is an efficient embedded database library with a small
metakit: footprint. It fills the gap between flat-file, relational,
metakit: object-oriented, and tree-structured databases, supporting relational
metakit: joins, serialization, nested structures, and instant schema evolution.
metakit: This package comprises the metakit library, Tcl and Python bindings.
metakit: Data files are portable. The library has been used on Unix, Windows,
metakit: Macintosh, VMS, and others.
metakit:
metakit: Homepage: https://equi4.com/metakit/