Page MenuHomeFreeBSD

D57246.diff
No OneTemporary

D57246.diff

diff --git a/contrib/pkgconf/libpkgconf/personality.c b/contrib/pkgconf/libpkgconf/personality.c
--- a/contrib/pkgconf/libpkgconf/personality.c
+++ b/contrib/pkgconf/libpkgconf/personality.c
@@ -17,6 +17,12 @@
#include <libpkgconf/stdinc.h>
#include <libpkgconf/libpkgconf.h>
+#ifdef __FreeBSD__
+# include <sys/param.h>
+# include <sys/sysctl.h>
+# include <err.h>
+#endif
+
/*
* !doc
*
@@ -77,6 +83,34 @@
free(paths);
paths = NULL;
}
+#elif defined(__FreeBSD__)
+ pkgconf_buffer_t path1 = PKGCONF_BUFFER_INITIALIZER;
+ pkgconf_buffer_t path2 = PKGCONF_BUFFER_INITIALIZER;
+ char const *localbase;
+ char buf[MAXPATHLEN];
+ size_t len;
+
+ localbase = getenv("LOCALBASE");
+
+ if (localbase == NULL) {
+ len = sizeof(buf);
+ if (sysctlbyname("user.localbase", &buf, &len, NULL, 0) < 0)
+ err(1, "sysctl(user.localbase)");
+
+ localbase = buf;
+ }
+
+ if (!pkgconf_buffer_append(&path1, localbase) ||
+ !pkgconf_buffer_append(&path1, "/libdata/pkgconfig"))
+ err(1, NULL);
+ pkgconf_path_add(pkgconf_buffer_str(&path1), dirlist, false);
+
+ pkgconf_path_add("/usr/libdata/pkgconfig", dirlist, false);
+
+ if (!pkgconf_buffer_append(&path2, localbase) ||
+ !pkgconf_buffer_append(&path2, "/share/pkgconfig"))
+ err(1, NULL);
+ pkgconf_path_add(pkgconf_buffer_str(&path2), dirlist, false);
#else
pkgconf_path_split(PKG_DEFAULT_PATH, dirlist, false);
#endif
@@ -308,6 +342,12 @@
#if ! defined(_WIN32) && ! defined(__HAIKU__)
const char *envvar;
#endif
+#if defined(__FreeBSD__)
+ pkgconf_buffer_t path = PKGCONF_BUFFER_INITIALIZER;
+ char const *localbase;
+ char buf[MAXPATHLEN];
+ size_t len;
+#endif
out = load_personality_with_path(triplet, NULL, false);
if (out != NULL)
@@ -346,7 +386,28 @@
pkgconf_path_free(&plist);
#endif
+#ifdef __FreeBSD__
+ localbase = getenv("LOCALBASE");
+
+ if (localbase == NULL) {
+ len = sizeof(buf);
+ if (sysctlbyname("user.localbase", &buf, &len, NULL, 0) < 0)
+ err(1, "sysctl(user.localbase)");
+
+ localbase = buf;
+ }
+
+ pkgconf_path_add("/usr/share/pkgconfig/personality.d", &plist, true);
+ pkgconf_path_add("/etc/pkgconfig/personality.d", &plist, true);
+
+ if (!pkgconf_buffer_append(&path, localbase) ||
+ !pkgconf_buffer_append(&path,
+ "/etc/pkgconfig/personality.d"))
+ err(1, NULL);
+ pkgconf_path_add(pkgconf_buffer_str(&path), &plist, true);
+#else
pkgconf_path_split(PERSONALITY_PATH, &plist, true);
+#endif
PKGCONF_FOREACH_LIST_ENTRY(plist.head, n)
{
diff --git a/lib/libpkgconf/Makefile b/lib/libpkgconf/Makefile
--- a/lib/libpkgconf/Makefile
+++ b/lib/libpkgconf/Makefile
@@ -15,8 +15,6 @@
WARNS?= 3
-CFLAGS+= -DPERSONALITY_PATH=\"/usr/share/pkgconfig/personality.d:/etc/pkgconfig/personality.d:${LOCALBASE:U/usr/local}/etc/pkgconfig/personality.d\"
-CFLAGS+= -DPKG_DEFAULT_PATH=\"${LOCALBASE:U/usr/local}/libdata/pkgconfig:/usr/libdata/pkgconfig:${LOCALBASE:U/usr/local}/share/pkgconfig\"
CFLAGS+= -DSYSTEM_INCLUDEDIR=\"/usr/include\"
CFLAGS+= -DSYSTEM_LIBDIR=\"/usr/lib\"
CFLAGS+= -I${SRCTOP}/lib/libpkgconf -I${PKGCONFDIR}

File Metadata

Mime Type
text/plain
Expires
Wed, Jun 24, 6:13 AM (10 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34266685
Default Alt Text
D57246.diff (2 KB)

Event Timeline