summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/gjs')
-rw-r--r--dev-libs/gjs/Manifest3
-rw-r--r--dev-libs/gjs/files/gjs-1.40.1-ownership-transfer.patch72
-rw-r--r--dev-libs/gjs/files/gjs-1.40.1-ratelimit-rss.patch45
-rw-r--r--dev-libs/gjs/files/gjs-1.42.0-disable-unittest-1.patch48
-rw-r--r--dev-libs/gjs/files/gjs-1.42.0-disable-unittest-2.patch40
-rw-r--r--dev-libs/gjs/files/gjs-1.42.0-disable-unittest-3.patch35
-rw-r--r--dev-libs/gjs/files/gjs-1.43.3-disable-unittest-1.patch40
-rw-r--r--dev-libs/gjs/files/gjs-1.43.3-disable-unittest-2.patch35
-rw-r--r--dev-libs/gjs/gjs-1.40.1-r1.ebuild75
-rw-r--r--dev-libs/gjs/gjs-1.42.0.ebuild69
-rw-r--r--dev-libs/gjs/gjs-1.43.3.ebuild69
-rw-r--r--dev-libs/gjs/metadata.xml5
12 files changed, 536 insertions, 0 deletions
diff --git a/dev-libs/gjs/Manifest b/dev-libs/gjs/Manifest
new file mode 100644
index 000000000000..44bd65087c17
--- /dev/null
+++ b/dev-libs/gjs/Manifest
@@ -0,0 +1,3 @@
+DIST gjs-1.40.1.tar.xz 448204 SHA256 2f0d80ec96c6284785143abe51377d8a284977ea6c3cf0cef1020d92eae41793 SHA512 c3da112bed3bc97d93913df6284e7616a5893abc6db0fd0bef79c8d0594c9ae85ada61f7c262839d20905dc7ca31a8ac3d5319863aaaff1c69c0d834629d78eb WHIRLPOOL 54da01eeb63d7955150c674394911ff38ccf216c262e89a162455bd21f69fe64a36bca50bffc288c2eb2e90c543d2e41128169f686f7f06523d9fb786166b2dd
+DIST gjs-1.42.0.tar.xz 449264 SHA256 0c9afb7d5be6ead5b68059596f08eb7c3902b1676ee9c8846aa8df09647dba13 SHA512 8b2b118b832710ccb790b771416c1280b9ed07ed529afb2ae76fd50fa459e1f847ab6239899d5aea3c4136d32c36ac4c639afcc7374d8a98768e8f79b1338105 WHIRLPOOL b19fe1d94a96cf624433c972c7ce42057ee4ebc5c8012bf1237c553f268ea7d6f51de7fd4dab3f3f6a33b9f6c8231da9d83f47474fbe40c10b122db1c07138b0
+DIST gjs-1.43.3.tar.xz 455968 SHA256 82b54dd4590ea1622d19b2e27978bcb9c2c5b46922e1e1780ea79b6a28aa1c4e SHA512 7a97c80233203ef31ee5386558388f674f511e46884061f2cb058389cff8c1a11f629eb5f06de33b2086d8c69d9a5b39722f56d7de60b77e1a302041a0056ac9 WHIRLPOOL c3b71c5fcf10a5fce6418416b42a154d49036dce8436ad752430a3457833e247da70603b5e15c236e5709364cb7fc61aaf11dd3ce27f536081341c80e771c768
diff --git a/dev-libs/gjs/files/gjs-1.40.1-ownership-transfer.patch b/dev-libs/gjs/files/gjs-1.40.1-ownership-transfer.patch
new file mode 100644
index 000000000000..2a05e0e9465a
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.40.1-ownership-transfer.patch
@@ -0,0 +1,72 @@
+From a432e83f967f3d15ef14cfa8040f868af13d1e74 Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Tue, 6 May 2014 19:03:15 +0200
+Subject: function: respect ownership transfer of instance parameters
+
+When calling a method that is (transfer full) on the instance
+parameter we need to make an extra ref/copy.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=729545
+
+diff --git a/gi/function.cpp b/gi/function.cpp
+index 859ea44..792778c 100644
+--- a/gi/function.cpp
++++ b/gi/function.cpp
+@@ -543,6 +543,7 @@ gjs_fill_method_instance (JSContext *context,
+ GIBaseInfo *container = g_base_info_get_container((GIBaseInfo *) function->info);
+ GIInfoType type = g_base_info_get_type(container);
+ GType gtype = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *)container);
++ GITransfer transfer = g_callable_info_get_instance_ownership_transfer (function->info);
+
+ switch (type) {
+ case GI_INFO_TYPE_STRUCT:
+@@ -553,6 +554,8 @@ gjs_fill_method_instance (JSContext *context,
+ return JS_FALSE;
+
+ out_arg->v_pointer = gjs_gerror_from_error(context, obj);
++ if (transfer == GI_TRANSFER_EVERYTHING)
++ out_arg->v_pointer = g_error_copy ((GError*) out_arg->v_pointer);
+ } else {
+ if (!gjs_typecheck_boxed(context, obj,
+ container, gtype,
+@@ -560,6 +563,14 @@ gjs_fill_method_instance (JSContext *context,
+ return JS_FALSE;
+
+ out_arg->v_pointer = gjs_c_struct_from_boxed(context, obj);
++ if (transfer == GI_TRANSFER_EVERYTHING) {
++ if (gtype != G_TYPE_NONE)
++ out_arg->v_pointer = g_boxed_copy (gtype, out_arg->v_pointer);
++ else {
++ gjs_throw (context, "Cannot transfer ownership of instance argument for non boxed structure");
++ return JS_FALSE;
++ }
++ }
+ }
+ break;
+
+@@ -569,6 +580,8 @@ gjs_fill_method_instance (JSContext *context,
+ return JS_FALSE;
+
+ out_arg->v_pointer = gjs_c_union_from_union(context, obj);
++ if (transfer == GI_TRANSFER_EVERYTHING)
++ out_arg->v_pointer = g_boxed_copy (gtype, out_arg->v_pointer);
+ break;
+
+ case GI_INFO_TYPE_OBJECT:
+@@ -577,10 +590,14 @@ gjs_fill_method_instance (JSContext *context,
+ if (!gjs_typecheck_object(context, obj, gtype, JS_TRUE))
+ return JS_FALSE;
+ out_arg->v_pointer = gjs_g_object_from_object(context, obj);
++ if (transfer == GI_TRANSFER_EVERYTHING)
++ g_object_ref (out_arg->v_pointer);
+ } else if (gjs_typecheck_is_fundamental(context, obj, JS_FALSE)) {
+ if (!gjs_typecheck_fundamental(context, obj, gtype, JS_TRUE))
+ return JS_FALSE;
+ out_arg->v_pointer = gjs_g_fundamental_from_object(context, obj);
++ if (transfer == GI_TRANSFER_EVERYTHING)
++ gjs_fundamental_ref (context, out_arg->v_pointer);
+ } else {
+ gjs_throw_custom(context, "TypeError",
+ "%s.%s is not an object instance neither a fundamental instance of a supported type",
+--
+cgit v0.10.1
diff --git a/dev-libs/gjs/files/gjs-1.40.1-ratelimit-rss.patch b/dev-libs/gjs/files/gjs-1.40.1-ratelimit-rss.patch
new file mode 100644
index 000000000000..f4a95b8b371d
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.40.1-ratelimit-rss.patch
@@ -0,0 +1,45 @@
+From 791b1a33424897549f487eb75a80f13c4f94437a Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Fri, 11 Apr 2014 18:38:57 +0200
+Subject: Ratelimit RSS-triggered GCs
+
+When loading a lot of data in memory (for example in the shell
+opening the overview, which loads all the desktop files and icons)
+the RSS can increase a lot, so we would trigger GCs continously
+without any hope of freeing memory, so ratelimit full GCs to at
+most one every 5 frames.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=728048
+
+--- a/gjs/jsapi-util.cpp
++++ b/gjs/jsapi-util.cpp
+@@ -1176,6 +1176,7 @@
+ }
+
+ static gulong linux_rss_trigger;
++static gint64 last_gc_time;
+ #endif
+
+ /**
+@@ -1193,6 +1194,13 @@
+ /* We initiate a GC if VM or RSS has grown by this much */
+ gulong vmsize;
+ gulong rss_size;
++ gint64 now;
++
++ /* We rate limit GCs to at most one per 5 frames.
++ One frame is 16666 microseconds (1000000/60)*/
++ now = g_get_monotonic_time();
++ if (now - last_gc_time < 5 * 16666)
++ return;
+
+ _linux_get_self_process_size (&vmsize, &rss_size);
+
+@@ -1209,6 +1217,7 @@
+ if (rss_size > linux_rss_trigger) {
+ linux_rss_trigger = (gulong) MIN(G_MAXULONG, rss_size * 1.25);
+ JS_GC(JS_GetRuntime(context));
++ last_gc_time = now;
+ } else if (rss_size < (0.75 * linux_rss_trigger)) {
+ /* If we've shrunk by 75%, lower the trigger */
+ linux_rss_trigger = (rss_size * 1.25);
diff --git a/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-1.patch b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-1.patch
new file mode 100644
index 000000000000..2ec481bc8ecb
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-1.patch
@@ -0,0 +1,48 @@
+From 554c220e78172213e9637f9a901009b4bc964e3a Mon Sep 17 00:00:00 2001
+From: "Jasper St. Pierre" <jstpierre@mecheye.net>
+Date: Wed, 15 Jan 2014 17:00:22 -0500
+Subject: [PATCH] gjs-tests: Remove dumpstack test
+
+OK, I lied. This is the most useless test ever.
+---
+ test/gjs-tests.cpp | 17 -----------------
+ 1 file changed, 17 deletions(-)
+
+diff --git a/test/gjs-tests.cpp b/test/gjs-tests.cpp
+index b79b616..6cade7b 100644
+--- a/test/gjs-tests.cpp
++++ b/test/gjs-tests.cpp
+@@ -163,22 +163,6 @@ gjstest_test_func_gjs_jsapi_util_string_js_string_utf8(void)
+ }
+
+ static void
+-gjstest_test_func_gjs_stack_dump(void)
+-{
+- GjsContext *context;
+-
+- /* TODO this test could be better - maybe expose dumpstack as a JS API
+- * so that we have a JS stack to dump? At least here we're getting some
+- * coverage.
+- */
+- context = gjs_context_new();
+-
+- gjs_dumpstack();
+- g_object_unref(context);
+- gjs_dumpstack();
+-}
+-
+-static void
+ gjstest_test_func_gjs_jsapi_util_error_throw(void)
+ {
+ GjsUnitTestFixture fixture;
+@@ -348,7 +332,6 @@ main(int argc,
+ g_test_add_func("/gjs/jsutil/strip_shebang/no_shebang", gjstest_test_strip_shebang_no_advance_for_no_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/have_shebang", gjstest_test_strip_shebang_advance_for_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/only_shebang", gjstest_test_strip_shebang_return_null_for_just_shebang);
+- g_test_add_func("/gjs/stack/dump", gjstest_test_func_gjs_stack_dump);
+ g_test_add_func("/util/glib/strv/concat/null", gjstest_test_func_util_glib_strv_concat_null);
+ g_test_add_func("/util/glib/strv/concat/pointers", gjstest_test_func_util_glib_strv_concat_pointers);
+
+--
+2.1.2
+
diff --git a/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-2.patch b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-2.patch
new file mode 100644
index 000000000000..2490a63fea90
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-2.patch
@@ -0,0 +1,40 @@
+From 4ea9fda3f323355d10e946d19d817fe8c4e6b533 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 12 Oct 2014 21:57:11 +0200
+Subject: [PATCH 1/2] Comment broken unittests
+
+---
+ test/gjs-tests.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/test/gjs-tests.cpp b/test/gjs-tests.cpp
+index 6cade7b..4d6c61e 100644
+--- a/test/gjs-tests.cpp
++++ b/test/gjs-tests.cpp
+@@ -324,18 +324,18 @@ main(int argc,
+
+ g_test_init(&argc, &argv, NULL);
+
+- g_test_add_func("/gjs/context/construct/destroy", gjstest_test_func_gjs_context_construct_destroy);
++ /* g_test_add_func("/gjs/context/construct/destroy", gjstest_test_func_gjs_context_construct_destroy); */
+ g_test_add_func("/gjs/context/construct/eval", gjstest_test_func_gjs_context_construct_eval);
+- g_test_add_func("/gjs/jsapi/util/array", gjstest_test_func_gjs_jsapi_util_array);
+- g_test_add_func("/gjs/jsapi/util/error/throw", gjstest_test_func_gjs_jsapi_util_error_throw);
+- g_test_add_func("/gjs/jsapi/util/string/js/string/utf8", gjstest_test_func_gjs_jsapi_util_string_js_string_utf8);
++ /* g_test_add_func("/gjs/jsapi/util/array", gjstest_test_func_gjs_jsapi_util_array); */
++ /* g_test_add_func("/gjs/jsapi/util/error/throw", gjstest_test_func_gjs_jsapi_util_error_throw); */
++ /* g_test_add_func("/gjs/jsapi/util/string/js/string/utf8", gjstest_test_func_gjs_jsapi_util_string_js_string_utf8); */
+ g_test_add_func("/gjs/jsutil/strip_shebang/no_shebang", gjstest_test_strip_shebang_no_advance_for_no_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/have_shebang", gjstest_test_strip_shebang_advance_for_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/only_shebang", gjstest_test_strip_shebang_return_null_for_just_shebang);
+ g_test_add_func("/util/glib/strv/concat/null", gjstest_test_func_util_glib_strv_concat_null);
+ g_test_add_func("/util/glib/strv/concat/pointers", gjstest_test_func_util_glib_strv_concat_pointers);
+
+- gjs_test_add_tests_for_coverage ();
++ /* gjs_test_add_tests_for_coverage (); */
+
+ g_test_run();
+
+--
+2.1.2
+
diff --git a/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-3.patch b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-3.patch
new file mode 100644
index 000000000000..7b2898b75cf5
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.42.0-disable-unittest-3.patch
@@ -0,0 +1,35 @@
+From da18a2676477138693e893d3245316f987d74497 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 12 Oct 2014 21:57:45 +0200
+Subject: [PATCH 2/2] Comment broken JS unittest
+
+---
+ installed-tests/js/testLocale.js | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/installed-tests/js/testLocale.js b/installed-tests/js/testLocale.js
+index b086a66..0c5abb1 100644
+--- a/installed-tests/js/testLocale.js
++++ b/installed-tests/js/testLocale.js
+@@ -1,14 +1,14 @@
+ // tests for JS_SetLocaleCallbacks().
+ const JSUnit = imports.jsUnit;
+
+-function testToLocaleDateString() {
+- let date = new Date();
++//function testToLocaleDateString() {
++ //let date = new Date();
+ // %A is the weekday name, this tests locale_to_unicode
+ // we're basically just testing for a non-crash, since
+ // we'd have to run in a specific locale to have any
+ // idea about the result.
+- date.toLocaleDateString("%A");
+-}
++ //date.toLocaleDateString("%A");
++//}
+
+ function testToLocaleLowerCase() {
+ JSUnit.assertEquals("aaa", "AAA".toLocaleLowerCase());
+--
+2.1.2
+
diff --git a/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-1.patch b/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-1.patch
new file mode 100644
index 000000000000..c6d740ad5537
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-1.patch
@@ -0,0 +1,40 @@
+From 115c97bb07f71ac91e20b84f9da6389434d31999 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 12 Oct 2014 21:57:11 +0200
+Subject: [PATCH 1/2] Comment broken unittests
+
+---
+ test/gjs-tests.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/test/gjs-tests.cpp b/test/gjs-tests.cpp
+index 6cade7b..4d6c61e 100644
+--- a/test/gjs-tests.cpp
++++ b/test/gjs-tests.cpp
+@@ -324,18 +324,18 @@ main(int argc,
+
+ g_test_init(&argc, &argv, NULL);
+
+- g_test_add_func("/gjs/context/construct/destroy", gjstest_test_func_gjs_context_construct_destroy);
++ /* g_test_add_func("/gjs/context/construct/destroy", gjstest_test_func_gjs_context_construct_destroy); */
+ g_test_add_func("/gjs/context/construct/eval", gjstest_test_func_gjs_context_construct_eval);
+- g_test_add_func("/gjs/jsapi/util/array", gjstest_test_func_gjs_jsapi_util_array);
+- g_test_add_func("/gjs/jsapi/util/error/throw", gjstest_test_func_gjs_jsapi_util_error_throw);
+- g_test_add_func("/gjs/jsapi/util/string/js/string/utf8", gjstest_test_func_gjs_jsapi_util_string_js_string_utf8);
++ /* g_test_add_func("/gjs/jsapi/util/array", gjstest_test_func_gjs_jsapi_util_array); */
++ /* g_test_add_func("/gjs/jsapi/util/error/throw", gjstest_test_func_gjs_jsapi_util_error_throw); */
++ /* g_test_add_func("/gjs/jsapi/util/string/js/string/utf8", gjstest_test_func_gjs_jsapi_util_string_js_string_utf8); */
+ g_test_add_func("/gjs/jsutil/strip_shebang/no_shebang", gjstest_test_strip_shebang_no_advance_for_no_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/have_shebang", gjstest_test_strip_shebang_advance_for_shebang);
+ g_test_add_func("/gjs/jsutil/strip_shebang/only_shebang", gjstest_test_strip_shebang_return_null_for_just_shebang);
+ g_test_add_func("/util/glib/strv/concat/null", gjstest_test_func_util_glib_strv_concat_null);
+ g_test_add_func("/util/glib/strv/concat/pointers", gjstest_test_func_util_glib_strv_concat_pointers);
+
+- gjs_test_add_tests_for_coverage ();
++ /* gjs_test_add_tests_for_coverage (); */
+
+ g_test_run();
+
+--
+2.3.6
+
diff --git a/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-2.patch b/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-2.patch
new file mode 100644
index 000000000000..fe21f92dfc2b
--- /dev/null
+++ b/dev-libs/gjs/files/gjs-1.43.3-disable-unittest-2.patch
@@ -0,0 +1,35 @@
+From c9d63c7531a29418c64dc44556519d7bd1664ce4 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 12 Oct 2014 21:57:45 +0200
+Subject: [PATCH 2/2] Comment broken JS unittest
+
+---
+ installed-tests/js/testLocale.js | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/installed-tests/js/testLocale.js b/installed-tests/js/testLocale.js
+index b086a66..0c5abb1 100644
+--- a/installed-tests/js/testLocale.js
++++ b/installed-tests/js/testLocale.js
+@@ -1,14 +1,14 @@
+ // tests for JS_SetLocaleCallbacks().
+ const JSUnit = imports.jsUnit;
+
+-function testToLocaleDateString() {
+- let date = new Date();
++//function testToLocaleDateString() {
++ //let date = new Date();
+ // %A is the weekday name, this tests locale_to_unicode
+ // we're basically just testing for a non-crash, since
+ // we'd have to run in a specific locale to have any
+ // idea about the result.
+- date.toLocaleDateString("%A");
+-}
++ //date.toLocaleDateString("%A");
++//}
+
+ function testToLocaleLowerCase() {
+ JSUnit.assertEquals("aaa", "AAA".toLocaleLowerCase());
+--
+2.3.6
+
diff --git a/dev-libs/gjs/gjs-1.40.1-r1.ebuild b/dev-libs/gjs/gjs-1.40.1-r1.ebuild
new file mode 100644
index 000000000000..42226a629b29
--- /dev/null
+++ b/dev-libs/gjs/gjs-1.40.1-r1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+
+inherit eutils gnome2 pax-utils virtualx
+
+DESCRIPTION="Javascript bindings for GNOME"
+HOMEPAGE="https://wiki.gnome.org/Projects/Gjs"
+
+LICENSE="MIT || ( MPL-1.1 LGPL-2+ GPL-2+ )"
+SLOT="0"
+IUSE="+cairo examples gtk test"
+KEYWORDS="alpha amd64 arm ia64 ppc ppc64 sparc x86"
+
+RDEPEND="
+ >=dev-libs/glib-2.36:2
+ >=dev-libs/gobject-introspection-1.40.0-r2
+
+ sys-libs/readline:0
+ dev-lang/spidermonkey:24
+ virtual/libffi
+ cairo? ( x11-libs/cairo )
+ gtk? ( x11-libs/gtk+:3 )
+"
+DEPEND="${RDEPEND}
+ gnome-base/gnome-common
+ sys-devel/gettext
+ virtual/pkgconfig
+ test? ( sys-apps/dbus )
+"
+
+# Large amount of tests are broken even in master.
+RESTRICT="test"
+
+src_prepare() {
+ # Prevent gjs crashes, bug #523608 (from 'master')
+ epatch "${FILESDIR}/${PN}-1.40.1-ownership-transfer.patch"
+
+ # Ratelimit RSS-triggered GCs (from 'master')
+ epatch "${FILESDIR}/${PN}-1.40.1-ratelimit-rss.patch"
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # FIXME: add systemtap/dtrace support, like in glib:2
+ # FIXME: --enable-systemtap installs files in ${D}/${D} for some reason
+ # XXX: Do NOT enable coverage, completely useless for portage installs
+ gnome2_src_configure \
+ --disable-systemtap \
+ --disable-dtrace \
+ --disable-coverage \
+ $(use_with cairo cairo) \
+ $(use_with gtk)
+}
+
+src_test() {
+ Xemake check
+}
+
+src_install() {
+ # installation sometimes fails in parallel
+ gnome2_src_install -j1
+
+ if use examples; then
+ insinto /usr/share/doc/"${PF}"/examples
+ doins "${S}"/examples/*
+ fi
+
+ # Required for gjs-console to run correctly on PaX systems
+ pax-mark mr "${ED}/usr/bin/gjs-console"
+}
diff --git a/dev-libs/gjs/gjs-1.42.0.ebuild b/dev-libs/gjs/gjs-1.42.0.ebuild
new file mode 100644
index 000000000000..d6e5a0a703c6
--- /dev/null
+++ b/dev-libs/gjs/gjs-1.42.0.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+
+inherit eutils gnome2 pax-utils virtualx
+
+DESCRIPTION="Javascript bindings for GNOME"
+HOMEPAGE="https://wiki.gnome.org/Projects/Gjs"
+
+LICENSE="MIT || ( MPL-1.1 LGPL-2+ GPL-2+ )"
+SLOT="0"
+IUSE="+cairo examples gtk test"
+KEYWORDS="alpha amd64 arm ia64 ppc ppc64 sparc x86"
+
+RDEPEND="
+ >=dev-libs/glib-2.36:2
+ >=dev-libs/gobject-introspection-1.41.4
+
+ sys-libs/readline:0
+ dev-lang/spidermonkey:24
+ virtual/libffi
+ cairo? ( x11-libs/cairo[X] )
+ gtk? ( x11-libs/gtk+:3 )
+"
+DEPEND="${RDEPEND}
+ gnome-base/gnome-common
+ sys-devel/gettext
+ virtual/pkgconfig
+ test? ( sys-apps/dbus )
+"
+
+src_prepare() {
+ # Disable broken unittests
+ epatch "${FILESDIR}"/${PN}-1.42.0-disable-unittest-*.patch
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # FIXME: add systemtap/dtrace support, like in glib:2
+ # FIXME: --enable-systemtap installs files in ${D}/${D} for some reason
+ # XXX: Do NOT enable coverage, completely useless for portage installs
+ gnome2_src_configure \
+ --disable-systemtap \
+ --disable-dtrace \
+ --disable-coverage \
+ $(use_with cairo cairo) \
+ $(use_with gtk)
+}
+
+src_test() {
+ Xemake check
+}
+
+src_install() {
+ # installation sometimes fails in parallel
+ gnome2_src_install -j1
+
+ if use examples; then
+ insinto /usr/share/doc/"${PF}"/examples
+ doins "${S}"/examples/*
+ fi
+
+ # Required for gjs-console to run correctly on PaX systems
+ pax-mark mr "${ED}/usr/bin/gjs-console"
+}
diff --git a/dev-libs/gjs/gjs-1.43.3.ebuild b/dev-libs/gjs/gjs-1.43.3.ebuild
new file mode 100644
index 000000000000..3499b997d758
--- /dev/null
+++ b/dev-libs/gjs/gjs-1.43.3.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+GCONF_DEBUG="no"
+
+inherit eutils gnome2 pax-utils virtualx
+
+DESCRIPTION="Javascript bindings for GNOME"
+HOMEPAGE="https://wiki.gnome.org/Projects/Gjs"
+
+LICENSE="MIT || ( MPL-1.1 LGPL-2+ GPL-2+ )"
+SLOT="0"
+IUSE="+cairo examples gtk test"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-libs/glib-2.36:2
+ >=dev-libs/gobject-introspection-1.41.4
+
+ sys-libs/readline:0
+ dev-lang/spidermonkey:24
+ virtual/libffi
+ cairo? ( x11-libs/cairo[X] )
+ gtk? ( x11-libs/gtk+:3 )
+"
+DEPEND="${RDEPEND}
+ gnome-base/gnome-common
+ sys-devel/gettext
+ virtual/pkgconfig
+ test? ( sys-apps/dbus )
+"
+
+src_prepare() {
+ # Disable broken unittests
+ epatch "${FILESDIR}"/${PN}-1.43.3-disable-unittest-*.patch
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # FIXME: add systemtap/dtrace support, like in glib:2
+ # FIXME: --enable-systemtap installs files in ${D}/${D} for some reason
+ # XXX: Do NOT enable coverage, completely useless for portage installs
+ gnome2_src_configure \
+ --disable-systemtap \
+ --disable-dtrace \
+ --disable-coverage \
+ $(use_with cairo cairo) \
+ $(use_with gtk)
+}
+
+src_test() {
+ Xemake check
+}
+
+src_install() {
+ # installation sometimes fails in parallel
+ gnome2_src_install -j1
+
+ if use examples; then
+ insinto /usr/share/doc/"${PF}"/examples
+ doins "${S}"/examples/*
+ fi
+
+ # Required for gjs-console to run correctly on PaX systems
+ pax-mark mr "${ED}/usr/bin/gjs-console"
+}
diff --git a/dev-libs/gjs/metadata.xml b/dev-libs/gjs/metadata.xml
new file mode 100644
index 000000000000..6e0e2ecb48ca
--- /dev/null
+++ b/dev-libs/gjs/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>gnome</herd>
+</pkgmetadata>