Skip to content

Commit

Permalink
net/freeipa-client: Add new port
Browse files Browse the repository at this point in the history
FreeIPA is a free and open source identity management system. This
package provides its command-line administration tools.

Reviewed by:		diizzy, 0mp
Sponsored by:		Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D42850
  • Loading branch information
Xavier Beaudouin authored and 0mp committed Dec 22, 2023
1 parent 69942f9 commit d6f2f39
Show file tree
Hide file tree
Showing 17 changed files with 728 additions and 0 deletions.
1 change: 1 addition & 0 deletions net/Makefile
Expand Up @@ -163,6 +163,7 @@
SUBDIR += freebsd-telnetd
SUBDIR += freebsd-uucp
SUBDIR += freediameter
SUBDIR += freeipa-client
SUBDIR += freeradius-client
SUBDIR += freeradius3
SUBDIR += freerdp
Expand Down
53 changes: 53 additions & 0 deletions net/freeipa-client/Makefile
@@ -0,0 +1,53 @@
PORTNAME= freeipa-client
DISTVERSION= 4.11.0
CATEGORIES= net
MASTER_SITES= https://releases.pagure.org/freeipa/
DISTNAME= freeipa-${DISTVERSION}

MAINTAINER= xavier.beaudouin@klarasystems.com
COMMENT= FreeIPA Client tools
WWW= https://www.freeipa.org/

LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING

BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pip>0:devel/py-pip@${PY_FLAVOR}

LIB_DEPENDS= libcmocka.so:sysutils/cmocka \
libcurl.so:ftp/curl \
libini_config.so:devel/ding-libs \
libjansson.so:devel/jansson \
libnspr4.so:devel/nspr \
libnss3.so:security/nss \
libpopt.so:devel/popt \
libpwquality.so:security/libpwquality \
libsasl2.so:security/cyrus-sasl2 \
libxmlrpc.so:net/xmlrpc-c

USES= autoreconf gettext gmake gssapi:mit ldap libtool \
localbase:ldflags pkgconfig python

GNU_CONFIGURE= YES
CONFIGURE_ARGS= --disable-dependency-tracking \
--disable-server \
--with-ipaplatform=freebsd \
--without-ipatests \
--without-server

# Don't bytecode python files
MAKE_ENV= PYTHONDONTWRITEBYTECODE=1

# Mark it broken on FreeBSD 12
BROKEN_FreeBSD_12= does not build: Package requirements (libcrypto) were not met

# Remove all systemd dependant things
EXTRACT_AFTER_ARGS= --exclude client/systemd --exclude daemons/dnssec \
--exclude daemons/ipa-otpd --exclude \
daemons/ipa-slapi-plugins --exclude init/systemd \
--exclude init/tmpfilesd

# Make sample configuration file
post-install:
@${MV} ${STAGEDIR}${PREFIX}/etc/ipa/epn.conf ${STAGEDIR}${PREFIX}/etc/ipa/epn.conf.sample

.include <bsd.port.mk>
3 changes: 3 additions & 0 deletions net/freeipa-client/distinfo
@@ -0,0 +1,3 @@
TIMESTAMP = 1698152461
SHA256 (freeipa-4.11.0.tar.gz) = 97f7b60eafda928e35416119c89083f8f038e0fcd39f30bc07b8d8026fd3b7a4
SIZE (freeipa-4.11.0.tar.gz) = 14533814
10 changes: 10 additions & 0 deletions net/freeipa-client/files/patch-asn1_asn1c_INTEGER.c
@@ -0,0 +1,10 @@
--- asn1/asn1c/INTEGER.c.orig 2021-11-25 17:34:42 UTC
+++ asn1/asn1c/INTEGER.c
@@ -7,6 +7,7 @@
#include <INTEGER.h>
#include <asn_codecs_prim.h> /* Encoder and decoder of a primitive type */
#include <errno.h>
+#include <stdlib.h>

/*
* INTEGER basic type description.
11 changes: 11 additions & 0 deletions net/freeipa-client/files/patch-asn1_asn1c_Makefile.am
@@ -0,0 +1,11 @@
--- asn1/asn1c/Makefile.am.orig 2021-11-25 17:34:42 UTC
+++ asn1/asn1c/Makefile.am
@@ -70,7 +70,7 @@ libasn1c_la_SOURCES = \

EXTRA_DIST = ipa.asn1

-AM_CPPFLAGS = -I$(top_srcdir)/util
+AM_CPPFLAGS = -I$(top_srcdir)/util -D_GNU_SOURCE

noinst_LTLIBRARIES=libasn1c.la

10 changes: 10 additions & 0 deletions net/freeipa-client/files/patch-asn1_asn1c_NativeEnumerated.c
@@ -0,0 +1,10 @@
--- asn1/asn1c/NativeEnumerated.c.orig 2021-11-25 17:34:42 UTC
+++ asn1/asn1c/NativeEnumerated.c
@@ -11,6 +11,7 @@
*/
#include <asn_internal.h>
#include <NativeEnumerated.h>
+#include <stdlib.h>

/*
* NativeEnumerated basic type description.
10 changes: 10 additions & 0 deletions net/freeipa-client/files/patch-asn1_asn1c_der__encoder.c
@@ -0,0 +1,10 @@
--- asn1/asn1c/der_encoder.c.orig 2021-11-25 17:34:42 UTC
+++ asn1/asn1c/der_encoder.c
@@ -4,6 +4,7 @@
*/
#include <asn_internal.h>
#include <errno.h>
+#include <stdlib.h>

static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len,
asn_app_consume_bytes_f *cb, void *app_key, int constructed);
11 changes: 11 additions & 0 deletions net/freeipa-client/files/patch-client_Makefile.am
@@ -0,0 +1,11 @@
--- client/Makefile.am.orig 2023-08-21 14:29:00 UTC
+++ client/Makefile.am
@@ -94,8 +94,6 @@ ipa_join_LDADD = \
SUBDIRS = \
share \
man \
- sysconfig \
- systemd \
$(NULL)
# init

16 changes: 16 additions & 0 deletions net/freeipa-client/files/patch-client_ipa-getkeytab.c
@@ -0,0 +1,16 @@
--- client/ipa-getkeytab.c.orig 2023-08-21 14:29:00 UTC
+++ client/ipa-getkeytab.c
@@ -34,6 +34,13 @@
#include <time.h>
#include <krb5.h>
#include <ldap.h>
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
#include <resolv.h>
#include <sasl/sasl.h>
#include <popt.h>
106 changes: 106 additions & 0 deletions net/freeipa-client/files/patch-configure.ac
@@ -0,0 +1,106 @@
--- configure.ac.orig 2023-08-21 14:29:00 UTC
+++ configure.ac
@@ -24,10 +24,13 @@ dnl enable features like htole16()
CFLAGS="$CFLAGS -D_DEFAULT_SOURCE=1"
dnl Enable features like strndup()
CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200809L"
+dnl Removing this failing hard because on implicit declaration of
+dnl alloca() used several place in the code.
dnl fail hard when includes statements are missing
-CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
+dnl CFLAGS="$CFLAGS -Werror=implicit-function-declaration"

AC_PROG_CC_C99
+AC_GNU_SOURCE
AC_DISABLE_STATIC
LT_INIT

@@ -211,14 +214,7 @@ dnl --------------------------------------------------
dnl - Check for libintl
dnl ---------------------------------------------------------------------------
SAVE_LIBS="$LIBS"
-LIBINTL_LIBS=
-AC_CHECK_HEADER(libintl.h, [], [AC_MSG_ERROR([libintl.h not found, please install xgettext])])
-AC_SEARCH_LIBS([bindtextdomain], [libintl],[], [])
-if test "x$ac_cv_search_bindtextdomain" = "xno" ; then
- AC_MSG_ERROR([libintl is not found and your libc does not support gettext, please install xgettext])
-elif test "x$ac_cv_search_bindtextdomain" != "xnone required" ; then
- LIBINTL_LIBS="$ac_cv_search_bindtextdomain"
-fi
+LIBINTL_LIBS="-lintl"
LIBS="$SAVELIBS"
AC_SUBST(LIBINTL_LIBS)

@@ -249,32 +245,13 @@ AC_ARG_WITH([runstatedir],
AC_SUBST([runstatedir])

dnl ---------------------------------------------------------------------------
-dnl - Check for systemd directories
-dnl ---------------------------------------------------------------------------
-
-PKG_CHECK_EXISTS([systemd], [], [AC_MSG_ERROR([systemd not found])])
-AC_ARG_WITH([systemdsystemunitdir],
- AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
- [Directory for systemd service files]),
- [systemdsystemunitdir=$with_systemdsystemunitdir],
- [systemdsystemunitdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=systemdsystemunitdir systemd)])
-AC_SUBST([systemdsystemunitdir])
-
-AC_ARG_WITH([systemdtmpfilesdir],
- AS_HELP_STRING([--with-systemdtmpfilesdir=DIR],
- [Directory for systemd-tmpfiles configuration files]),
- [systemdtmpfilesdir=$with_systemdtmpfilesdir],
- [systemdtmpfilesdir=$($PKG_CONFIG --define-variable=prefix='${prefix}' --variable=tmpfilesdir systemd)])
-AC_SUBST([systemdtmpfilesdir])
-
-dnl ---------------------------------------------------------------------------
dnl - Server-only configuration
dnl ---------------------------------------------------------------------------

-AM_COND_IF([ENABLE_SERVER], [
- m4_include(server.m4)
-])
-AM_CONDITIONAL([USE_SSS_NSS_TIMEOUT], [test "x$ac_cv_have_decl_sss_nss_getpwnam_timeout" = xyes])
+dnl AM_COND_IF([ENABLE_SERVER], [
+dnl m4_include(server.m4)
+dnl ])
+dnl AM_CONDITIONAL([USE_SSS_NSS_TIMEOUT], [test "x$ac_cv_have_decl_sss_nss_getpwnam_timeout" = xyes])

dnl ---------------------------------------------------------------------------
dnl - Check if IPA certauth plugin can be build
@@ -618,35 +595,11 @@ AC_CONFIG_FILES([
client/Makefile
client/share/Makefile
client/man/Makefile
- client/sysconfig/Makefile
- client/systemd/Makefile
contrib/completion/Makefile
contrib/Makefile
- daemons/dnssec/Makefile
daemons/Makefile
daemons/ipa-kdb/Makefile
daemons/ipa-sam/Makefile
- daemons/ipa-otpd/Makefile
- daemons/ipa-slapi-plugins/Makefile
- daemons/ipa-slapi-plugins/libotp/Makefile
- daemons/ipa-slapi-plugins/ipa-cldap/Makefile
- daemons/ipa-slapi-plugins/ipa-dns/Makefile
- daemons/ipa-slapi-plugins/ipa-enrollment/Makefile
- daemons/ipa-slapi-plugins/ipa-graceperiod/Makefile
- daemons/ipa-slapi-plugins/ipa-lockout/Makefile
- daemons/ipa-slapi-plugins/ipa-otp-counter/Makefile
- daemons/ipa-slapi-plugins/ipa-otp-lasttoken/Makefile
- daemons/ipa-slapi-plugins/ipa-pwd-extop/Makefile
- daemons/ipa-slapi-plugins/ipa-extdom-extop/Makefile
- daemons/ipa-slapi-plugins/ipa-winsync/Makefile
- daemons/ipa-slapi-plugins/ipa-version/Makefile
- daemons/ipa-slapi-plugins/ipa-uuid/Makefile
- daemons/ipa-slapi-plugins/ipa-modrdn/Makefile
- daemons/ipa-slapi-plugins/ipa-sidgen/Makefile
- daemons/ipa-slapi-plugins/ipa-range-check/Makefile
- daemons/ipa-slapi-plugins/topology/Makefile
- init/systemd/Makefile
- init/tmpfilesd/Makefile
init/Makefile
install/Makefile
install/certmonger/Makefile
14 changes: 14 additions & 0 deletions net/freeipa-client/files/patch-daemons_Makefile.am
@@ -0,0 +1,14 @@
--- daemons/Makefile.am.orig 2023-08-21 14:29:00 UTC
+++ daemons/Makefile.am
@@ -9,11 +9,8 @@ noinst_HEADERS = ipa-version.h.in

SUBDIRS = \
. \
- dnssec \
ipa-kdb \
- ipa-slapi-plugins \
ipa-sam \
- ipa-otpd \
$(NULL)

ipa-version.h: ipa-version.h.in $(top_builddir)/$(CONFIG_STATUS)
11 changes: 11 additions & 0 deletions net/freeipa-client/files/patch-init_Makefile.am
@@ -0,0 +1,11 @@
--- init/Makefile.am.orig 2021-11-25 17:34:42 UTC
+++ init/Makefile.am
@@ -2,7 +2,7 @@
#
AUTOMAKE_OPTIONS = 1.7

-SUBDIRS = systemd tmpfilesd
+#SUBDIRS = systemd tmpfilesd

dist_sysconfenv_DATA = \
ipa-dnskeysyncd \
@@ -0,0 +1,4 @@
--- ipaplatform/freebsd/__init__.py.orig 2023-11-29 16:56:08 UTC
+++ ipaplatform/freebsd/__init__.py
@@ -0,0 +1 @@
+NAME = 'freebsd'
10 changes: 10 additions & 0 deletions net/freeipa-client/files/patch-ipaplatform_setup.py
@@ -0,0 +1,10 @@
--- ipaplatform/setup.py.orig 2023-10-03 12:48:36 UTC
+++ ipaplatform/setup.py
@@ -37,6 +37,7 @@ if __name__ == '__main__':
"ipaplatform.debian",
"ipaplatform.fedora",
"ipaplatform.fedora_container",
+ "ipaplatform.freebsd",
"ipaplatform.nixos",
"ipaplatform.redhat",
"ipaplatform.rhel",
10 changes: 10 additions & 0 deletions net/freeipa-client/files/patch-util_ipa__krb5.c
@@ -0,0 +1,10 @@
--- util/ipa_krb5.c.orig 2021-11-25 17:34:42 UTC
+++ util/ipa_krb5.c
@@ -25,6 +25,7 @@
#include <errno.h>
#include <lber.h>
#include <errno.h>
+#include <sys/endian.h>

#include <libintl.h>
#define _(STRING) gettext(STRING)
2 changes: 2 additions & 0 deletions net/freeipa-client/pkg-descr
@@ -0,0 +1,2 @@
FreeIPA is a free and open source identity management system. This
package provides its command-line administration tools.

0 comments on commit d6f2f39

Please sign in to comment.