Skip to content

Commit

Permalink
glib2, bump version (#1450)
Browse files Browse the repository at this point in the history
  • Loading branch information
Begasus authored and waddlesplash committed Jul 20, 2017
1 parent 35f18a4 commit 1d31715
Show file tree
Hide file tree
Showing 2 changed files with 393 additions and 0 deletions.
152 changes: 152 additions & 0 deletions dev-libs/glib/glib2-2.53.1.recipe
@@ -0,0 +1,152 @@
SUMMARY="GLib is a cross-platform software utility library"
DESCRIPTION="GLib is a cross-platform software utility library that began as \
part of the GTK+ project. However, before releasing version 2 of GTK+, the \
project's developers decided to separate non-GUI-specific code from the GTK+ \
platform, thus creating GLib as a separate product. GLib was released as a \
separate library so other developers, those who did not make use of the \
GUI-related portions of GTK+, could make use of the non-GUI portions of the \
library without the overhead of depending on the entire GUI library.
Since GLib is a cross-platform library, applications using it to interface \
with the operating system are usually portable across different operating \
systems without major changes
"
HOMEPAGE="http://www.gtk.org/"
COPYRIGHT="1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
1991-2003 Free Software Foundation, Inc.
1997-2006 University of Cambridge.
1998-2001, 2003-2010 Red Hat, Inc.
2007-2009 Nokia Corporation
2008, 2010 Oracle and/or its affiliates, Inc. All rights
2008-2010 Codethink Limited
2008-2010 Collabora Ltd.
1995-2010 Several others"
LICENSE="GNU LGPL v2"
REVISION="1"
SOURCE_URI="http://ftp.gnome.org/pub/gnome/sources/glib/${portVersion%.*}/glib-$portVersion.tar.xz"
CHECKSUM_SHA256="c8740f1d1a138086eede889b596a511fddda180646ab2f1d98aed4fdb6be7f72"
SOURCE_DIR="glib-$portVersion"
PATCHES="glib2-$portVersion.patchset"

ARCHITECTURES="x86_gcc2 x86 x86_64"
SECONDARY_ARCHITECTURES="?x86_gcc2 ?x86"

PROVIDES="
glib2$secondaryArchSuffix = $portVersion compat >= 2
cmd:gapplication$secondaryArchSuffix
cmd:gdbus$secondaryArchSuffix
cmd:gdbus_codegen$secondaryArchSuffix
cmd:gio$secondaryArchSuffix
cmd:gio_querymodules$secondaryArchSuffix
cmd:glib_compile_resources$secondaryArchSuffix
cmd:glib_compile_schemas$secondaryArchSuffix
cmd:glib_genmarshal$secondaryArchSuffix
cmd:glib_gettextize$secondaryArchSuffix
cmd:glib_mkenums$secondaryArchSuffix
cmd:gobject_query$secondaryArchSuffix
cmd:gresource$secondaryArchSuffix
cmd:gsettings$secondaryArchSuffix
cmd:gtester$secondaryArchSuffix
cmd:gtester_report$secondaryArchSuffix
lib:libgio_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
lib:libglib_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
lib:libgmodule_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
lib:libgobject_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
lib:libgthread_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
"
REQUIRES="
haiku$secondaryArchSuffix
gettext$secondaryArchSuffix
lib:libiconv$secondaryArchSuffix
lib:libz$secondaryArchSuffix
lib:libffi$secondaryArchSuffix
lib:libintl$secondaryArchSuffix
lib:libpcre$secondaryArchSuffix >= 1
"

PROVIDES_devel="
glib2${secondaryArchSuffix}_devel = $portVersion compat >= 0
devel:libgio_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
devel:libglib_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
devel:libgmodule_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
devel:libgobject_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
devel:libgthread_2.0$secondaryArchSuffix = 0.5301.0 compat >= 0
"

REQUIRES_devel="
glib2$secondaryArchSuffix == $portVersion base
devel:libffi$secondaryArchSuffix
devel:libiconv$secondaryArchSuffix
devel:libintl$secondaryArchSuffix
devel:libpcre$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"

BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libiconv$secondaryArchSuffix
devel:libz$secondaryArchSuffix
devel:libffi$secondaryArchSuffix
devel:libintl$secondaryArchSuffix
devel:libpcre$secondaryArchSuffix >= 1
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:libtoolize$secondaryArchSuffix
cmd:aclocal
cmd:autoconf
cmd:make
cmd:pkg_config$secondaryArchSuffix
cmd:python
"

BUILD()
{
autoreconf -fi
runConfigure ./configure CFLAGS=-D_BSD_SOURCE

# There seem to be a problem with libtool, and without this some libraries
# would not be found during the build.
mkdir -p gobject/.libs gio/.libs
ln -sf ../../glib/.libs gobject/.libs/lib

make $jobArgs
}

INSTALL()
{
make install

# remove libtool library files
rm $libDir/lib*.la

prepareInstalledDevelLibs libgio-2.0 \
libglib-2.0 \
libgmodule-2.0 \
libgobject-2.0 \
libgthread-2.0
fixPkgconfig

# The libtool files reference other libraries using the wrong paths, which
# creates a lot of confusion. Fix them so correct paths are used.
local develPackageName="${portName}_devel-$portFullVersion"
local packageLinksDir=$(dirname $portPackageLinksDir)
local ffiLinksDir="$packageLinksDir/${develPackageName}/devel~libffi$secondaryArchSuffix/$relativeDevelopLibDir"
sed -i -e "s,^\(Libs.private.*\)-L.* \(-l.*\)$,\1-L$ffiLinksDir \2," \
$developLibDir/pkgconfig/gobject-2.0.pc
local zlibLinksDir="$packageLinksDir/${develPackageName}/devel~libz$secondaryArchSuffix/$relativeDevelopLibDir"
sed -i -e "s,^\(Libs.private.*\)-L.* \(-l.*\)$,\1-L$zlibLinksDir \2," \
$developLibDir/pkgconfig/gio-2.0.pc


# move the glibconfig header into devel as well
mv $libDir/glib-2.0 $developLibDir

fixPkgconfig

# devel package
packageEntries devel \
$developDir

rm $libDir/charset.alias
}
241 changes: 241 additions & 0 deletions dev-libs/glib/patches/glib2-2.53.1.patchset
@@ -0,0 +1,241 @@
From cf040d5469f1683a84a671dfbebaeded12bb60c1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 19 Dec 2015 14:51:01 +0000
Subject: glib_compile_schemas: links against gio, gobject and gmodule.

Otherwise build fails on Haiku.

diff --git a/gio/Makefile.am b/gio/Makefile.am
index 5d5d741..d4caed9 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -728,7 +728,11 @@ gio_querymodules_LDADD = libgio-2.0.la \
gconstructor_as_data.h: $(top_srcdir)/glib/gconstructor.h data-to-c.pl
$(AM_V_GEN) $(srcdir)/data-to-c.pl $(top_srcdir)/glib/gconstructor.h gconstructor_code > $@.tmp && mv $@.tmp $@

-glib_compile_schemas_LDADD = $(top_builddir)/glib/libglib-2.0.la
+glib_compile_schemas_LDADD = libgio-2.0.la \
+ $(top_builddir)/gobject/libgobject-2.0.la \
+ $(top_builddir)/gmodule/libgmodule-2.0.la \
+ $(top_builddir)/glib/libglib-2.0.la \
+ $(NULL)
glib_compile_schemas_SOURCES = \
gconstructor_as_data.h \
gvdb/gvdb-format.h \
--
2.2.2


From 0095964aadf305fde0a5b58ea9b5ba03d9787d50 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 19 Dec 2015 14:59:42 +0000
Subject: configure.ac: on Haiku

* don't use -pthread
* use -lbe -lroot as thread related libs.

diff --git a/configure.ac b/configure.ac
index 339defc..9d8bed2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -152,6 +152,9 @@ case "$host" in
;;
esac
case $host in
+ *-*-haiku*)
+ LIBS="-lnetwork $LIBS"
+ ;;
*-*-linux*)
glib_os_linux=yes
;;
@@ -1876,8 +1879,8 @@ AS_IF([ test x"$have_threads" = xposix], [
# One of them does for most gcc versions and some other platforms/compilers
# too and could be considered as the canonical way to go.
case $host in
- *-*-cygwin*|*-*-darwin*)
- # skip cygwin and darwin -pthread or -pthreads test
+ *-*-cygwin*|*-*-darwin*|*-*-haiku*)
+ # skip cygwin, darwin and haiku -pthread or -pthreads test
;;
*-solaris*)
# These compiler/linker flags work with both Sun Studio and gcc
@@ -2042,6 +2045,15 @@ if test "x$G_THREAD_LIBS" = xerror; then
AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
fi

+case $host in
+ *-*-haiku*)
+ G_THREAD_LIBS="-lbe -lroot"
+ G_THREAD_LIBS_EXTRA="-L\$(top_builddir_full)/.libs"
+ ;;
+ *)
+ ;;
+esac
+
AC_MSG_CHECKING(thread related libraries)
AC_MSG_RESULT($G_THREAD_LIBS)

--
2.2.2


From 00208cb8f052a1e0acafdeb558d580d4cceb2855 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 19 Dec 2015 15:06:17 +0000
Subject: g_dbus_message_print: use B_PRIiDEV on Haiku.

because Haiku doesn't define major() and minor().

diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c
index d9d8f37..eb5945c 100644
--- a/gio/gdbusmessage.c
+++ b/gio/gdbusmessage.c
@@ -33,6 +33,9 @@
#elif MAJOR_IN_SYSMACROS
#include <sys/sysmacros.h>
#endif
+#ifdef __HAIKU__
+#include <SupportDefs.h>
+#endif

#include "gdbusutils.h"
#include "gdbusmessage.h"
@@ -3474,8 +3477,13 @@ g_dbus_message_print (GDBusMessage *message,
fs = g_string_new (NULL);
if (fstat (fds[n], &statbuf) == 0)
{
+#ifdef __HAIKU__
+ g_string_append_printf (fs, "%s" "dev=%" B_PRIiDEV, fs->len > 0 ? "," : "",
+ statbuf.st_dev);
+#else
g_string_append_printf (fs, "%s" "dev=%d:%d", fs->len > 0 ? "," : "",
major (statbuf.st_dev), minor (statbuf.st_dev));
+#endif
g_string_append_printf (fs, "%s" "mode=0%o", fs->len > 0 ? "," : "",
statbuf.st_mode);
g_string_append_printf (fs, "%s" "ino=%" G_GUINT64_FORMAT, fs->len > 0 ? "," : "",
@@ -3484,8 +3492,13 @@ g_dbus_message_print (GDBusMessage *message,
(guint) statbuf.st_uid);
g_string_append_printf (fs, "%s" "gid=%u", fs->len > 0 ? "," : "",
(guint) statbuf.st_gid);
+#ifdef __HAIKU__
+ g_string_append_printf (fs, "%s" "rdev=%" B_PRIiDEV, fs->len > 0 ? "," : "",
+ statbuf.st_rdev);
+#else
g_string_append_printf (fs, "%s" "rdev=%d:%d", fs->len > 0 ? "," : "",
major (statbuf.st_rdev), minor (statbuf.st_rdev));
+#endif
g_string_append_printf (fs, "%s" "size=%" G_GUINT64_FORMAT, fs->len > 0 ? "," : "",
(guint64) statbuf.st_size);
g_string_append_printf (fs, "%s" "atime=%" G_GUINT64_FORMAT, fs->len > 0 ? "," : "",
--
2.2.2


From 55022ad00cba573ec61795760b3cbf30f1efb284 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 19 Dec 2015 15:09:39 +0000
Subject: gunixmounts.c: on Haiku

* define get_mtab_monitor_file() and _g_get_unix_mounts().
* like Interix, _g_get_unix_mount_points() calls _g_get_unix_mounts().

diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
index 2e2ff5e..8d5e752 100644
--- a/gio/gunixmounts.c
+++ b/gio/gunixmounts.c
@@ -712,7 +712,18 @@ _g_get_unix_mounts (void)

return return_list;
}
+#elif defined(__HAIKU__)
+static char *
+get_mtab_monitor_file (void)
+{
+ return NULL;
+}

+static GList *
+_g_get_unix_mounts (void)
+{
+ return NULL;
+}
/* Common code {{{2 */
#else
#error No _g_get_unix_mounts() implementation for system
@@ -1110,8 +1121,8 @@ _g_get_unix_mount_points (void)

return g_list_reverse (return_list);
}
-/* Interix {{{2 */
-#elif defined(__INTERIX)
+/* Interix, Haiku {{{2 */
+#elif defined(__INTERIX) || defined(__HAIKU__)
static GList *
_g_get_unix_mount_points (void)
{
--
2.2.2


From 4bb1d1e5f4c0284cbc235b9747eb5d2deaa6f4c8 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 19 Dec 2015 15:12:40 +0000
Subject: glib/gutils.c: on Haiku define load_user_special_dirs().

use find_directory() from SupportDefs.h.

diff --git a/glib/gutils.c b/glib/gutils.c
index e82ce54..bb2b72a 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -69,6 +69,11 @@
#include "gwin32.h"
#endif

+#if defined(__HAIKU__)
+#include <FindDirectory.h>
+#include <fs_info.h>
+#endif
+

/**
* SECTION:misc_utils
@@ -1421,6 +1426,34 @@ load_user_special_dirs (void)
g_user_special_dirs[G_USER_DIRECTORY_VIDEOS] = find_folder (kMovieDocumentsFolderType);
}

+#elif defined(__HAIKU__)
+static void
+load_user_special_dirs (void)
+{
+ char path[B_PATH_NAME_LENGTH + B_FILE_NAME_LENGTH];
+
+ dev_t volume = dev_for_path("/boot");
+ if (find_directory(B_DESKTOP_DIRECTORY, volume, false, path, sizeof(path))
+ == B_OK) {
+ g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] = g_strdup(path);
+ g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = g_strdup(path);
+ } else {
+ g_user_special_dirs[G_USER_DIRECTORY_DOCUMENTS] = NULL;
+ g_user_special_dirs[G_USER_DIRECTORY_DESKTOP] = NULL;
+ }
+
+ if (find_directory(B_USER_DIRECTORY, volume, false, path, sizeof(path))
+ == B_OK) {
+ g_user_special_dirs[G_USER_DIRECTORY_DOCUMENTS] = g_strdup(path);
+ } else
+ g_user_special_dirs[G_USER_DIRECTORY_DOWNLOAD] = NULL;
+
+ g_user_special_dirs[G_USER_DIRECTORY_MUSIC] = NULL;
+ g_user_special_dirs[G_USER_DIRECTORY_PICTURES] = NULL;
+ g_user_special_dirs[G_USER_DIRECTORY_PUBLIC_SHARE] = NULL;
+ g_user_special_dirs[G_USER_DIRECTORY_TEMPLATES] = NULL;
+ g_user_special_dirs[G_USER_DIRECTORY_VIDEOS] = NULL;
+}
#elif defined(G_OS_WIN32)

static void
--
2.2.2

0 comments on commit 1d31715

Please sign in to comment.