distro: glib: Run the test suite; add DBus.

* distro/packages/glib.scm: Rename to...
* gnu/packages/glib.scm: ... this.  Update module declaration
  accordingly.
  (dbus): New variable.
  (glib): Change version number to 2.34.3, and adjust URL accordingly.
  Add a "doc" output.  Add #:configure-flags, #:patches, and #:phases
  arguments. Add DBUS as an input, as well a three patches.
* Makefile.am (MODULES): Adjust to file renaming.
  (dist_patch_DATA): Add `glib-tests-timezone.patch',
  `glib-tests-homedir.patch', and `glib-tests-desktop.patch'.
This commit is contained in:
Ludovic Courtès 2013-01-16 23:01:24 +01:00
parent 3889a82ef8
commit 943f33a326
5 changed files with 282 additions and 25 deletions

View File

@ -131,24 +131,27 @@ GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
nobase_dist_guilemodule_DATA = $(MODULES) nobase_dist_guilemodule_DATA = $(MODULES)
patchdir = $(guilemoduledir)/gnu/packages/patches patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \ dist_patch_DATA = \
gnu/packages/patches/bigloo-gc-shebangs.patch \ gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \ gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \ gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \ gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/flex-bison-tests.patch \ gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \ gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gettext-gets-undeclared.patch \ gnu/packages/patches/gettext-gets-undeclared.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \ gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \ gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-timezone.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \ gnu/packages/patches/guile-1.8-cpp-4.5.patch \
gnu/packages/patches/guile-default-utf8.patch \ gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-relocatable.patch \ gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/libtool-skip-tests.patch \ gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/lsh-guile-compat.patch \ gnu/packages/patches/lsh-guile-compat.patch \
gnu/packages/patches/lsh-no-root-login.patch \ gnu/packages/patches/lsh-no-root-login.patch \
gnu/packages/patches/lsh-pam-service-name.patch \ gnu/packages/patches/lsh-pam-service-name.patch \
gnu/packages/patches/m4-gets-undeclared.patch \ gnu/packages/patches/m4-gets-undeclared.patch \
gnu/packages/patches/m4-readlink-EINVAL.patch \ gnu/packages/patches/m4-readlink-EINVAL.patch \
gnu/packages/patches/m4-s_isdir.patch \ gnu/packages/patches/m4-s_isdir.patch \
@ -156,8 +159,8 @@ dist_patch_DATA = \
gnu/packages/patches/findutils-absolute-paths.patch \ gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \ gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/procps-make-3.82.patch \ gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/readline-link-ncurses.patch \ gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/shishi-gets-undeclared.patch \ gnu/packages/patches/shishi-gets-undeclared.patch \
gnu/packages/patches/tar-gets-undeclared.patch gnu/packages/patches/tar-gets-undeclared.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -16,44 +17,110 @@
;;; You should have received a copy of the GNU General Public License ;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (distro packages glib) (define-module (gnu packages glib)
#:use-module ((guix licenses) #:select (lgpl2.0+)) #:use-module ((guix licenses) #:select (lgpl2.0+ gpl2+))
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (distro packages base) #:use-module (gnu packages)
#:use-module (distro packages compression) #:use-module (gnu packages base)
#:use-module ((distro packages gettext) #:use-module (gnu packages compression)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:)) #:renamer (symbol-prefix-proc 'guix:))
#:use-module (distro packages libffi) #:use-module (gnu packages libffi)
#:use-module (distro packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (distro packages python)) #:use-module (gnu packages python)
#:use-module (gnu packages perl)
#:use-module ((gnu packages xml)
#:renamer (symbol-prefix-proc 'xml:)))
(define-public dbus
(package
(name "dbus")
(version "1.6.4")
(source (origin
(method url-fetch)
(uri
(string-append "http://dbus.freedesktop.org/releases/dbus/dbus-"
version ".tar.gz"))
(sha256
(base32
"1wacqyfkcpayg7f8rvx9awqg275n5pksxq5q7y21lxjx85x6pfjz"))))
(build-system gnu-build-system)
(inputs
`(("expat" ,xml:expat)
("pkg-config" ,pkg-config)))
(home-page "http://dbus.freedesktop.org/")
(synopsis "Message bus for inter-process communication (IPC)")
(description
"D-Bus is a message bus system, a simple way for applications to
talk to one another. In addition to interprocess communication, D-Bus
helps coordinate process lifecycle; it makes it simple and reliable to
code a \"single instance\" application or daemon, and to launch
applications and daemons on demand when their services are needed.
D-Bus supplies both a system daemon (for events such as \"new hardware
device added\" or \"printer queue changed\") and a
per-user-login-session daemon (for general IPC needs among user
applications). Also, the message bus is built on top of a general
one-to-one message passing framework, which can be used by any two apps
to communicate directly (without going through the message bus
daemon). Currently the communicating applications are on one computer,
or through unencrypted TCP/IP suitable for use behind a firewall with
shared NFS home directories.")
(license gpl2+))) ; or Academic Free License 2.1
(define-public glib (define-public glib
(package (package
(name "glib") (name "glib")
(version "2.34") (version "2.34.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://ftp.gnome.org/pub/gnome/sources/" (uri (string-append "http://ftp.gnome.org/pub/gnome/sources/"
name "/" version "/" name "/2.34/"
name "-" version ".3" ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 "19sq4rhl2vr8ikjvl8qh51vr38yqfhbkb3imi2s6ac5rgkwcnpw5")))) (base32 "19sq4rhl2vr8ikjvl8qh51vr38yqfhbkb3imi2s6ac5rgkwcnpw5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" ; everything
"doc")) ; 20 MiB of GTK-Doc reference
(inputs (inputs
`(("coreutils" ,coreutils) `(("coreutils" ,coreutils)
("gettext" ,guix:gettext) ("gettext" ,guix:gettext)
("libffi" ,libffi) ("libffi" ,libffi)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("python" ,python) ("python" ,python)
("zlib" ,zlib))) ("zlib" ,zlib)
(arguments `(#:tests? #f)) ; XXX: tests fail ("perl" ,perl) ; needed by GIO tests
(synopsis ("dbus" ,dbus) ; for GDBus tests
"GLib, a library that provides the core application building blocks")
("patch/tests-tzdata"
,(search-patch "glib-tests-timezone.patch"))
("patch/tests-homedir"
,(search-patch "glib-tests-homedir.patch"))
("patch/tests-desktop"
,(search-patch "glib-tests-desktop.patch"))))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/tests-tzdata")
(assoc-ref %build-inputs "patch/tests-homedir")
(assoc-ref %build-inputs "patch/tests-desktop"))
#:phases (alist-cons-before
'build 'pre-build
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* '("glib/gspawn.c"
"glib/tests/utils.c"
"tests/spawn-test.c")
(("/bin/sh") (which "sh"))))
%standard-phases)
;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
#:configure-flags (list (string-append "--with-html-dir="
(assoc-ref %outputs "doc")
"/share/gtk-doc"))))
(synopsis "C library that provides core application building blocks")
(description (description
"GLib provides data structure handling for C, portability wrappers, "GLib provides data structure handling for C, portability wrappers,
and interfaces for such runtime functionality as an event loop, threads, and interfaces for such runtime functionality as an event loop, threads,
dynamic loading, and an object system.") dynamic loading, and an object system.")
(home-page "http://developer.gnome.org/glib/") (home-page "http://developer.gnome.org/glib/")
(license lgpl2.0+))) ; some files are under lgpl2.1+ (license lgpl2.0+))) ; some files are under lgpl2.1+

View File

@ -0,0 +1,87 @@
Some GLib tests expect desktop things, such as an xterm, a MIME
database, the `update-desktop-database' program, which we don't provide.
--- glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:00.000000000 +0100
+++ glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:06.000000000 +0100
@@ -384,14 +384,09 @@ main (int argc, char *argv[])
g_test_add_func ("/appinfo/basic", test_basic);
g_test_add_func ("/appinfo/text", test_text);
- g_test_add_func ("/appinfo/launch", test_launch);
g_test_add_func ("/appinfo/show-in", test_show_in);
g_test_add_func ("/appinfo/commandline", test_commandline);
- g_test_add_func ("/appinfo/launch-context", test_launch_context);
g_test_add_func ("/appinfo/tryexec", test_tryexec);
- g_test_add_func ("/appinfo/associations", test_associations);
g_test_add_func ("/appinfo/environment", test_environment);
- g_test_add_func ("/appinfo/startup-wm-class", test_startup_wm_class);
- g_test_add_func ("/appinfo/supported-types", test_supported_types);
g_test_add_func ("/appinfo/from-keyfile", test_from_keyfile);
--- glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:29.000000000 +0100
+++ glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:33.000000000 +0100
@@ -207,13 +207,6 @@ main (int argc, char *argv[])
g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/contenttype/guess", test_guess);
- g_test_add_func ("/contenttype/unknown", test_unknown);
- g_test_add_func ("/contenttype/subtype", test_subtype);
- g_test_add_func ("/contenttype/list", test_list);
- g_test_add_func ("/contenttype/executable", test_executable);
- g_test_add_func ("/contenttype/description", test_description);
- g_test_add_func ("/contenttype/icon", test_icon);
return g_test_run ();
}
--- glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:00.000000000 +0100
+++ glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:02.000000000 +0100
@@ -363,9 +363,5 @@ main (int argc,
g_setenv ("XDG_DATA_HOME", basedir, TRUE);
cleanup_subdirs (basedir);
- g_test_add_func ("/desktop-app-info/delete", test_delete);
- g_test_add_func ("/desktop-app-info/default", test_default);
- g_test_add_func ("/desktop-app-info/fallback", test_fallback);
- g_test_add_func ("/desktop-app-info/lastused", test_last_used);
result = g_test_run ();
-----------------------------
The hunk below removes tests that depend on `gdbus-testserver.py',
because that script depends on python-gobject.
--- glib-2.34.3/gio/tests/Makefile.in 2012-11-26 20:08:54.000000000 +0100
+++ glib-2.34.3/gio/tests/Makefile.in 2013-01-17 23:09:44.000000000 +0100
@@ -60,15 +60,8 @@ DIST_COMMON = $(srcdir)/Makefile.am $(sr
noinst_PROGRAMS = $(am__EXEEXT_6) $(am__EXEEXT_8)
@HAVE_DBUS_DAEMON_TRUE@am__append_1 = \
@HAVE_DBUS_DAEMON_TRUE@ actions \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-connection \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-connection-loss \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-connection-slow \
@HAVE_DBUS_DAEMON_TRUE@ gdbus-names \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-proxy \
@HAVE_DBUS_DAEMON_TRUE@ gdbus-proxy-threads \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-proxy-well-known-name \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-introspection \
-@HAVE_DBUS_DAEMON_TRUE@ gdbus-threading \
@HAVE_DBUS_DAEMON_TRUE@ gdbus-export \
@HAVE_DBUS_DAEMON_TRUE@ gdbus-error \
@HAVE_DBUS_DAEMON_TRUE@ gdbus-bz627724 \
The test below depends on the availability /etc/passwd to dbus-daemon.
--- glib-2.34.3/gio/tests/gdbus-auth.c 2013-01-19 14:32:14.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-auth.c 2013-01-19 14:32:20.000000000 +0100
@@ -264,6 +264,7 @@ main (int argc,
{
gint ret;
+ exit (0);
setlocale (LC_ALL, "C");
g_type_init ();

View File

@ -0,0 +1,59 @@
`g_get_home_dir' looks at /etc/passwd first, which fails in chroot builds.
The gdbus tests use it to lookup .dbus-keyrings, so they cannot run in our
chroot build environment. Thus, disable them.
--- glib-2.34.3/gio/tests/gdbus-connection-flush.c 2013-01-16 17:29:46.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-connection-flush.c 2013-01-16 17:29:47.000000000 +0100
@@ -373,10 +373,6 @@ main (int argc,
g_type_init ();
g_test_init (&argc, &argv, NULL);
- g_test_add ("/gdbus/connection/flush/busy", Fixture, NULL,
- setup, test_flush_busy, teardown);
- g_test_add ("/gdbus/connection/flush/idle", Fixture, NULL,
- setup, test_flush_idle, teardown);
ret = g_test_run();
--- glib-2.34.3/gio/tests/gdbus-peer.c 2013-01-16 17:38:09.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-peer.c 2013-01-16 17:38:12.000000000 +0100
@@ -1828,11 +1828,6 @@ main (int argc,
g_test_add_func ("/gdbus/peer-to-peer", test_peer);
g_test_add_func ("/gdbus/delayed-message-processing", delayed_message_processing);
- g_test_add_func ("/gdbus/nonce-tcp", test_nonce_tcp);
- g_test_add_func ("/gdbus/tcp-anonymous", test_tcp_anonymous);
- g_test_add_func ("/gdbus/credentials", test_credentials);
- g_test_add_func ("/gdbus/overflow", test_overflow);
- g_test_add_func ("/gdbus/codegen-peer-to-peer", codegen_test_peer);
ret = g_test_run();
--- glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:25.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:30.000000000 +0100
@@ -206,13 +206,6 @@ main (int argc,
g_type_init ();
g_test_init (&argc, &argv, NULL);
- for (i = 0; cases[i].name != NULL; i++)
- {
- gchar *name = g_strdup_printf ("/gdbus/exit-on-close/%s", cases[i].name);
-
- g_test_add_data_func (name, &cases[i], test_exit_on_close);
- g_free (name);
- }
return g_test_run();
}
--- glib-2.34.3/gio/tests/gdbus-non-socket.c 2013-01-16 18:13:25.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-non-socket.c 2013-01-16 18:13:27.000000000 +0100
@@ -294,7 +294,6 @@ main (int argc,
g_type_init ();
g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/gdbus/non-socket", test_non_socket);
ret = g_test_run();

View File

@ -0,0 +1,41 @@
Since glibc 2.17 doesn't install timezone data by default (see
http://thread.gmane.org/gmane.comp.lib.glibc.alpha/17516), and since we
don't have that around, shamelessly skip this test.
--- glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:57.000000000 +0100
+++ glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:58.000000000 +0100
@@ -186,14 +186,6 @@ test_GDateTime_equal (void)
g_assert (g_date_time_equal (dt1, dt2));
g_date_time_unref (dt1);
- /* America/Recife is in UTC-0300 */
- tz = g_time_zone_new ("America/Recife");
- dt1 = g_date_time_new (tz, 2010, 5, 24, 8, 0, 0);
- g_time_zone_unref (tz);
- g_assert_cmpint (g_date_time_get_utc_offset (dt1) / G_USEC_PER_SEC, ==, (-3 * 3600));
- g_assert (g_date_time_equal (dt1, dt2));
- g_date_time_unref (dt1);
- g_date_time_unref (dt2);
}
static void
@@ -608,7 +608,6 @@ test_GDateTime_new_full (void)
g_assert_cmpint (8, ==, g_date_time_get_hour (dt));
g_assert_cmpint (4, ==, g_date_time_get_minute (dt));
g_assert_cmpint (0, ==, g_date_time_get_second (dt));
- g_assert_cmpstr ("BRT", ==, g_date_time_get_timezone_abbreviation (dt));
g_assert (!g_date_time_is_daylight_savings (dt));
g_date_time_unref (dt);
}
@@ -1354,11 +1354,8 @@ main (gint argc,
g_test_add_func ("/GDateTime/to_timeval", test_GDateTime_to_timeval);
g_test_add_func ("/GDateTime/to_utc", test_GDateTime_to_utc);
g_test_add_func ("/GDateTime/now_utc", test_GDateTime_now_utc);
- g_test_add_func ("/GDateTime/dst", test_GDateTime_dst);
g_test_add_func ("/GDateTime/test_z", test_z);
g_test_add_func ("/GDateTime/test-all-dates", test_all_dates);
- g_test_add_func ("/GTimeZone/find-interval", test_find_interval);
- g_test_add_func ("/GTimeZone/adjust-time", test_adjust_time);
g_test_add_func ("/GTimeZone/no-header", test_no_header);
return g_test_run ();