diff --git a/dev-libs/glib/glib2-2.53.5.recipe b/dev-libs/glib/glib2-2.53.5.recipe new file mode 100644 index 000000000..0f380d4d0 --- /dev/null +++ b/dev-libs/glib/glib2-2.53.5.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="https://git.gnome.org/browse/glib/snapshot/glib-$portVersion.tar.xz" +CHECKSUM_SHA256="963a70f114e9925424898178973423f70d4cd1dfcd226fa85882be6c8b87f3f5" +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.5305.0 compat >= 0 + lib:libglib_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + lib:libgmodule_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + lib:libgobject_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + lib:libgthread_2.0$secondaryArchSuffix = 0.5305.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.5305.0 compat >= 0 + devel:libglib_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + devel:libgmodule_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + devel:libgobject_2.0$secondaryArchSuffix = 0.5305.0 compat >= 0 + devel:libgthread_2.0$secondaryArchSuffix = 0.5305.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 + cmd:which + " + +BUILD() +{ + runConfigure ./autogen.sh 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 +} diff --git a/dev-libs/glib/patches/glib2-2.53.5.patchset b/dev-libs/glib/patches/glib2-2.53.5.patchset new file mode 100644 index 000000000..d981bfa73 --- /dev/null +++ b/dev-libs/glib/patches/glib2-2.53.5.patchset @@ -0,0 +1,246 @@ +From 2107a6fce76fb34082a2fe24aa8814a931cbbb1b Mon Sep 17 00:00:00 2001 +From: Jerome Duval +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 b2db995..c82f05c 100644 +--- a/gio/Makefile.am ++++ b/gio/Makefile.am +@@ -817,7 +817,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.7.0 + + +From 9229a461b8bbfaa0bd8b232ef0013a84392fb1ff Mon Sep 17 00:00:00 2001 +From: Jerome Duval +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 fbc4400..7386289 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -154,6 +154,9 @@ case "$host" in + ;; + esac + case $host in ++ *-*-haiku*) ++ LIBS="-lnetwork $LIBS" ++ ;; + *-*-linux*) + glib_os_linux=yes + ;; +@@ -1922,8 +1925,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 +@@ -2088,6 +2091,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.7.0 + + +From 2ae7f7f265f807896f61a19ad715d33a6ac0e6b2 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sat, 29 Jul 2017 12:13:00 +0200 +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 9158858..901c1e5 100644 +--- a/gio/gdbusmessage.c ++++ b/gio/gdbusmessage.c +@@ -33,8 +33,12 @@ + #elif MAJOR_IN_SYSMACROS + #include + #else ++#ifdef __HAIKU__ ++#include ++#else + #define MAJOR_MINOR_NOT_FOUND 1 + #endif ++#endif + + #include "gdbusutils.h" + #include "gdbusmessage.h" +@@ -3478,9 +3482,14 @@ g_dbus_message_print (GDBusMessage *message, + if (fstat (fds[n], &statbuf) == 0) + { + #ifndef MAJOR_MINOR_NOT_FOUND ++#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 ++#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 ? "," : "", +@@ -3490,9 +3499,14 @@ g_dbus_message_print (GDBusMessage *message, + g_string_append_printf (fs, "%s" "gid=%u", fs->len > 0 ? "," : "", + (guint) statbuf.st_gid); + #ifndef MAJOR_MINOR_NOT_FOUND ++#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 ++#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.7.0 + + +From af39ea73bae9c6cc46d029bb6523ff207587b933 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sat, 29 Jul 2017 12:19:31 +0200 +Subject: gunixmounts.c: on Haiku + +* define get_mtab_minitor_file() and _g_get_unix_mounts() +* like Inerix, _g_get_unix_mount_points() calls _g_get_unix_mounts(). + +diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c +index 2ccd9f7..3b2f5b0 100644 +--- a/gio/gunixmounts.c ++++ b/gio/gunixmounts.c +@@ -829,7 +829,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 +@@ -1340,8 +1351,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.7.0 + + +From 44cc8d19093525980ad7645711a984efb4261310 Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Sat, 29 Jul 2017 12:32:14 +0200 +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 70b08b6..5448a66 100644 +--- a/glib/gutils.c ++++ b/glib/gutils.c +@@ -69,6 +69,10 @@ + #include "gwin32.h" + #endif + ++#if defined(__HAIKU__) ++#include ++#include ++#endif + + /** + * SECTION:misc_utils +@@ -1429,6 +1433,35 @@ 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.7.0 +