in-place update to support dev-lang/spidermonkey-1.8.5 for bug 376993
authorIan Stakenvicius <axs@gentoo.org>
Thu, 17 Nov 2011 03:40:31 +0000 (03:40 +0000)
committerIan Stakenvicius <axs@gentoo.org>
Thu, 17 Nov 2011 03:40:31 +0000 (03:40 +0000)
Package-Manager: portage-2.1.10.11/cvs/Linux i686

net-misc/mediatomb/ChangeLog
net-misc/mediatomb/Manifest
net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch [new file with mode: 0644]
net-misc/mediatomb/mediatomb-0.12.1.ebuild

index a08ea7273d3955658ade532c3031ef7e2e79f654..587ae3474bf93a74ac2b84015c214a3d5245fd3b 100644 (file)
@@ -1,6 +1,10 @@
 # ChangeLog for net-misc/mediatomb
 # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/ChangeLog,v 1.22 2011/04/04 12:19:35 scarabeus Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/ChangeLog,v 1.23 2011/11/17 03:40:31 axs Exp $
+
+  17 Nov 2011; Ian Stakenvicius <axs@gentoo.org> mediatomb-0.12.1.ebuild,
+  +files/mediatomb-0.12.1-mozjs185.patch:
+  in-place update to support dev-lang/spidermonkey-1.8.5 for bug 376993
 
   04 Apr 2011; Tomáš Chvátal <scarabeus@gentoo.org> mediatomb-0.12.1.ebuild:
   Move to virtual/ffmpeg from media-video/ffmpeg.
index 4a9a90fbd76b827264db162c42f0f4f90bf7046a..6c10369748da32a4fff961b607e687ae996a2f28 100644 (file)
@@ -1,18 +1,19 @@
 -----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
+Hash: SHA256
 
 AUX mediatomb-0.12.0.confd 805 RMD160 80b99ac5eb0a3cfdbe658084b6ba8a48c2b97dea SHA1 c3908aa800c4d6f3078760b5c32fbdf745f28239 SHA256 21b1b9d31a6db76c5c1ccfbf00e5cd553eecfeb0e2bb161ccc024eab2243293c
 AUX mediatomb-0.12.0.config 6180 RMD160 ee51ad90cd9c4107376b80af19dfe076f06df8e7 SHA1 41376b8a161d8523846c5adb5375af5bc0c1a0d1 SHA256 cb43e92639e5e53908567c050c9a2fc0e5c349fd11a149414590c2c6a402b4d2
 AUX mediatomb-0.12.0.initd 541 RMD160 cb4ccfebbe98d38a9e4fdedc6f0fa9aa7ab18453 SHA1 e3c8ed51e118cc72a164b908fe4d629a1ebbf14b SHA256 8dfe99d619a3384b2fb9105051daae1fc6c88402364d4203b21344f766a6b696
 AUX mediatomb-0.12.1-gcc46.patch 297 RMD160 b0de22743402e27bffd8a868026f0003f9960b24 SHA1 db58b48202b3e2d2dee42b13f761994ed4e67796 SHA256 58379e733518bc5ef61fee9156d430ef283278eb3a69f6bdad4cad794df75146
+AUX mediatomb-0.12.1-mozjs185.patch 22839 RMD160 6e47aff3a3d97d7d8a5359161b549699368a6bb8 SHA1 95d47ffd95b217100387844cbbbd854d0587f8dd SHA256 3960961f1fbe46baff3956ea2fa94b4dc193c0d278b8646cda1f4cee26812f59
 DIST mediatomb-0.12.1.tar.gz 1240612 RMD160 ecb61ca2483f76421beef1036ac442b8f805fa96 SHA1 86e880584cc9c8aaf3926d56048510d1d06e76b4 SHA256 31163c34a7b9d1c9735181737cb31306f29f1f2a0335fb4f53ecccf8f62f11cd
-EBUILD mediatomb-0.12.1.ebuild 3602 RMD160 b4f1abcbb6ad47824e9c7921c77e55bf64499d26 SHA1 e88a30d3a719ec78d9f19743de821951539cacbc SHA256 1a182e20cad0ba68cdc71571fc3ff3b9e9054718ccf30eac8360ab0fc4307585
-MISC ChangeLog 4058 RMD160 86913f0c655f35290472f3b5bfee9220f2fb60db SHA1 e98a23135e0c04b2200a945862f7d3130ef7958c SHA256 da49615ef298535e3e350e944b8cefb31c72dbc1652fd07be396f3326abb62bd
+EBUILD mediatomb-0.12.1.ebuild 3746 RMD160 785538459cf95b30f104f061b939ef0a2d90ad19 SHA1 9f97a04a590aa56612c6c97ef5169da75e48f11c SHA256 dbee3a3afa4701861853ff12b35caca26681a8d9399c7902c722cffa239526e6
+MISC ChangeLog 4241 RMD160 2137dfe3d81fe8edcb81d2d53df4523670fc41fa SHA1 5eac9e9b36ea9d8d06521a7e6efe64032b42c35d SHA256 26e541b45192b2c47cbb338f5e025596d5cdc2ba9d7115220d98df0e44fe48a0
 MISC metadata.xml 917 RMD160 2c817f4ed63ff24ff4262df5897733098ab753f9 SHA1 1eb716452e1ead4a6fb2cf4931f76d2dc9df6cd9 SHA256 a8f81f44d0efc27bd22ebefe96864f84c94c1cadb1908ff1ed52fd3d91b99e23
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.17 (GNU/Linux)
 
-iEYEARECAAYFAk2ZteUACgkQHB6c3gNBRYerFQCgx+12F7SmLJvCfQydSjs3SKpN
-dB8AoLc13g+Fr+t85Zn5MypislAybkoO
-=vbY6
+iF4EAREIAAYFAk7EgiUACgkQAJxUfCtlWe3pHwD/enD2hjZwIbrR9C7bbvvo60UA
+cbAR5oaPwfrRpXcT0r0A/R6ltveLXy0vc5UlmQvEfwvUwrlRTFm4pldWiMzSUbCG
+=OS2o
 -----END PGP SIGNATURE-----
diff --git a/net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch b/net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch
new file mode 100644 (file)
index 0000000..eb67540
--- /dev/null
@@ -0,0 +1,605 @@
+--- mediatomb-0.12.1/configure.ac      2010-04-07 18:38:51.000000000 -0400
++++ mediatomb-0.12.1/configure.ac      2011-11-16 21:56:46.000000000 -0500
+@@ -1006,14 +1006,23 @@
+                             MOZLIB=smjs
+                         ],
+                         [
+-                            LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS"
+-                            AC_CHECK_LIB(mozjs, JS_NewObject,
++                            LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs185 $ADD_PTHREAD_CFLAGS"
++                            AC_CHECK_LIB(mozjs185, JS_NewObject,
+                                 [
+-                                    JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs"
+-                                    MOZLIB=mozjs
++                                    JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs185"
++                                    MOZLIB=mozjs185
+                                 ],
+                                 [
+-                                    AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS])
++                                  LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS"
++                                  AC_CHECK_LIB(mozjs, JS_NewObject,
++                                      [
++                                          JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs"
++                                          MOZLIB=mozjs
++                                      ],
++                                      [
++                                          AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS])
++                                      ]
++                                  )
+                                 ]
+                             )
+                         ]
+@@ -1036,39 +1045,58 @@
+                 ],
+                 [
+                     unset ac_cv_lib_smjs_JS_NewObject
+-                    AC_CHECK_LIB(mozjs, JS_NewObject,
++                    AC_CHECK_LIB(mozjs185, JS_NewObject,
+                         [
+-                            MOZLIB=mozjs
+-                            JS_LIBS="-lmozjs"
++                            MOZLIB=mozjs185
++                            JS_LIBS="-lmozjs185"
+                         ],
+                         [
+-                            LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS"
+-                            unset ac_cv_lib_js_JS_NewObject
+-                            AC_CHECK_LIB(js, JS_NewObject,
+-                                [
+-                                    JS_LIBS="-L$SEARCH_DIR_LIBS -ljs"
+-                                    MOZLIB=js
+-                                ],
+-                                [
+-                                    unset ac_cv_lib_smjs_JS_NewObject
+-                                    AC_CHECK_LIB(smjs, JS_NewObject,
+-                                        [
+-                                            JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs"
+-                                            MOZLIB=smjs
+-                                        ],
+-                                        [
+-                                            LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs"
+-                                            unset ac_cv_lib_mozjs_JS_NewObject
+-                                            AC_CHECK_LIB(mozjs, JS_NewObject,
+-                                                [
+-                                                    JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs"
+-                                                    MOZLIB=mozjs
+-                                                ],
+-                                                [
+-                                                    JS_OK=missing
+-                                                    AC_MSG_RESULT(libjs/libsmjs link failed, giving up)
+-                                                ]
+-                                            )
++                          unset ac_cv_lib_smjs_JS_NewObject
++                          AC_CHECK_LIB(mozjs, JS_NewObject,
++                              [
++                                  MOZLIB=mozjs
++                                  JS_LIBS="-lmozjs"
++                              ],
++                              [
++                                  LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS"
++                                  unset ac_cv_lib_js_JS_NewObject
++                                  AC_CHECK_LIB(js, JS_NewObject,
++                                      [
++                                          JS_LIBS="-L$SEARCH_DIR_LIBS -ljs"
++                                          MOZLIB=js
++                                      ],
++                                      [
++                                          unset ac_cv_lib_smjs_JS_NewObject
++                                          AC_CHECK_LIB(smjs, JS_NewObject,
++                                              [
++                                                  JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs"
++                                                  MOZLIB=smjs
++                                              ],
++                                              [
++                                                  LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs185"
++                                                  unset ac_cv_lib_mozjs_JS_NewObject
++                                                  AC_CHECK_LIB(mozjs185, JS_NewObject,
++                                                      [
++                                                          JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs185"
++                                                          MOZLIB=mozjs185
++                                                      ],
++                                                      [
++                                                          LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs"
++                                                          unset ac_cv_lib_mozjs_JS_NewObject
++                                                          AC_CHECK_LIB(mozjs, JS_NewObject,
++                                                              [
++                                                                  JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs"
++                                                                  MOZLIB=mozjs
++                                                              ],
++                                                              [
++                                                                  JS_OK=missing
++                                                                  AC_MSG_RESULT(libjs/libsmjs link failed, giving up)
++                                                              ]
++                                                          )
++                                                      ]
++                                                  )
++                                              ]
++                                          )
+                                         ]
+                                     )
+                                 ]
+diff -ur mediatomb-0.12.1.orig/build/Makefile.in mediatomb-0.12.1/build/Makefile.in
+--- mediatomb-0.12.1.orig/build/Makefile.in    2010-04-07 18:40:15.000000000 -0400
++++ mediatomb-0.12.1/build/Makefile.in 2011-11-16 22:28:06.000000000 -0500
+@@ -257,7 +257,7 @@
+ CXX = @CXX@
+ CXXCPP = @CXXCPP@
+ CXXDEPMODE = @CXXDEPMODE@
+-CXXFLAGS = @CXXFLAGS@
++CXXFLAGS = -fpermissive @CXXFLAGS@
+ CYGPATH_W = @CYGPATH_W@
+ DB_AUTOCREATE_OPTION_ENABLED = @DB_AUTOCREATE_OPTION_ENABLED@
+ DB_AUTOCREATE_OPTION_REQUESTED = @DB_AUTOCREATE_OPTION_REQUESTED@
+diff -ur mediatomb-0.12.1.orig/src/scripting/import_script.cc mediatomb-0.12.1/src/scripting/import_script.cc
+--- mediatomb-0.12.1.orig/src/scripting/import_script.cc       2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/import_script.cc    2011-11-16 22:28:06.000000000 -0500
+@@ -53,8 +53,8 @@
+     try 
+     {
+         load(scriptPath);
+-        root = JS_NewScriptObject(cx, script);
+-        JS_AddNamedRoot(cx, &root, "ImportScript");
++        root = JS_NewObject(cx, NULL, script, NULL);
++        JS_AddNamedObjectRoot(cx, &root, "ImportScript");
+     }
+     catch (Exception ex)
+     {
+@@ -117,7 +117,7 @@
+ #endif
+     
+     if (root)
+-        JS_RemoveRoot(cx, &root);
++        JS_RemoveObjectRoot(cx, &root);
+ 
+ #ifdef JS_THREADSAFE
+     JS_EndRequest(cx);
+diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.cc mediatomb-0.12.1/src/scripting/js_functions.cc
+--- mediatomb-0.12.1.orig/src/scripting/js_functions.cc        2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/js_functions.cc     2011-11-16 22:28:21.000000000 -0500
+@@ -49,30 +49,45 @@
+ extern "C" {
+ 
+ JSBool 
+-js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++js_print(JSContext *cx, uintN argc, jsval *argv)
+ {
+-    uintN i;
++    uintN i, j;
+     JSString *str;
+ 
+     for (i = 0; i < argc; i++) 
+     {
+-        str = JS_ValueToString(cx, argv[i]);
++      String fmtStr;
++      for (j = 0; j < argc; j++)
++      {
++              if (j == i)
++                      fmtStr = fmtStr + "S";
++              else
++                      fmtStr = fmtStr + "*";
++      }
++      if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), fmtStr.c_str(), &str))
++              {
++                      log_debug("Could not parse input arguments\n");
++                      return JS_TRUE;
++              }
++
+         if (!str)
+             return JS_TRUE;
+-        argv[i] = STRING_TO_JSVAL(str);
+-        log_js("%s\n", JS_GetStringBytes(str));
++
++        char * log_str = JS_EncodeString(cx, str);
++        log_js("%s\n", log_str);
++        JS_free(cx, log_str);
+     }
+     return JS_TRUE;
+ }
+ 
+ JSBool
+-js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++js_copyObject(JSContext *cx, uintN argc, jsval *argv)
+ {
+     jsval arg;
+     JSObject *js_cds_obj;
+     JSObject *js_cds_clone_obj;
+ 
+-    Script *self = (Script *)JS_GetPrivate(cx, obj);
++    Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
+ 
+     try
+     {
+@@ -91,7 +106,7 @@
+ 
+         self->cdsObject2jsObject(cds_obj, js_cds_clone_obj);
+ 
+-        *rval = OBJECT_TO_JSVAL(js_cds_clone_obj);
++        JS_SET_RVAL(cx, argv, OBJECT_TO_JSVAL(js_cds_clone_obj));
+ 
+         return JS_TRUE;
+ 
+@@ -110,28 +125,58 @@
+ }
+ 
+ JSBool
+-js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++js_addCdsObject(JSContext *cx, uintN argc, jsval *argv)
+ {
+     try
+     {
+-        jsval arg;
+-        JSString *str;
+-        String path;
+-        String containerclass;
++      // Inputs from native code
++        JSObject *js_cds_obj = NULL;
++        JSString *str =  NULL;
++        JSString *cont = NULL;
+ 
+-        JSObject *js_cds_obj;
++        String path = nil;
++        String containerclass = nil;
++
++        JSObject *obj = JS_THIS_OBJECT(cx, argv);
+         JSObject *js_orig_obj = NULL;
+         Ref<CdsObject> orig_object;
+ 
+         Ref<StringConverter> p2i;
+         Ref<StringConverter> i2i;
++        switch (argc)
++        {
++        case 0:
++              log_debug("No input arguments given\n");
++              return JS_FALSE;
++        case 1:
++                      if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj))
++                      {
++                              log_debug("Could not parse input arguments\n");
++                              return JS_TRUE;
++                      }
++                      break;
++        case 2:
++              if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str))
++                      {
++                              log_debug("Could not parse input arguments\n");
++                              return JS_TRUE;
++                      }
++                      break;
++        default:
++              if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont))
++                      {
++                              log_debug("Could not parse input arguments\n");
++                              return JS_TRUE;
++                      }
++                      break;
++        }
+ 
+         Script *self = (Script *)JS_GetPrivate(cx, obj);
+ 
+         if (self == NULL)
+         {
+             log_debug("Could not retrieve class instance from global object\n");
+-            return JS_FALSE;
++            return JS_TRUE;
+         }
+ 
+         if (self->whoami() == S_PLAYLIST)
+@@ -142,26 +187,17 @@
+         {
+             i2i = StringConverter::i2i();
+         }
+- 
+-        arg = argv[0];
+-        if (!JSVAL_IS_OBJECT(arg))
+-            return JS_TRUE;
+-        if (!JS_ValueToObject(cx, arg, &js_cds_obj))
+-            return JS_TRUE;
+ 
+-        // root it
+-        argv[0] = OBJECT_TO_JSVAL(js_cds_obj);
+ 
+-        str = JS_ValueToString(cx, argv[1]);
+         if (!str)
+             path = _("/");
+         else
+-            path = JS_GetStringBytes(str);
++            path = JS_EncodeString(cx, str);
++
+ 
+-        JSString *cont = JS_ValueToString(cx, argv[2]);
+         if (cont)
+         {
+-            containerclass = JS_GetStringBytes(cont);
++            containerclass = JS_EncodeString(cx, cont);
+             if (!string_ok(containerclass) || containerclass == "undefined")
+                 containerclass = nil;
+         }
+@@ -177,9 +213,6 @@
+             return JS_TRUE;
+         }
+ 
+-        // root it
+-        argv[1] = OBJECT_TO_JSVAL(js_orig_obj);
+-
+         orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject());
+         if (orig_object == nil)
+             return JS_TRUE;
+@@ -285,8 +318,7 @@
+         JSString *str2 = JS_NewStringCopyN(cx, tmp.c_str(), tmp.length());
+         if (!str2)
+             return JS_TRUE;
+-        *rval = STRING_TO_JSVAL(str2);
+-
++        JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2)); 
+         return JS_TRUE;
+     }
+     catch (ServerShutdownException se)
+@@ -302,7 +334,7 @@
+     return JS_TRUE;
+ }
+ 
+-static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, charset_convert_t chr)
++static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, charset_convert_t chr)
+ {
+     try
+     {
+@@ -321,7 +353,7 @@
+         {
+             str = JS_ValueToString(cx, argv[0]);
+             if (str)
+-                result = JS_GetStringBytes(str);
++                result = JS_EncodeString(cx, str);
+         }
+ 
+         if (result != nil)
+@@ -330,7 +362,7 @@
+             JSString *str2 = JS_NewStringCopyN(cx, result.c_str(), result.length());
+             if (!str2)
+                 return JS_TRUE;
+-            *rval = STRING_TO_JSVAL(str2);
++            JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2));
+         }
+     }
+     catch (ServerShutdownException se)
+@@ -347,24 +379,23 @@
+ }
+ 
+ 
+-JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv)
+ {
+-     return convert_charset_generic(cx, obj, argc, argv, rval, F2I);
++     return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, F2I);
+ }
+ 
+-JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv)
+ {
+-     return convert_charset_generic(cx, obj, argc, argv, rval, M2I);
+-}
++     return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, M2I); }
+ 
+-JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv)
+ {
+-     return convert_charset_generic(cx, obj, argc, argv, rval, P2I);
++     return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, P2I);
+ }
+ 
+-JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv)
+ {
+-     return convert_charset_generic(cx, obj, argc, argv, rval, J2I);
++     return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, J2I);
+ }
+ 
+ } // extern "C"
+diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.h mediatomb-0.12.1/src/scripting/js_functions.h
+--- mediatomb-0.12.1.orig/src/scripting/js_functions.h 2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/js_functions.h      2011-11-16 22:28:06.000000000 -0500
+@@ -40,18 +40,18 @@
+ extern "C" {
+ 
+ /// \brief Log output.
+-JSBool js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
++JSBool js_print(JSContext *cx, uintN argc, jsval *argv);
+ 
+ /// \brief Adds an object to the database.
+-JSBool js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
++JSBool js_addCdsObject(JSContext *cx, uintN argc, jsval *argv);
+ 
+ /// \brief Makes a copy of an CDS object.
+-JSBool js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
++JSBool js_copyObject(JSContext *cx, uintN argc, jsval *argv);
+ 
+-JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
+-JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
+-JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
+-JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
++JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv);
++JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv);
++JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv);
++JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv);
+ 
+ } // extern "C"
+ 
+diff -ur mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc mediatomb-0.12.1/src/scripting/playlist_parser_script.cc
+--- mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc      2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/playlist_parser_script.cc   2011-11-16 22:28:06.000000000 -0500
+@@ -46,9 +46,9 @@
+ extern "C" {
+ 
+ static JSBool
+-js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
++js_readln(JSContext *cx, uintN argc, jsval *argv)
+ {
+-    PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, obj);
++    PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
+ 
+     String line;
+     
+@@ -69,7 +69,7 @@
+ 
+     JSString *jsline = JS_NewStringCopyZ(cx, line.c_str());
+ 
+-    *rval = STRING_TO_JSVAL(jsline);
++    JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(jsline));
+   
+     return JS_TRUE;
+ }
+@@ -93,8 +93,8 @@
+ 
+         String scriptPath = ConfigManager::getInstance()->getOption(CFG_IMPORT_SCRIPTING_PLAYLIST_SCRIPT); 
+         load(scriptPath);
+-        root = JS_NewScriptObject(cx, script);
+-        JS_AddNamedRoot(cx, &root, "PlaylistScript");
++        root = JS_NewObject(cx, NULL, script, NULL);
++        JS_AddNamedObjectRoot(cx, &root, "PlaylistScript");
+     }
+     catch (Exception ex)
+     {
+@@ -245,7 +245,7 @@
+ #endif
+ 
+     if (root)
+-        JS_RemoveRoot(cx, &root);
++        JS_RemoveObjectRoot(cx, &root);
+ 
+ #ifdef JS_THREADSAFE
+     JS_EndRequest(cx);
+diff -ur mediatomb-0.12.1.orig/src/scripting/script.cc mediatomb-0.12.1/src/scripting/script.cc
+--- mediatomb-0.12.1.orig/src/scripting/script.cc      2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/script.cc   2011-11-16 22:28:06.000000000 -0500
+@@ -87,7 +87,7 @@
+     str = JS_ValueToString(cx, val);
+     if (! str)
+         return nil;
+-    return JS_GetStringBytes(str);
++    return JS_EncodeString(cx, str);
+ }
+ 
+ int Script::getBoolProperty(JSObject *obj, String name)
+@@ -427,14 +427,14 @@
+         try
+         {
+             common_script = _load(common_scr_path);
+-            common_root = JS_NewScriptObject(cx, common_script);
+-            JS_AddNamedRoot(cx, &common_root, "common-script");
++            common_root = JS_NewObject(cx, NULL, common_script, NULL);
++            JS_AddNamedObjectRoot(cx, &common_root, "common-script");
+             _execute(common_script);
+         }
+         catch (Exception e)
+         {
+             if (common_root)
+-                JS_RemoveRoot(cx, &common_root);
++                JS_RemoveObjectRoot(cx, &common_root);
+ 
+             log_js("Unable to load %s: %s\n", common_scr_path.c_str(), 
+                     e.getMessage().c_str());
+@@ -460,7 +460,7 @@
+     JS_BeginRequest(cx);
+ #endif
+     if (common_root)
+-        JS_RemoveRoot(cx, &common_root);
++        JS_RemoveObjectRoot(cx, &common_root);
+ 
+ /*
+  * scripts are unrooted and will be cleaned up by GC
+@@ -504,11 +504,11 @@
+     static JSClass global_class =
+     {
+         "global",                                   /* name */
+-        JSCLASS_HAS_PRIVATE,                        /* flags */
++        JSCLASS_HAS_PRIVATE | JSCLASS_GLOBAL_FLAGS,/* flags */
+         JS_PropertyStub,                            /* add property */
+         JS_PropertyStub,                            /* del property */
+         JS_PropertyStub,                            /* get property */
+-        JS_PropertyStub,                            /* set property */
++        JS_StrictPropertyStub,                      /* set property */
+         JS_EnumerateStandardClasses,                /* enumerate */
+         JS_ResolveStub,                             /* resolve */
+         JS_ConvertStub,                             /* convert */
+@@ -517,7 +517,7 @@
+     };
+ 
+     /* create the global object here */
+-    glob = JS_NewObject(cx, &global_class, NULL, NULL);
++    glob = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL);
+     if (! glob)
+         throw _Exception(_("Scripting: could not initialize glboal class"));
+ 
+@@ -539,12 +539,12 @@
+         throw _Exception(_("Scripting: JS_DefineFunctions failed"));
+ }
+ 
+-JSScript *Script::_load(zmm::String scriptPath)
++JSObject *Script::_load(zmm::String scriptPath)
+ {
+     if (glob == NULL)
+         initGlobalObject();
+ 
+-    JSScript *scr;
++    JSObject *scr;
+ 
+     String scriptText = read_text_file(scriptPath);
+ 
+@@ -571,14 +571,11 @@
+ 
+ void Script::load(zmm::String scriptPath)
+ {
+-    if (script)
+-        JS_DestroyScript(cx, script);
+-
+     script = _load((scriptPath));
+ }
+ 
+ 
+-void Script::_execute(JSScript *scr)
++void Script::_execute(JSObject *scr)
+ {
+     jsval ret_val;
+ 
+@@ -662,7 +659,7 @@
+     JSObject *js_meta = getObjectProperty(js, _("meta"));
+     if (js_meta)
+     {
+-        JS_AddNamedRoot(cx, &js_meta, "meta");
++        JS_AddNamedObjectRoot(cx, &js_meta, "meta");
+         /// \todo: only metadata enumerated in MT_KEYS is taken
+         for (int i = 0; i < M_MAX; i++)
+         {
+@@ -687,7 +684,7 @@
+                 }
+             }
+         }
+-        JS_RemoveRoot(cx, &js_meta);
++        JS_RemoveObjectRoot(cx, &js_meta);
+     }
+     
+     // stuff that has not been exported to js
+diff -ur mediatomb-0.12.1.orig/src/scripting/script.h mediatomb-0.12.1/src/scripting/script.h
+--- mediatomb-0.12.1.orig/src/scripting/script.h       2010-03-25 10:58:05.000000000 -0400
++++ mediatomb-0.12.1/src/scripting/script.h    2011-11-16 22:28:06.000000000 -0500
+@@ -66,8 +66,8 @@
+     JSRuntime *rt;
+     JSContext *cx;
+     JSObject  *glob;
+-    JSScript *script;
+-    JSScript *common_script;
++    JSObject  *script;
++    JSObject  *common_script;
+     
+ public:
+     Script(zmm::Ref<Runtime> runtime);
+@@ -115,8 +115,8 @@
+     JSObject *common_root;
+ 
+     void initGlobalObject();
+-    JSScript *_load(zmm::String scriptPath);
+-    void _execute(JSScript *scr);
++    JSObject *_load(zmm::String scriptPath);
++    void _execute(JSObject *scr);
+     zmm::Ref<StringConverter> _p2i;
+     zmm::Ref<StringConverter> _j2i;
+     zmm::Ref<StringConverter> _f2i;
index 3bbecfc571bf2f3a6c7da60f2de49d532a8f1dbf..6847e0ceb6cc786056ecb492d3c26a46cac61cf1 100644 (file)
@@ -1,9 +1,9 @@
 # Copyright 1999-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/mediatomb-0.12.1.ebuild,v 1.6 2011/04/04 12:19:35 scarabeus Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/mediatomb/mediatomb-0.12.1.ebuild,v 1.7 2011/11/17 03:40:31 axs Exp $
 
 EAPI=2
-inherit eutils linux-info
+inherit autotools-utils eutils linux-info
 
 DESCRIPTION="MediaTomb is an open source UPnP MediaServer"
 HOMEPAGE="http://www.mediatomb.cc/"
@@ -50,6 +50,10 @@ pkg_setup() {
 
 src_prepare() {
        epatch "${FILESDIR}/${P}-gcc46.patch"
+       if use javascript && has_version ">=dev-lang/spidermonkey-1.8.5" ; then
+               epatch "${FILESDIR}"/${P}-mozjs185.patch
+               eautoreconf
+       fi
 }
 
 src_configure() {