commit:     818d8486a6d06bd4fc7b4212d1755f927fd2f529
Author:     Stijn Tintel <stijn <AT> linux-ipv6 <DOT> be>
AuthorDate: Wed Feb  1 23:16:18 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Feb 14 03:12:59 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=818d8486

app-crypt/trousers: add musl patch

[sam: This has been sent upstream but pending moderator approval.]

Bug: https://bugs.gentoo.org/713444
Signed-off-by: Stijn Tintel <stijn <AT> linux-ipv6.be>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...rs-0.3.15-tspi-drop-the-use-of-getpwent_r.patch | 69 ++++++++++++++++++++
 app-crypt/trousers/trousers-0.3.15-r1.ebuild       | 73 ++++++++++++++++++++++
 2 files changed, 142 insertions(+)

diff --git 
a/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch
 
b/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch
new file mode 100644
index 000000000000..ab6ef762bce1
--- /dev/null
+++ 
b/app-crypt/trousers/files/trousers-0.3.15-tspi-drop-the-use-of-getpwent_r.patch
@@ -0,0 +1,69 @@
+https://bugs.gentoo.org/713444
+
+From 2299eadf77ae7a7ec52148b6a8f4ea37e217eafa Mon Sep 17 00:00:00 2001
+From: Stijn Tintel <[email protected]>
+Date: Thu, 2 Feb 2023 01:06:15 +0200
+Subject: [PATCH] tspi: drop the use of getpwent_r
+
+On systems with musl libc, libtspi.so is unusable due to the lack of
+getpwent_r. As there are multiple historical functions named getpwent_r
+that all behave differently, let's just play it safe and stop using it
+altogether.
+
+Signed-off-by: Stijn Tintel <[email protected]>
+---
+ src/tspi/ps/tspps.c | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c
+index b5e83d0..ae7b3df 100644
+--- a/src/tspi/ps/tspps.c
++++ b/src/tspi/ps/tspps.c
+@@ -51,9 +51,7 @@
+ 
+ static int user_ps_fd = -1;
+ static MUTEX_DECLARE_INIT(user_ps_lock);
+-#if (defined (__FreeBSD__) || defined (__OpenBSD__))
+ static MUTEX_DECLARE_INIT(user_ps_path);
+-#endif
+ static struct flock fl;
+ 
+ 
+@@ -66,9 +64,6 @@ get_user_ps_path(char **file)
+       TSS_RESULT result;
+       char *file_name = NULL, *home_dir = NULL;
+       struct passwd *pwp;
+-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
+-      struct passwd pw;
+-#endif
+       struct stat stat_buf;
+       char buf[PASSWD_BUFSIZE];
+       uid_t euid;
+@@ -96,16 +91,6 @@ get_user_ps_path(char **file)
+ #else
+       setpwent();
+       while (1) {
+-#if (defined (__linux) || defined (linux) || defined(__GLIBC__))
+-              rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp);
+-              if (rc) {
+-                      LogDebugFn("USER PS: Error getting path to home 
directory: getpwent_r: %s",
+-                                 strerror(rc));
+-                      endpwent();
+-                      return TSPERR(TSS_E_INTERNAL_ERROR);
+-              }
+-
+-#elif (defined (__FreeBSD__) || defined (__OpenBSD__))
+               if ((pwp = getpwent()) == NULL) {
+                       LogDebugFn("USER PS: Error getting path to home 
directory: getpwent: %s",
+                                    strerror(rc));
+@@ -113,7 +98,6 @@ get_user_ps_path(char **file)
+                       MUTEX_UNLOCK(user_ps_path);
+                       return TSPERR(TSS_E_INTERNAL_ERROR);
+               }
+-#endif
+               if (euid == pwp->pw_uid) {
+                         home_dir = strdup(pwp->pw_dir);
+                         break;
+-- 
+2.39.1
+

diff --git a/app-crypt/trousers/trousers-0.3.15-r1.ebuild 
b/app-crypt/trousers/trousers-0.3.15-r1.ebuild
new file mode 100644
index 000000000000..fd92b70007d2
--- /dev/null
+++ b/app-crypt/trousers/trousers-0.3.15-r1.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools linux-info readme.gentoo-r1 systemd udev
+
+DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation"
+HOMEPAGE="http://trousers.sf.net";
+SRC_URI="mirror://sourceforge/trousers/${PN}/${P}.tar.gz"
+
+LICENSE="CPL-1.0 GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~x86"
+IUSE="doc selinux" # gtk
+
+# gtk support presently does NOT compile.
+#      gtk? ( >=x11-libs/gtk+-2 )
+
+DEPEND="acct-group/tss
+       acct-user/tss
+       >=dev-libs/glib-2
+       >=dev-libs/openssl-0.9.7:0=
+       "
+RDEPEND="${DEPEND}
+       selinux? ( sec-policy/selinux-tcsd )"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-0.3.13-nouseradd.patch"
+       "${FILESDIR}/${PN}-0.3.14-Makefile.am-Mark-tddl.a-nodist.patch"
+       "${FILESDIR}/${P}-tspi-drop-the-use-of-getpwent_r.patch"
+)
+
+DOCS="AUTHORS ChangeLog NICETOHAVES README TODO"
+
+DOC_CONTENTS="
+       If you have problems starting tcsd, please check permissions and
+       ownership on /dev/tpm* and ~tss/system.data
+"
+
+CONFIG_CHECK="~TCG_TPM"
+
+src_prepare() {
+       default
+       eautoreconf
+}
+
+src_configure() {
+       # econf --with-gui=$(usex gtk gtk openssl)
+       econf --with-gui=openssl
+}
+
+src_install() {
+       default
+       find "${D}" -name '*.la' -delete || die
+
+       keepdir /var/lib/tpm
+       use doc && dodoc doc/*
+       newinitd "${FILESDIR}"/tcsd.initd tcsd
+       systemd_dounit "${FILESDIR}"/tcsd.service
+       udev_dorules "${FILESDIR}"/61-trousers.rules
+       fowners tss:tss /var/lib/tpm
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       udev_reload
+}
+
+pkg_postrm() {
+       udev_reload
+}

Reply via email to