summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohnny English2017-10-08 23:08:32 +0200
committerJohnny English2017-10-08 23:08:32 +0200
commitbf610c121d55772cb9f3bffbbd1290112d8b3bb3 (patch)
treefacb435410f9c748baa50a2a5a226cdc073a2138
parent86434f4758271fb28e32384e9e53b413fd15ce40 (diff)
downloadaur-bf610c121d55772cb9f3bffbbd1290112d8b3bb3.tar.gz
change: remove support for currently poorly maintained modules
add: unit testing for the existence of compiled .so libs change: version bump
-rw-r--r--PKGBUILD386
1 files changed, 221 insertions, 165 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 8f2dc2ee3ac9..85c591607229 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,13 +1,15 @@
# Maintainer: dumblob <dumblob@gmail.com>
# Contributor: dumblob <dumblob@gmail.com>
+_mode=release
+#_mode=debug
_basename=dao
pkgname=${_basename}-git
-pkgver=1608.7be283f
+pkgver=1783.0e31564f
pkgrel=1
# LLVM JIT
-pkgdesc='A very lightweight, portable, optionally typed programming language and VM written in C featuring blazingly fast real concurrency, defer, OOP, AOP, bytecode, BNF macros, high-level standard library, advanced modules & bindings and much more!'
+pkgdesc='A modern, very lightweight, portable, optionally typed programming language and VM written in C featuring blazingly fast real concurrency, defer, OOP, AOP, bytecode, high-level standard library, advanced modules & bindings and much more!'
url='http://www.daovm.net/'
license=('BSD')
arch=('i686' 'x86_64')
@@ -21,42 +23,42 @@ source=(
#"$_basename-tools::git+https://github.com/daokoder/$_basename-tools#branch=Compatibility_Clang_3_3"
"$_basename-modules::git+https://github.com/daokoder/$_basename-modules"
#"$_basename-modules::git+https://github.com/daokoder/$_basename-modules#branch=Compatibility_Clang_3_3"
- "DaoCXX::git+https://github.com/daokoder/DaoCXX"
- "DaoGenomeTools::git+https://github.com/daokoder/DaoGenomeTools"
- "DaoGObject::git+https://github.com/daokoder/DaoGObject"
+ #"DaoCXX::git+https://github.com/daokoder/DaoCXX"
+ #"DaoGenomeTools::git+https://github.com/daokoder/DaoGenomeTools"
+ #"DaoGObject::git+https://github.com/daokoder/DaoGObject"
"DaoGraphics::git+https://github.com/daokoder/DaoGraphics"
- "DaoGSL::git+https://github.com/daokoder/DaoGSL"
- "DaoJIT::git+https://github.com/daokoder/DaoJIT"
- "DaoOpenGL::git+https://github.com/daokoder/DaoOpenGL"
+ #"DaoGSL::git+https://github.com/daokoder/DaoGSL"
+ #"DaoJIT::git+https://github.com/daokoder/DaoJIT"
+ #"DaoOpenGL::git+https://github.com/daokoder/DaoOpenGL"
"DaoSQL::git+https://github.com/daokoder/DaoSQL"
- "DaoSDL::git+https://github.com/daokoder/DaoSDL"
+ #"DaoSDL::git+https://github.com/daokoder/DaoSDL"
)
sha256sums=(
- 'SKIP'
- 'SKIP'
- #'SKIP'
- 'SKIP'
- #'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
+ 'SKIP' # dao
+ 'SKIP' # dao-tools
+ #'SKIP' # dao-tools#branch
+ 'SKIP' # dao-modules
+ #'SKIP' # dao-modules#branch
+ #'SKIP' # daocxx
+ #'SKIP' # daogenometools
+ #'SKIP' # daogobject
+ 'SKIP' # daographics
+ #'SKIP' # daogsl
+ #'SKIP' # daojit
+ #'SKIP' # daoopengl
+ 'SKIP' # daosql
+ #'SKIP' # daosdl
)
-depends=('gcc-libs-multilib')
+depends=('gcc-libs-multilib') # -multilib allows running 32b apps on 64b CPUs
makedepends=(
- #'emscripten-git' (wait until clang 3.6 becomes supported)
+ #'emscripten-git' # 2017-03-03 13:49:05 UTC+1 clang >=3.6 not yet supported
#'genometools'
- 'glib2'
- 'gobject-introspection'
+ #'glib2'
+ #'gobject-introspection'
# modules/DaoGraphics/deps/glfw/makefile.dao
###'libgl' # OpenGL for DaoGraphics and DaoOpenGL
- 'glu' # OpenGL for DaoGraphics and DaoOpenGL
+ #'glu' # OpenGL for DaoGraphics and DaoOpenGL
'libx11' # X11 for DaoGraphics
'libxrandr' # Xrandr for DaoGraphics
'libxinerama' # Xinerama for DaoGraphics
@@ -68,107 +70,119 @@ makedepends=(
'sqlite'
'libmariadbclient'
'postgresql-libs'
- 'libffi'
- 'sdl2'
- 'cblas'
- 'gsl'
- 'clang'
- 'llvm' # FIXME needed because of the dirty buld-time patch below
+ #'libffi' # clinker ships with its own version of libffi
+ #'sdl2'
+ #'cblas'
+ #'gsl'
+ #'clang'
+ #'llvm' # needed for the dirty buld-time patch below
'readline'
'zlib'
)
optdepends=(
#'emscripten-git: support for compilation to JavaScript'
#'genometools: needed by the DaoGenomeTools module'
- 'glib2: needed by the DaoGObject module (runtime binding generation)'
- 'gobject-introspection: needed by the DaoGObject module (runtime binding generation)'
+ #'glib2: needed by the DaoGObject module (runtime binding generation)'
+ #'gobject-introspection: needed by the DaoGObject module (runtime binding generation)'
'libxinerama: needed by the DaoGraphics module'
'libxi: needed by the DaoGraphics module'
'libxrandr: needed by the DaoGraphics module'
+ 'libxcursor: needed by the DaoGraphics module'
'glu: needed by the DaoGraphics and DaoOpenGL modules'
'sqlite: needed by the DaoSQLite module'
'libmariadbclient: needed by the DaoMySQL module'
'postgresql-libs: needed by the DaoPostgreSQL module'
- 'libffi: needed by the clinker module (allows calling C functions directly from Dao)'
- 'sdl2: needed by the DaoSDL module'
- 'cblas: needed by the cblas module'
- 'gsl: needed by the DaoGSL module (GNU Scientific Library)'
- 'clang: needed by clangdao (a C/C++ library autobinding tool)'
- 'zlib: needed by the JIT and CXX modules'
+ # clinker ships with its own version of libffi
+ #'libffi: needed by the clinker module (allows calling C functions directly from Dao without compiling them as a Dao module)'
+ #'sdl2: needed by the DaoSDL module'
+ #'cblas: needed by the cblas module'
+ #'gsl: needed by the DaoGSL module (GNU Scientific Library)'
+ #'clang: needed by clangdao (binding generator for C/C++ libs)'
+ #'zlib: needed by the JIT and CXX modules'
)
provides=('dao')
conflicts=('dao')
replaces=('dao-lang-git')
+pkgver() {
+ cd "$_basename"
+ echo "$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
+}
+
build() {
mv "$_basename-tools/"* "$_basename/tools/"
+ # FIXME 2017-03-03 13:49:05 UTC+1 clang >=3.6 not yet supported
+ rm -r "$_basename/tools/clangdao/"
+
mv "$_basename-modules/"* "$_basename/modules/"
+ # not maintained
#mv "DaoCXX/" "$_basename/modules/"
- # FIXME not getting compiled
- mv "DaoGenomeTools/" "$_basename/modules/"
- # FIXME not getting compiled
- mv "DaoGObject/" "$_basename/modules/"
- # FIXME not updated to the current Dao
- #mv "DaoGraphics/" "$_basename/modules/"
- mv "DaoGSL/" "$_basename/modules/"
- # FIXME not getting compiled
+ # not maintained
+ #mv "DaoGenomeTools/" "$_basename/modules/"
+ # not maintained
+ #mv "DaoGObject/" "$_basename/modules/"
+ mv "DaoGraphics/" "$_basename/modules/"
+ # not maintained
+ #mv "DaoGSL/" "$_basename/modules/"
+ # not maintained
#mv "DaoJIT/" "$_basename/modules/"
- mv "DaoOpenGL/" "$_basename/modules/"
+ # not maintained
+ #mv "DaoOpenGL/" "$_basename/modules/"
mv "DaoSQL/" "$_basename/modules/"
- # FIXME see also below `sed -i ...'
- # wrap/dao_sdl.h:18:16: fatal error: SDL.h: No such file or directory
- # #include"SDL.h"
+ # not maintained
#mv "DaoSDL/" "$_basename/modules/"
+
cd "$_basename"
- # FIXME https://github.com/daokoder/dao-modules/issues/73
-# rm -rf modules/clinker/
-
- # order matters when using gcc
- patch -R tools/clangdao/makefile.dao <<\EOF
-@@ -44,9 +44,9 @@
- clangdao_exe.AddLinkingFlag( "-lclangSema" )
- clangdao_exe.AddLinkingFlag( "-lclangAnalysis" )
- clangdao_exe.AddLinkingFlag( "-lclangAST" )
--clangdao_exe.AddLinkingFlag( "-lclangEdit" )
- clangdao_exe.AddLinkingFlag( "-lclangLex" )
- clangdao_exe.AddLinkingFlag( "-lclangBasic" )
-+clangdao_exe.AddLinkingFlag( "-lclangEdit" )
- clangdao_exe.AddLinkingFlag( "-lclangSerialization" )
- clangdao_exe.AddLinkingFlag( "-lclangStaticAnalyzerCheckers" )
- clangdao_exe.AddLinkingFlag( "-lclangStaticAnalyzerCore" )
-EOF
- # each object file includes symbols from Clang and LLVM (and Clang
- # object files in turn include symbols from LLVM)
- sed -i -r "/-lclangStaticAnalyzerFrontend/a\
- clangdao_exe.AddLinkingFlag( \"$(llvm-config --libs)\" )" \
- tools/clangdao/makefile.dao
- # Clang 3.6 uses std::unique_ptr<> => wrap pointers
- patch tools/clangdao/clangdao.cpp <<\EOF
-@@ -457,7 +457,7 @@
- compiler.createSourceManager(compiler.getFileManager());
- compiler.createPreprocessor( TU_Complete );
- compiler.createASTContext();
-- compiler.setASTConsumer( new CDaoASTConsumer( & compiler, & module ) );
-+ compiler.setASTConsumer( unique_ptr<clang::ASTConsumer>( new CDaoASTConsumer( & compiler, & module ) ) );
- //XXX compiler.createSema(false, NULL);
- //compiler.createSema(TU_Module, NULL);
- compiler.createSema(TU_Prefix, NULL);
-@@ -478,7 +478,7 @@
- //outs()<<builtinDefines<<"\n";
-
- pp.setPredefines( builtinDefines + "\n" + predefines );
-- pp.addPPCallbacks( new CDaoPPCallbacks( & compiler, & module ) );
-+ pp.addPPCallbacks( unique_ptr<clang::PPCallbacks>( new CDaoPPCallbacks( & compiler, & module ) ) );
-
- InputKind ik = FrontendOptions::getInputKindForExtension( main_input_file );
- compiler.InitializeSourceManager( FrontendInputFile( main_input_file, ik ) );
-EOF
-
- # LLVM 3.6 renamed JIT to MCJIT and added std::unique_ptr<> => wrap pointers
-#patch modules/DaoJIT/daoJIT.cpp <<\EOF
+
+# # FIXME https://github.com/daokoder/dao-modules/issues/73
+# rm -r modules/clinker/
+
+# # order matters when using gcc
+# patch -R tools/clangdao/makefile.dao <<\EOF
+# @@ -44,9 +44,9 @@
+# clangdao_exe.AddLinkingFlag( "-lclangSema" )
+# clangdao_exe.AddLinkingFlag( "-lclangAnalysis" )
+# clangdao_exe.AddLinkingFlag( "-lclangAST" )
+# -clangdao_exe.AddLinkingFlag( "-lclangEdit" )
+# clangdao_exe.AddLinkingFlag( "-lclangLex" )
+# clangdao_exe.AddLinkingFlag( "-lclangBasic" )
+# +clangdao_exe.AddLinkingFlag( "-lclangEdit" )
+# clangdao_exe.AddLinkingFlag( "-lclangSerialization" )
+# clangdao_exe.AddLinkingFlag( "-lclangStaticAnalyzerCheckers" )
+# clangdao_exe.AddLinkingFlag( "-lclangStaticAnalyzerCore" )
+# EOF
+# # each object file includes symbols from Clang and LLVM (and Clang
+# # object files in turn include symbols from LLVM)
+# sed -i -r "/-lclangStaticAnalyzerFrontend/a\
+# clangdao_exe.AddLinkingFlag( \"$(llvm-config --libs)\" )" \
+# tools/clangdao/makefile.dao
+# # Clang 3.6 uses std::unique_ptr<> => wrap pointers
+# patch tools/clangdao/clangdao.cpp <<\EOF
+# @@ -457,7 +457,7 @@
+# compiler.createSourceManager(compiler.getFileManager());
+# compiler.createPreprocessor( TU_Complete );
+# compiler.createASTContext();
+# - compiler.setASTConsumer( new CDaoASTConsumer( & compiler, & module ) );
+# + compiler.setASTConsumer( unique_ptr<clang::ASTConsumer>( new CDaoASTConsumer( & compiler, & module ) ) );
+# //XXX compiler.createSema(false, NULL);
+# //compiler.createSema(TU_Module, NULL);
+# compiler.createSema(TU_Prefix, NULL);
+# @@ -478,7 +478,7 @@
+# //outs()<<builtinDefines<<"\n";
+#
+# pp.setPredefines( builtinDefines + "\n" + predefines );
+# - pp.addPPCallbacks( new CDaoPPCallbacks( & compiler, & module ) );
+# + pp.addPPCallbacks( unique_ptr<clang::PPCallbacks>( new CDaoPPCallbacks( & compiler, & module ) ) );
+#
+# InputKind ik = FrontendOptions::getInputKindForExtension( main_input_file );
+# compiler.InitializeSourceManager( FrontendInputFile( main_input_file, ik ) );
+# EOF
+
+# # LLVM 3.6 renamed JIT to MCJIT and added std::unique_ptr<> => wrap pointers
+# patch modules/DaoJIT/daoJIT.cpp <<\EOF
#@@ -38,7 +38,7 @@
# #include "llvm/IR/Verifier.h"
# #include "llvm/Analysis/Passes.h"
@@ -265,104 +279,146 @@ EOF
# return 1;
#EOF
+ # FIXME 2017-03-05 22:55:38 UTC+1 fill a bug as the .so is useless (unlike .a)
+ sed -i -r '/AddSharedLibrary/d' modules/web/html/gumbo-parser/makefile.dao
+
+ # namcap: ELF file outside of a valid path
+ sed -i -r '/sample_dll/d' modules/clinker/makefile.dao
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 fill a bug as the .so is useless (unlike .a)
+ sed -i -r '/ffi_dll/d' modules/clinker/libffi/makefile.dao
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 https://github.com/daokoder/dao-modules/issues/86
+ # the module is not any more available (FIXME but is used in documentation)
+ #rm -r modules/protobject/
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 https://github.com/daokoder/dao-modules/issues/87
+ rm -r modules/macro/
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 fill a bug as the .so is useless (unlike .a)
+ sed -i -r '/onigmo_dll/d' modules/regex/Onigmo/makefile.dao
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 https://github.com/daokoder/dao-modules/issues/88
+ rm -r modules/cblas/
+
+ # FIXME 2017-03-05 22:55:38 UTC+1 https://github.com/daokoder/dao-modules/issues/89
+ rm -r modules/testing/
+
# gl.h is provided by mesa
- sed -i -r 's|(#include) *"gl.h"|\1 <GL/gl.h>|' \
- modules/DaoOpenGL/wrap/dao_opengl.h
+ #sed -i -r 's|(#include) *"gl.h"|\1 <GL/gl.h>|' \
+ # modules/DaoOpenGL/wrap/dao_opengl.h
# https://github.com/daokoder/DaoSQL/issues/2
sed -i -r 's|(#include) *"mysql.h"|\1 <mysql/mysql.h>|' \
modules/DaoSQL/DaoMySQL/daoMySQL.h
- # FIXME https://github.com/daokoder/DaoSDL/issues/2
- #sed -i -r 's|(#include) *"(SDL[^"]+)"|\1 <SDL2/\2>|' \
- # modules/DaoSDL/wrap/dao_sdl.h
-
- # enable disabled-by-default GObject bindings
- # FIXME not getting compiled (not anymore in dao-modules/makefile.dao???)
- patch modules/DaoGObject/makefile.dao <<\EOF
-@@ -4,7 +4,8 @@
- glib = DaoMake::FindPackage( "GLib", $REQUIRED )
- gir = DaoMake::FindPackage( "GIR", $REQUIRED )
-
--if( daovm == none or ffi == none or glib == none or gir == none ) return
-+if( daovm == none or ffi == none or glib == none or gir == none )
-+ std.error( 'one of packages daovm, ffi, glib, gir is missing' )
-
- project = DaoMake::Project( "DaoGobject" )
-
-@@ -35,7 +36,7 @@
-
-
-
--#project.GenerateFinder( $TRUE );
--#project.Install( daovm.GetPath( "MOD-PATH" ), gobject_dll );
--#project.Install( daovm.GetPath( "MOD-PATH" ), ffiite_dll );
--#project.Install( daovm.GetPath( "MOD-PATH" ), myffi_dll );
-+project.GenerateFinder( $TRUE );
-+project.Install( daovm.GetPath( "MOD-PATH" ), gobject_dll );
-+project.Install( daovm.GetPath( "MOD-PATH" ), ffiite_dll );
-+project.Install( daovm.GetPath( "MOD-PATH" ), myffi_dll );
-EOF
-
- # FIXME should dao.conf be installed along with Dao?
- sed -i -r -e "s/# *(cpu *=).*/\1$(grep '^processor' /proc/cpuinfo | wc -l)/" \
- dao.conf
- #-e 's/# *(jit *=).*/\1yes/' dao.conf
-
- # stop right after the daomake tool creates the Makefile
+ # FIXME is dao.conf needed to be installed along with Dao VM?
+ sed -i -r -e \
+ "s/# *(cpu *=).*/\1$(grep '^processor' /proc/cpuinfo | wc -l)/" dao.conf
+ #'s/# *(jit *=).*/\1yes/' dao.conf
+
+ # DEBUG stop right after the daomake tool creates the Makefile
#sed -i -r 's|^[[:space:]]*\$\(MAKE\)[[:space:]]*$||' Makefile.daomake
- # FIXME catch the daomake segfault
+ # DEBUG catch daomake segfaults
#sed -i -r -e 's|([.]/daomake)|valgrind \1|' tools/daomake/bootstrap/Makefile
#sed -i -r -e 's|(\$\(SRCDIR\)/tools/daomake/bootstrap/daomake)|valgrind \1|' \
# Makefile.daomake
- # FIXME disable testing
+ # DEBUG disable testing
#sed -i -r -e 's|^(.*DaoMake::SetTestTool)|#\1|' makefile.dao
#sed -i -r -e '/DaoMake::SetTestTool/s|testcmd|"true"|' makefile.dao
- # FIXME disable generation of finders, because they contain
- # compile-time specific paths
- #make -f Makefile.daomake linux MODE=debug RESET='--reset' \
- # OPTIONS="--option-INSTALL-PATH '/usr' --no-local-rpath"
- make -f Makefile.daomake linux MODE=release RESET='--reset' \
+ make -f Makefile.daomake linux MODE="$_mode" RESET='--reset' \
OPTIONS="--option-INSTALL-PATH '/usr' --no-local-rpath"
}
-pkgver() {
- cd "$_basename"
- echo "$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
-}
-
package() {
cd "$_basename"
make install INSTALL="$pkgdir/usr"
- # ELF file outside of a valid path
- [ -e "$pkgdir/usr/share/dao/demo/modules/clinker/libsample.so" ] &&
- rm "$pkgdir/usr/share/dao/demo/modules/clinker/libsample.so"
+ # finders contain build-specific paths (
+ # note 'rm -r ...packages/' would hide non-Find* files)
+ # FIXME do not generate them in build()
+ rm "$pkgdir/usr/lib/daomake/packages/"Find*
+ rmdir "$pkgdir/usr/lib/daomake/packages/"
# inst <src> <dst>
+ # if <dst> does not end with a slash, it's a path and name of the resulting
+ # file or dir (if the file or dir already exists, it's an error)
inst() {
# FIXME make it aware of system-wide policy on chmod & chown of dirs
- [ ! -d "$2" ] && {
- if [ "$(printf %s "$2" | sed -r 's|.*(.)$|\1|')" = '/' ]; then
- mkdir -p "$2"
- else
- mkdir -p "$(dirname "$2")"
- fi
- }
+ # just 'sudo umask'?
+
+ if [ "$(printf %s "$2" | sed -r 's|.*(.)$|\1|')" = '/' ]; then
+ [ -d "$2" ] || mkdir -p -- "$2"
+ else
+ [ -e "$2" ] && {
+ printf 'ERR inst(): %s\nERR inst(): %s\n' \
+ "$2" "^^^destination already exists, can't install." >&2
+ false
+ return
+ }
+ mkdir -p -- "$(dirname "$2")"
+ fi
+
cp -p -r -- "$1" "$2"
# FIXME print the resulting file/dir full path
}
inst license.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
- chmod 644 "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+ chmod 644 -- "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
inst share/dao-logo.png "$pkgdir/usr/share/icons/"
inst share/daohelp.vim "$pkgdir/usr/share/vim/vimfiles/syntax/"
inst share/dao.vim "$pkgdir/usr/share/vim/vimfiles/syntax/"
inst tools/webdemo/ "$pkgdir/usr/share/$_basename/"
- mkdir -p "$pkgdir/usr/share/doc/"
- # all links in the doc are relative
- mv "$pkgdir/usr/share/$_basename/doc/" "$pkgdir/usr/share/doc/$_basename"
+ mkdir -p -- "$pkgdir/usr/share/doc/"
+ # all links in the doc are already relative
+ mv -- "$pkgdir/usr/share/$_basename/doc/" "$pkgdir/usr/share/doc/$_basename"
+
+ # Unit testing
+
+ # Finders are useless and their content baffles unit testing
+ # FIXME daomake could remove them after using them
+ for f in "$srcdir/$_basename/modules/"*/CacheFind*.dao \
+ "$srcdir/$_basename/modules/"*/FindDao*.dao; do
+ [ -e "$f" ] && rm -- "$f"
+ done
+
+ # no need to clean it using
+ # trap 'rm -rf -- "$_tmpd"' EXIT TERM INT HUP KILL
+ _tmpd="$(mktemp -p "$srcdir" -d XXXX)"
+
+ ( LC_ALL=C
+ cd -- "$srcdir/$_basename/modules/"
+
+ find . -type f -name '*.dao' |
+ while read f; do
+ grep -Eo \
+'^[^#]*[^_[:alpha:][:digit:]]AddSharedLibrary[^(]*[(][[:blank:]]+"[^"].*' \
+ "$f" |
+ sed -r 's|^.*AddSharedLibrary[^"]+"([^"]+).*$|\1|' |
+ while read lib; do
+ # include full path (names alone appear more than once)
+ printf '%s\n' "$(dirname "$f")/lib${lib}.so"
+ done
+ # "string/" and "DaoSQL/" are exceptions to the rule
+ done | sed -r -e 's%((string/)|[^/]+/)([^/]+)$%\2\3%' -e 's|DaoSQL/||' |
+ sort | uniq
+ ) > "$_tmpd/libs_expected"
+
+ ( LC_ALL=C
+ cd -- "$pkgdir/usr/lib/$_basename/modules/"
+ find . -type f -iname '*.so' | sort
+ ) > "$_tmpd/libs_found"
+
+ _diff="$(diff -urN -- "$_tmpd/libs_expected" "$_tmpd/libs_found")"
+
+ [ -z "$_diff" ] || {
+ printf '%s\n' "$_diff" >&2
+ false
+ }
+
+ [ "$_mode" = 'release' ] || printf '\n%s\n' \
+ 'WARN Non-release build built! Did you set MODE=debug in PKGBUILD?' >&2
}