| 1 | # Contributor: Jakub Jirutka <[email protected]> |
| 2 | # Maintainer: Jakub Jirutka <[email protected]> |
| 3 | _luaversions="5.1 5.2 5.3 5.4 5.5" |
| 4 | pkgname=lua-compat53 |
| 5 | _rockname=compat53 |
| 6 | _pkgname=lua-compat-5.3 |
| 7 | pkgver=0.15.1 |
| 8 | pkgrel=0 |
| 9 | pkgdesc="Compatibility module providing Lua-5.3-style APIs for Lua" |
| 10 | url="https://github.com/lunarmodules/lua-compat-5.3" |
| 11 | arch="all" |
| 12 | license="MIT" |
| 13 | subpackages="$pkgname-dev" |
| 14 | for _v in $_luaversions; do |
| 15 | makedepends="$makedepends lua$_v-dev" |
| 16 | subpackages="$subpackages lua$_v-${pkgname#lua-}:_package" |
| 17 | done |
| 18 | source="$pkgname-$pkgver.tar.gz::https://github.com/lunarmodules/$_pkgname/archive/v$pkgver.tar.gz |
| 19 | test.patch |
| 20 | " |
| 21 | builddir="$srcdir/$_pkgname-$pkgver" |
| 22 | |
| 23 | # C modules to build: source_file:output_name |
| 24 | _c_modules="lutf8lib.c:utf8.so ltablib.c:table.so lstrlib.c:string.so" |
| 25 | |
| 26 | CC=${CC:-cc} |
| 27 | |
| 28 | # NOTE: We cannot build it using luarocks because of circular dependency. |
| 29 | _build() { |
| 30 | local lver="$1" |
| 31 | local lua_incdir="$(pkg-config --variable=includedir lua$lver)" |
| 32 | |
| 33 | msg "Building for Lua $lver..." |
| 34 | |
| 35 | mkdir -p "build-$lver/compat53" |
| 36 | |
| 37 | # Build C modules |
| 38 | local mod; for mod in $_c_modules; do |
| 39 | local src="${mod%:*}" |
| 40 | local soname="${mod#*:}" |
| 41 | |
| 42 | msg2 "Compiling $soname" |
| 43 | $CC $CFLAGS -fno-plt -fPIC -I"$lua_incdir" -c "$src" -o "${src%.c}.o" |
| 44 | $CC $LDFLAGS -shared -o "build-$lver/compat53/$soname" "${src%.c}.o" |
| 45 | done |
| 46 | |
| 47 | msg2 "Compiling testmod-${lver/./}.so" |
| 48 | $CC $CFLAGS -fPIC -shared -I"$lua_incdir" -Ic-api \ |
| 49 | -o "tests/testmod-${lver/./}.so" \ |
| 50 | tests/testmod.c |
| 51 | } |
| 52 | |
| 53 | build() { |
| 54 | local lver; for lver in $_luaversions; do |
| 55 | _build "$lver" |
| 56 | done |
| 57 | } |
| 58 | |
| 59 | check() { |
| 60 | cd tests |
| 61 | |
| 62 | local lver; for lver in $_luaversions; do |
| 63 | msg "Testing Lua $lver..." |
| 64 | |
| 65 | LUA_CPATH="$builddir/build-$lver/?.so;;" \ |
| 66 | lua$lver test.lua |
| 67 | done |
| 68 | } |
| 69 | |
| 70 | package() { |
| 71 | mkdir -p "$pkgdir" |
| 72 | } |
| 73 | |
| 74 | _package() { |
| 75 | local lver="${subpkgname:3:3}" |
| 76 | pkgdesc="$pkgdesc $lver" |
| 77 | depends="lua$lver" |
| 78 | install_if="$pkgname=$pkgver-r$pkgrel lua$lver" |
| 79 | local rockdir="$subpkgdir/usr/lib/luarocks/rocks-$lver/$_rockname/$pkgver-1" |
| 80 | |
| 81 | cd "$builddir" |
| 82 | |
| 83 | # Install C modules |
| 84 | install -D -m755 build-$lver/compat53/*.so -t "$subpkgdir"/usr/lib/lua/$lver/compat53/ |
| 85 | |
| 86 | # Install Lua modules |
| 87 | install -D -m644 compat53/*.lua -t "$subpkgdir"/usr/share/lua/$lver/compat53/ |
| 88 | |
| 89 | # Create rock manifest for luarocks compatibility |
| 90 | mkdir -p "$rockdir" |
| 91 | echo 'rock_manifest = {}' > "$rockdir"/rock_manifest |
| 92 | } |
| 93 | |
| 94 | dev() { |
| 95 | default_dev |
| 96 | |
| 97 | local incdir51="$subpkgdir/usr/include/lua5.1" |
| 98 | local incdir52="$subpkgdir/usr/include/lua5.2" |
| 99 | |
| 100 | cd "$builddir" |
| 101 | |
| 102 | install -D -m644 lprefix.h -t "$incdir51" |
| 103 | install -D -m644 c-api/* -t "$incdir51"/c-api/ |
| 104 | |
| 105 | mkdir -p "$incdir52"/c-api |
| 106 | cp -l "$incdir51"/*.h "$incdir52"/ |
| 107 | cp -l "$incdir51"/c-api/* "$incdir52"/c-api/ |
| 108 | } |
| 109 | |
| 110 | sha512sums=" |
| 111 | 6b17213321a08268228a97180e08289b85d6554b25cac89f7b7f72e79be0169af233fade87718b4a68485e0357dcb34245e660222e5c9d06254b0f3b64ef19cd lua-compat53-0.15.1.tar.gz |
| 112 | d25a565672d0e55ac1fbe80eba48368c7bffcc78e0c55ef93b231a2bff3296d70624ecceab81e0271da2a10a88bebd7b03072abb3a99e6b4fbe82fae73eabe32 test.patch |
| 113 | " |