commit:     53aa03a44b9665eac0aaae2b0224a1f9c16e3917
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 14 18:17:54 2016 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jan 14 18:18:34 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=53aa03a4

app-portage/portage-utils: add patch to allow compilation on Solaris

Package-Manager: portage-2.2.20-prefix

 .../files/portage-utils-0.60-solaris.patch         | 48 ++++++++++++++++++++++
 .../portage-utils/portage-utils-0.60.ebuild        |  1 +
 2 files changed, 49 insertions(+)

diff --git a/app-portage/portage-utils/files/portage-utils-0.60-solaris.patch 
b/app-portage/portage-utils/files/portage-utils-0.60-solaris.patch
new file mode 100644
index 0000000..c938844
--- /dev/null
+++ b/app-portage/portage-utils/files/portage-utils-0.60-solaris.patch
@@ -0,0 +1,48 @@
+- remove non-compatible xasprintf wrapper (compared to statement
+  expression version in libq/xasprintf.c
+- work around missing d_type/DT_DIR
+
+--- qcache.c
++++ qcache.c
+@@ -750,13 +750,21 @@
+ 
+               xasprintf(&catpath, "%s/dep/%s", portedb, data->overlay);
+               dir = opendir(catpath);
+-              while ((de = readdir(dir)))
++              while ((de = readdir(dir))) {
++#ifndef DT_DIR
++                      struct stat s;
++                      if (stat(de->d_name, &s))
++                              continue;
++                      if (S_ISDIR(s.st_mode) && de->d_name[0] != '.') {
++#else
+                       if (de->d_type == DT_DIR && de->d_name[0] != '.') {
++#endif
+                               bool ok;
+                               allcats = add_set_unique(de->d_name, allcats, 
&ok);
+                               if (ok)
+                                       ++numcat;
+                       }
++              }
+               closedir(dir);
+               free(catpath);
+ 
+--- libq/compat.c
++++ libq/compat.c
+@@ -20,16 +20,6 @@
+       return(off == NULL ? off : (char*)(big + (off - b)));
+ }
+ 
+-#undef  xasprintf
+-#define xasprintf(strp, fmt, args...) \
+-      do { /* xasprintf() */ \
+-              char str[BUFSIZ]; \
+-              if ((snprintf(str, sizeof(str)-1, fmt , ## args)) == -1) \
+-                      err("Out of stack space?"); \
+-              str[sizeof(str)-1] = '\0'; \
+-              *strp = xstrdup(str); \
+-      } while (0)
+-
+ #elif defined(__hpux__) || defined(__MINT__)
+       /* must not include both dir.h and dirent.h on hpux11..11 & FreeMiNT */
+ #elif defined(__linux__)

diff --git a/app-portage/portage-utils/portage-utils-0.60.ebuild 
b/app-portage/portage-utils/portage-utils-0.60.ebuild
index 4b100d0..ae43b8c 100644
--- a/app-portage/portage-utils/portage-utils-0.60.ebuild
+++ b/app-portage/portage-utils/portage-utils-0.60.ebuild
@@ -22,6 +22,7 @@ DEPEND="${RDEPEND}
        static? ( dev-libs/iniparser:0[static-libs] )"
 
 src_prepare() {
+       epatch "${FILESDIR}"/${P}-solaris.patch
        epatch_user
 }
 

Reply via email to