[packages/zephyr] - updated to 3.1.2 - heimdal patch to complete heimdal Kerberos5 support

qboosh qboosh at pld-linux.org
Sun Mar 7 06:58:15 CET 2021


commit 58f98edd2623b899aeb45a5f0261a0dee81fa862
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Mar 7 06:58:58 2021 +0100

    - updated to 3.1.2
    - heimdal patch to complete heimdal Kerberos5 support

 zephyr-heimdal.patch | 150 ++++++++++++++++++++++++++++++++++++++++
 zephyr.spec          | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 341 insertions(+)
---
diff --git a/zephyr.spec b/zephyr.spec
new file mode 100644
index 0000000..7faef2c
--- /dev/null
+++ b/zephyr.spec
@@ -0,0 +1,191 @@
+# TODO: init scripts/service files for zephyrd and zhm
+#
+# Conditional build:
+%bcond_without	apidocs		# API documentation
+%bcond_with	hesiod		# Hesiod support
+%bcond_without	kerberos5	# Kerberos 5 support
+%bcond_without	static_libs	# static library
+#
+Summary:	Project Athena's notification service
+Summary(pl.UTF-8):	Usługa powiadomień z Projektu Athena
+Name:		zephyr
+Version:	3.1.2
+Release:	1
+License:	MIT
+Group:		Libraries
+#Source0Download: https://github.com/zephyr-im/zephyr/releases
+Source0:	https://github.com/zephyr-im/zephyr/archive/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5:	f41be8ee4383d100d4eeb7ed7de0e018
+Patch0:		%{name}-heimdal.patch
+URL:		https://github.com/zephyr-im/zephyr
+BuildRequires:	autoconf >= 2.50
+BuildRequires:	automake
+BuildRequires:	bison
+BuildRequires:	c-ares-devel
+BuildRequires:	flex
+%{?with_kerberos5:BuildRequires:	heimdal-devel}
+%{?with_hesiod:BuildRequires:	hesiod-devel}
+BuildRequires:	libcom_err-devel
+BuildRequires:	libss-devel
+BuildRequires:	libtool
+BuildRequires:	ncurses-devel
+BuildRequires:	xorg-lib-libX11-devel
+# if using noarch subpackages:
+#BuildRequires:	rpm-build >= 4.6
+Requires:	%{name}-libs = %{version}-%{release}
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Zephyr allows users to send messages to other users or to groups of
+users. Users can view incoming Zephyr messages as windowgrams
+(transient X windows) or as text on a terminal. Zephyr can optionally
+make use of the Kerberos security library or the Hesiod service name
+resolution library.
+
+This package contains Zephyr clients.
+
+%description -l pl.UTF-8
+Zephyr pozwala użytkownikom wysyłać wiadomości do innych użytkowników
+lub grup użytkowników. Użytkownicy mogą zobaczyć przychodzące
+wiadomości Zephyra jako oknogramy (przemijające okienka X) albo jako
+tekst na terminalu. Zephyr opcjonalnie może wykorzystywać bibliotekę
+bezpieczeństwa Kerberos lub bibliotekę rozwiązywania nazw usług
+Hesiod.
+
+Ten pakiet zawiera programy klienckie Zephyra.
+
+%package server
+Summary:	Zephyr server
+Summary(pl.UTF-8):	Serwer usługi Zephyr
+Group:		Networking/Daemons
+Requires:	%{name}-libs = %{version}-%{release}
+
+%description server
+zephyrd is the central server for the Zephyr Notification System. It
+maintains a location database of all currently logged-in users, and a
+subscription database for each user's Zephyr clients.
+
+%description server -l pl.UTF-8
+zephyrd to centralny serwer systemu powiadomień Zephyr. Utrzymuje bazę
+danych lokalizacji wszystkich aktualnie zalogowanych użytkowników oraz
+bazę danych subskrypcji klientów Zephyra dla każdego użytkownika.
+
+%package libs
+Summary:	Zephyr service shared library
+Summary(pl.UTF-8):	Biblioteka współdzielona usługi Zephyr
+Group:		Libraries
+
+%description libs
+Zephyr service shared library.
+
+%description libs -l pl.UTF-8
+Biblioteka współdzielona usługi Zephyr.
+
+%package devel
+Summary:	Header files for Zephyr library
+Summary(pl.UTF-8):	Pliki nagłówkowe biblioteki Zephyr
+Group:		Development/Libraries
+Requires:	%{name}-libs = %{version}-%{release}
+%{?with_kerberos5:Requires:	heimdal-devel}
+%{?with_hesiod:Requires:	hesiod-devel}
+
+%description devel
+Header files for Zephyr library.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe biblioteki Zephyr.
+
+%package static
+Summary:	Static Zephyr library
+Summary(pl.UTF-8):	Statyczna biblioteka Zephyr
+Group:		Development/Libraries
+Requires:	%{name}-devel = %{version}-%{release}
+
+%description static
+Static Zephyr library.
+
+%description static -l pl.UTF-8
+Statyczna biblioteka Zephyr.
+
+%prep
+%setup -q
+%patch0 -p1
+
+%{__sed} -i -e 's/__DEV__/%{version}/' configure.ac
+
+%build
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__autoheader}
+%configure \
+	%{!?with_static_libs:--disable-static} \
+	%{?with_hesiod:--with-hesiod} \
+	%{?with_kerberos5:--with-krb5}
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} install \
+	DESTDIR=$RPM_BUILD_ROOT
+
+# obsoleted by pkg-config
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libzephyr.la
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post	libs -p /sbin/ldconfig
+%postun	libs -p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/zaway
+%attr(755,root,root) %{_bindir}/zctl
+%attr(755,root,root) %{_bindir}/zleave
+%attr(755,root,root) %{_bindir}/zlocate
+%attr(755,root,root) %{_bindir}/znol
+%attr(755,root,root) %{_bindir}/zstat
+%attr(755,root,root) %{_bindir}/zwgc
+%attr(755,root,root) %{_bindir}/zwrite
+%attr(755,root,root) %{_sbindir}/zhm
+%attr(755,root,root) %{_sbindir}/zshutdown_notify
+%{_datadir}/zephyr
+%{_mandir}/man1/zaway.1*
+%{_mandir}/man1/zctl.1*
+%{_mandir}/man1/zephyr.1*
+%{_mandir}/man1/zleave.1*
+%{_mandir}/man1/zlocate.1*
+%{_mandir}/man1/znol.1*
+%{_mandir}/man1/zwgc.1*
+%{_mandir}/man1/zwrite.1*
+%{_mandir}/man8/zhm.8*
+%{_mandir}/man8/zshutdown_notify.8*
+%{_mandir}/man8/zstat.8*
+
+%files server
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_sbindir}/zephyrd
+%dir %{_sysconfdir}/zephyr
+%dir %{_sysconfdir}/zephyr/acl
+%config(noreplace) %verify(not md5,mtime,size) %{_sysconfdir}/zephyr/default.subscriptions
+%{_mandir}/man8/zephyrd.8*
+
+%files libs
+%defattr(644,root,root,755)
+%doc NOTES OPERATING README.in USING h/zephyr/mit-copyright.h
+%attr(755,root,root) %{_libdir}/libzephyr.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libzephyr.so.4
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libzephyr.so
+%{_includedir}/zephyr
+%{_pkgconfigdir}/zephyr.pc
+
+%if %{with static_libs}
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libzephyr.a
+%endif
diff --git a/zephyr-heimdal.patch b/zephyr-heimdal.patch
new file mode 100644
index 0000000..3da0c33
--- /dev/null
+++ b/zephyr-heimdal.patch
@@ -0,0 +1,150 @@
+--- zephyr-3.1.2/lib/ZMkAuth.c.orig	2013-10-28 05:21:44.000000000 +0100
++++ zephyr-3.1.2/lib/ZMkAuth.c	2021-03-05 21:41:58.211169636 +0100
+@@ -126,10 +126,10 @@
+     keyblock = Z_credskey(creds);
+ 
+     if (Z_keys_head &&
+-	Z_keys_head->keyblock->enctype == keyblock->enctype &&
+-	Z_keys_head->keyblock->length == keyblock->length &&
+-	memcmp(Z_keys_head->keyblock->contents, keyblock->contents,
+-	       keyblock->length) == 0) {
++	Z_enctype(Z_keys_head->keyblock) == Z_enctype(keyblock) &&
++	Z_keylen(Z_keys_head->keyblock) == Z_keylen(keyblock) &&
++	memcmp(Z_keydata(Z_keys_head->keyblock), Z_keydata(keyblock),
++	       Z_keylen(keyblock)) == 0) {
+ 	/*
+ 	 * Optimization: if the key hasn't changed, replace the current entry,
+ 	 * rather than make a new one.
+--- zephyr-3.1.2/lib/ZDumpSession.c.orig	2013-10-28 05:21:44.000000000 +0100
++++ zephyr-3.1.2/lib/ZDumpSession.c	2021-03-05 22:11:03.011717241 +0100
+@@ -42,7 +42,7 @@
+     for (key = Z_keys_head; key != NULL; key = key->next) {
+ 	num_keys++;
+ 	len += 4 + 4;  /* enctype, length */
+-	len += key->keyblock->length;  /* contents */
++	len += Z_keylen(key->keyblock);  /* contents */
+     }
+ #endif
+ 
+@@ -56,10 +56,10 @@
+ #ifdef HAVE_KRB5
+     *((uint32_t *)ptr) = htonl(num_keys); ptr += 4;
+     for (key = Z_keys_tail; key != NULL; key = key->prev) {
+-	*((uint32_t*) ptr) = htonl(key->keyblock->enctype); ptr += 4;
+-	*((uint32_t*) ptr) = htonl(key->keyblock->length); ptr += 4;
+-	memcpy(ptr, key->keyblock->contents, key->keyblock->length);
+-	ptr += key->keyblock->length;
++	*((uint32_t*) ptr) = htonl(Z_enctype(key->keyblock)); ptr += 4;
++	*((uint32_t*) ptr) = htonl(Z_keylen(key->keyblock)); ptr += 4;
++	memcpy(ptr, Z_keydata(key->keyblock), Z_keylen(key->keyblock));
++	ptr += Z_keylen(key->keyblock);
+     }
+ #endif
+ 
+@@ -110,12 +110,12 @@
+ 	    free(key);
+ 	    return (EINVAL);
+ 	}
+-	ret = krb5_init_keyblock(Z_krb5_ctx, enctype, keylength, &key->keyblock);
++	ret = Z_krb5_init_keyblock(Z_krb5_ctx, enctype, keylength, &key->keyblock);
+ 	if (ret) {
+ 	    free(key);
+ 	    return ret;
+ 	}
+-	memcpy((char *)key->keyblock->contents, buffer, keylength);
++	memcpy((char *)Z_keydata(key->keyblock), buffer, keylength);
+ 	buffer += keylength; len -= keylength;
+ 	/* Just set recent times. It means we might not be able to
+ 	   retire the keys, but that's fine. */
+--- zephyr-3.1.2/lib/Zinternal.c.orig	2013-10-28 05:21:44.000000000 +0100
++++ zephyr-3.1.2/lib/Zinternal.c	2021-03-06 08:54:08.562681386 +0100
+@@ -1420,3 +1420,30 @@
+ #endif
+ }
+ #endif
++
++#ifdef HAVE_KRB5
++krb5_error_code
++Z_krb5_init_keyblock(krb5_context context,
++	krb5_enctype type,
++	size_t size,
++	krb5_keyblock **key)
++{
++#ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE
++	return krb5_init_keyblock(context, type, size, key);
++#else
++	krb5_error_code ret;
++	krb5_keyblock *tmp, tmp_ss;
++	tmp = &tmp_ss;
++
++	*key = NULL;
++	Z_enctype(tmp) = type;
++	Z_keylen(tmp) = size;
++	Z_keydata(tmp) = malloc(size);
++	if (!Z_keydata(tmp))
++		return ENOMEM;
++	ret =  krb5_copy_keyblock(context, tmp, key);
++	free(Z_keydata(tmp));
++	return ret;
++#endif
++}
++#endif
+--- zephyr-3.1.2/h/internal.h.orig	2013-10-28 05:21:44.000000000 +0100
++++ zephyr-3.1.2/h/internal.h	2021-03-06 08:52:45.043133850 +0100
+@@ -205,4 +205,9 @@
+ #define Z_tktprinc(tkt)		((tkt)->client)
+ #endif
+ 
++#ifdef HAVE_KRB5
++krb5_error_code Z_krb5_init_keyblock(krb5_context, krb5_enctype, size_t,
++        krb5_keyblock **);
++#endif
++
+ #endif /* __INTERNAL_H__ */
+--- zephyr-3.1.2/server/kstuff.c.orig	2013-10-28 05:21:44.000000000 +0100
++++ zephyr-3.1.2/server/kstuff.c	2021-03-06 08:55:24.682269010 +0100
+@@ -701,33 +701,6 @@
+ 
+     return checksum;
+ }
+-#endif
+-
+-#ifdef HAVE_KRB5
+-krb5_error_code
+-Z_krb5_init_keyblock(krb5_context context,
+-	krb5_enctype type,
+-	size_t size,
+-	krb5_keyblock **key)
+-{
+-#ifdef HAVE_KRB5_CREDS_KEYBLOCK_ENCTYPE
+-	return krb5_init_keyblock(context, type, size, key);
+-#else
+-	krb5_error_code ret;
+-	krb5_keyblock *tmp, tmp_ss;
+-	tmp = &tmp_ss;
+-
+-	*key = NULL;
+-	Z_enctype(tmp) = type;
+-	Z_keylen(tmp) = size;
+-	Z_keydata(tmp) = malloc(size);
+-	if (!Z_keydata(tmp))
+-		return ENOMEM;
+-	ret =  krb5_copy_keyblock(context, tmp, key);
+-	free(Z_keydata(tmp));
+-	return ret;
+-#endif
+-}
+ 
+ void
+ ZSetSession(krb5_keyblock *keyblock) {
+--- zephyr-3.1.2/server/zserver.h.orig	2021-03-06 08:52:57.593065861 +0100
++++ zephyr-3.1.2/server/zserver.h	2021-03-06 08:53:00.516383357 +0100
+@@ -37,8 +37,6 @@
+ extern krb5_keyblock *__Zephyr_keyblock;
+ #define ZGetSession() (__Zephyr_keyblock)
+ void ZSetSession(krb5_keyblock *keyblock);
+-krb5_error_code Z_krb5_init_keyblock(krb5_context, krb5_enctype, size_t,
+-        krb5_keyblock **);
+ #endif
+ 
+ #ifdef HAVE_KRB4
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/zephyr.git/commitdiff/58f98edd2623b899aeb45a5f0261a0dee81fa862



More information about the pld-cvs-commit mailing list