diff --git a/dev-libs/glib/glib2-2.48.0.recipe b/dev-libs/glib/glib2-2.48.0.recipe new file mode 100644 index 000000000..cd3e57d21 --- /dev/null +++ b/dev-libs/glib/glib2-2.48.0.recipe @@ -0,0 +1,150 @@ +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="744be6931ca914c68af98dc38ff6b0cf8381d65e335060faddfbf04c17147c34" +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_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.4800.0 compat >= 0 + lib:libglib_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + lib:libgmodule_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + lib:libgobject_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + lib:libgthread_2.0$secondaryArchSuffix = 0.4800.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.4800.0 compat >= 0 + devel:libglib_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + devel:libgmodule_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + devel:libgobject_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + devel:libgthread_2.0$secondaryArchSuffix = 0.4800.0 compat >= 0 + " + +REQUIRES_devel=" + glib2$secondaryArchSuffix == $portVersion base + devel:libffi$secondaryArchSuffix + devel:libiconv$secondaryArchSuffix + devel:libintl$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 +} diff --git a/dev-libs/glib/patches/glib2-2.48.0.patchset b/dev-libs/glib/patches/glib2-2.48.0.patchset new file mode 100644 index 000000000..0d2b2f7cd --- /dev/null +++ b/dev-libs/glib/patches/glib2-2.48.0.patchset @@ -0,0 +1,241 @@ +From cf040d5469f1683a84a671dfbebaeded12bb60c1 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 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 +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 +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 + #endif ++#ifdef __HAIKU__ ++#include ++#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 +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 +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 ++#include ++#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 +