Skip to content

Instantly share code, notes, and snippets.

@fuhry
Created June 25, 2024 14:27
Show Gist options
  • Save fuhry/10d3a9d0cfed6d6463c5d6c10abaf1c0 to your computer and use it in GitHub Desktop.
Save fuhry/10d3a9d0cfed6d6463c5d6c10abaf1c0 to your computer and use it in GitHub Desktop.
diff -Naur a/configure.ac b/configure.ac
--- a/configure.ac 2024-06-01 00:56:52.000000000 -0400
+++ b/configure.ac 2024-06-25 09:59:35.527039765 -0400
@@ -143,7 +143,7 @@
AC_ARG_WITH(uams-path, [ --with-uams-path=PATH path to UAMs [[$libdir/netatalk]]], [uams_path="$withval"], [uams_path="$libdir/netatalk"])
dnl Check for libgcrypt, if found enables DHX2 UAM
-AC_NETATALK_PATH_LIBGCRYPT([1:1.2.3])
+AC_NETATALK_LIBGCRYPT
dnl Check for openssl, if found enables DHX UAM and Randnum UAM
AC_NETATALK_PATH_SSL
diff -Naur a/.github/workflows/build.yml b/.github/workflows/build.yml
--- a/.github/workflows/build.yml 2024-06-01 00:56:52.000000000 -0400
+++ b/.github/workflows/build.yml 2024-06-25 09:59:35.527039765 -0400
@@ -638,14 +638,11 @@
echo "Building with Autotools"
./bootstrap
./configure \
+ MAKE=gmake \
--enable-krbV-uam \
--enable-pgp-uam \
- --with-bdb=/usr/pkg \
--with-init-style=netbsd \
- --with-libgcrypt-dir=/usr/pkg \
- --with-tracker-pkgconfig-version=3.0 \
- MAKE=gmake \
- PKG_CONFIG_PATH=/usr/pkg/lib/pkgconfig
+ --with-tracker-pkgconfig-version=3.0
gmake -j $(nproc)
gmake install
service netatalk onestart
@@ -814,23 +811,21 @@
set -e
export PATH=/opt/local/sbin:/opt/local/bin:/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:$PATH
echo "Building with Autotools"
+ export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
./bootstrap
./configure \
--enable-pgp-uam \
--with-bdb=/opt/local \
--with-init-style=solaris \
--with-ldap=/opt/local \
- --with-libgcrypt-dir=/opt/local \
- --with-tracker-pkgconfig-version=3.0 \
- MAKE=gmake \
- PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
- gmake -j $(nproc)
- gmake install
+ --with-tracker-pkgconfig-version=3.0
+ make -j $(nproc)
+ make install
svcadm enable svc:/network/netatalk:default
sleep 2
/usr/local/bin/asip-status localhost
svcadm disable svc:/network/netatalk:default
- gmake uninstall
+ make uninstall
echo "Building with Meson"
meson setup build \
-Dpkg_config_path=/opt/local/lib/pkgconfig \
@@ -845,6 +840,7 @@
ninja -C build uninstall
build-solaris:
+ if: false
name: Solaris
runs-on: ubuntu-latest
permissions:
diff -Naur a/macros/libgcrypt.m4 b/macros/libgcrypt.m4
--- a/macros/libgcrypt.m4 2024-06-01 00:56:52.000000000 -0400
+++ b/macros/libgcrypt.m4 2024-06-25 09:59:35.527039765 -0400
@@ -1,126 +1,26 @@
-dnl AM_PATH_LIBGCRYPT([MINIMUM-VERSION,
-dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
-dnl Test for libgcrypt and define LIBGCRYPT_CFLAGS and LIBGCRYPT_LIBS.
-dnl MINIMUN-VERSION is a string with the version number optionalliy prefixed
-dnl with the API version to also check the API compatibility. Example:
-dnl a MINIMUN-VERSION of 1:1.2.5 won't pass the test unless the installed
-dnl version of libgcrypt is at least 1.2.5 *and* the API number is 1. Using
-dnl this features allows to prevent build against newer versions of libgcrypt
-dnl with a changed API.
-dnl
-AC_DEFUN([AC_NETATALK_PATH_LIBGCRYPT],
-[ AC_ARG_WITH(libgcrypt-dir,
- AS_HELP_STRING([--with-libgcrypt-dir=PATH],
- [path where LIBGCRYPT is installed (optional).
- Must contain lib and include dirs.]),
- libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="")
- if test x$libgcrypt_config_prefix != x ; then
- if test x${LIBGCRYPT_CONFIG+set} != xset ; then
- LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config
- fi
- fi
+dnl Check for libgcrypt
+AC_DEFUN([AC_NETATALK_LIBGCRYPT], [
- ok=no
-
-if test x$libgcrypt_config_prefix != xno ; then
-
- AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
- tmp=ifelse([$1], ,1:1.2.0,$1)
- if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
- req_libgcrypt_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
- min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'`
- else
- req_libgcrypt_api=0
- min_libgcrypt_version="$tmp"
- fi
-
- AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version)
- if test "$LIBGCRYPT_CONFIG" != "no" ; then
- req_major=`echo $min_libgcrypt_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
- req_minor=`echo $min_libgcrypt_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
- req_micro=`echo $min_libgcrypt_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
- libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version`
- major=`echo $libgcrypt_config_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
- minor=`echo $libgcrypt_config_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
- micro=`echo $libgcrypt_config_version | \
- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
- if test "$major" -gt "$req_major"; then
- ok=yes
+AC_ARG_WITH(libgcrypt-dir,
+ AS_HELP_STRING([--with-libgcrypt-dir=PATH],
+ [path where LIBGCRYPT is installed (optional).
+ Must contain lib and include dirs.]),
+ netatalk_cv_libgcrypt=$withval)
+ if test x$netatalk_cv_libgcrypt != x ; then
+ LIBGCRYPT_CFLAGS="-I$netatalk_cv_libgcrypt/include"
+ LIBGCRYPT_LIBS="-L$netatalk_cv_libgcrypt/lib"
else
- if test "$major" -eq "$req_major"; then
- if test "$minor" -gt "$req_minor"; then
- ok=yes
- else
- if test "$minor" -eq "$req_minor"; then
- if test "$micro" -ge "$req_micro"; then
- ok=yes
- fi
- fi
- fi
- fi
- fi
- fi
- if test $ok = yes; then
- AC_MSG_RESULT([yes ($libgcrypt_config_version)])
- else
- AC_MSG_RESULT(no)
- fi
-fi
-
- if test $ok = yes; then
- # If we have a recent libgcrypt, we should also check that the
- # API is compatible
- if test "$req_libgcrypt_api" -gt 0 ; then
- tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0`
- if test "$tmp" -gt 0 ; then
- AC_MSG_CHECKING([libgcrypt API version])
- if test "$req_libgcrypt_api" -eq "$tmp" ; then
- AC_MSG_RESULT([okay])
- else
- ok=no
- AC_MSG_RESULT([does not match. want=$req_libgcrypt_api got=$tmp])
- fi
- fi
- fi
- fi
- if test $ok = yes; then
- # Opensolaris 11/08 provided libgcrypt doesn't have CAST5,
- # so we better check the general case
- AC_MSG_CHECKING([libgcrypt hast CAST5 API])
- cast=`$LIBGCRYPT_CONFIG --algorithms 2>/dev/null | grep cast5 | sed 's/\(.*\)\(cast5\)\(.*\)/\2/'`
- if test x$cast = xcast5 ; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- echo "*** Detected libgcryt without CAST5 ***"
- echo "*** Please install/build another one and point to it with ***"
- echo "*** --with-libgcrypt-dir=<path-to-lib> ***"
- ok=no
- fi
- fi
-
- if test $ok = yes; then
- LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
- LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
- neta_cv_compile_dhx2=yes
- neta_cv_have_libgcrypt=yes
- AC_MSG_NOTICE([Enabling DHX2 UAM])
- AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt])
- AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled])
- ifelse([$2], , :, [$2])
- else
- if test x$libgcrypt_config_prefix != x"no" ; then
- AC_MSG_ERROR([Could not find libgcrypt development files needed for the DHX2 UAM, please install the libgcrypt devel package])
+ PKG_CHECK_MODULES(LIBGCRYPT, [libgcrypt >= 1.2.3],
+ ac_cv_have_libgcrypt=yes,
+ [AC_MSG_ERROR([Could not find libgcrypt development files needed for the DHX2 UAM, please install libgcrypt version 1.2.3 or later])])
+ fi
+ if test x"$ac_cv_have_libgcrypt" = x"yes" -o x$netatalk_cv_libgcrypt != x; then
+ neta_cv_compile_dhx2=yes
+ neta_cv_have_libgcrypt=yes
+ AC_MSG_NOTICE([Enabling DHX2 UAM])
+ AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt])
+ AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled])
+ AC_SUBST(LIBGCRYPT_CFLAGS)
+ AC_SUBST(LIBGCRYPT_LIBS)
fi
- LIBGCRYPT_CFLAGS=""
- LIBGCRYPT_LIBS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(LIBGCRYPT_CFLAGS)
- AC_SUBST(LIBGCRYPT_LIBS)
])
diff -Naur a/meson.build b/meson.build
--- a/meson.build 2024-06-01 00:56:52.000000000 -0400
+++ b/meson.build 2024-06-25 10:19:51.563901351 -0400
@@ -925,7 +925,7 @@
include_directories: include_directories(libgcrypt_dir / 'include'),
)
else
- libgcrypt = dependency('libgcrypt', required: false)
+ libgcrypt = dependency('libgcrypt', version : '>=1.2.3', required: false)
if not libgcrypt.found()
libgcrypt = cc.find_library(
'libgcrypt',
@@ -935,39 +935,15 @@
endif
endif
-libgcrypt_config = find_program(
- 'libgcrypt-config',
- dirs: libgcrypt_dir + '/bin',
- required: false,
-)
+have_libgcrypt = libgcrypt.found()
-cast5_api = run_command(
- libgcrypt_config,
- '--algorithms',
- check: false,
-).stdout().strip().contains('cast5')
-
-# Reserved for future use:
-# libgcrypt_version = libgcrypt_config.version().version_compare('>=1.2.3')
-
-if not libgcrypt.found()
- have_libgcrypt = false
+if have_gcrypt
+ cdata.set('HAVE_LIBGCRYPT', 1)
+ cdata.set('UAM_DHX2', 1)
+else
error(
- 'Libgcrypt library required for DHX2 UAM! Please install version 1.2.3 or later',
+ 'Detected libgcrypt without CAST5, please install a more recent version that contains this API',
)
-else
- # Reserved for future use:
- # have_libgcrypt = libgcrypt_version and cast5_api
- have_libgcrypt = libgcrypt.found() and cast5_api
- if not cast5_api
- have_libgcrypt = false
- error(
- 'Detected libgcrypt without CAST5, please install a more recent version that contains this API',
- )
- else
- cdata.set('HAVE_LIBGCRYPT', 1)
- cdata.set('UAM_DHX2', 1)
- endif
endif
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment