From a9ef0f056d0fca5ed39c6e0e8dfec8a218ed8671 Mon Sep 17 00:00:00 2001 From: aurelien Date: Tue, 20 Nov 2012 17:05:20 +0100 Subject: + bison++ log4cxx mediatomb perl-file-find-rule perl-num ber-compare perl-text-glob python2-empy python2-rospkg rosinstall vcstools --- pcr/mediatomb/PKGBUILD | 63 ++++ pcr/mediatomb/gcc46.patch | 10 + pcr/mediatomb/jsparse.patch | 144 +++++++++ pcr/mediatomb/libav_0.7_support.patch | 64 ++++ pcr/mediatomb/libavformat.patch | 52 ++++ pcr/mediatomb/libmp4v2_191_p497.patch | 187 +++++++++++ pcr/mediatomb/mediatomb.conf | 23 ++ pcr/mediatomb/mediatomb.install | 9 + pcr/mediatomb/mediatomb.rc | 54 ++++ pcr/mediatomb/tonewjs.patch | 564 ++++++++++++++++++++++++++++++++++ 10 files changed, 1170 insertions(+) create mode 100644 pcr/mediatomb/PKGBUILD create mode 100644 pcr/mediatomb/gcc46.patch create mode 100644 pcr/mediatomb/jsparse.patch create mode 100644 pcr/mediatomb/libav_0.7_support.patch create mode 100644 pcr/mediatomb/libavformat.patch create mode 100644 pcr/mediatomb/libmp4v2_191_p497.patch create mode 100644 pcr/mediatomb/mediatomb.conf create mode 100644 pcr/mediatomb/mediatomb.install create mode 100644 pcr/mediatomb/mediatomb.rc create mode 100644 pcr/mediatomb/tonewjs.patch (limited to 'pcr/mediatomb') diff --git a/pcr/mediatomb/PKGBUILD b/pcr/mediatomb/PKGBUILD new file mode 100644 index 000000000..f07e12748 --- /dev/null +++ b/pcr/mediatomb/PKGBUILD @@ -0,0 +1,63 @@ +# Contributor: Peter Richard Lewis +# Contributor: William Rea +# Contributor: Nikhil Bysani +# Contributor: Mika Hynnä +# Contributor: Jonathan Conder +# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres + +pkgname=mediatomb +pkgver=0.12.1 +pkgrel=11 +pkgdesc="Free UPnP/DLNA media server" +arch=('i686' 'x86_64') +url="http://mediatomb.cc/" +license=('GPL') +depends=('file' 'curl' 'ffmpegthumbnailer' 'js' 'libexif' 'libmp4v2' 'sqlite3' 'taglib' 'libmysqlclient') +optdepends=('mysql: to store your music database in mysql') +backup=('etc/conf.d/mediatomb') +install=mediatomb.install +source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" + 'mediatomb.rc' + 'mediatomb.conf' + 'gcc46.patch' + 'tonewjs.patch' + 'jsparse.patch' + 'libav_0.7_support.patch' + 'libmp4v2_191_p497.patch' + 'libavformat.patch') + +build() { + cd "$srcdir/$pkgname-$pkgver" + patch -Np1 -i "$srcdir/gcc46.patch" + patch -Np1 -i "$srcdir/tonewjs.patch" + patch -Np1 -i "$srcdir/jsparse.patch" + patch -Np1 -i "$srcdir/libav_0.7_support.patch" + patch -Np1 -i "$srcdir/libmp4v2_191_p497.patch" + patch -Np1 -i "$srcdir/libavformat.patch" + + ./configure --prefix=/usr \ + --enable-mysql \ + --enable-libmagic \ + --enable-libjs \ + --enable-ffmpeg + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR="$pkgdir/" install + + install -D -m0755 "$srcdir/mediatomb.rc" "$pkgdir/etc/rc.d/mediatomb" + install -D -m0755 "$srcdir/mediatomb.conf" "$pkgdir/etc/conf.d/mediatomb" + install -d "$pkgdir/var/lib/mediatomb" +} +sha256sums=('31163c34a7b9d1c9735181737cb31306f29f1f2a0335fb4f53ecccf8f62f11cd' + '1a67a1deb8a41467fe9bbf66358a255f0df97b0170a5fc3d48c1f768c8d328b9' + 'ba9753a4a380d4c717c987efec03a3c6d401d3ff93a6fced28098adbd3a44cc9' + '0c02a20032f0c296800b1bb9644638970c2dedbc5ab7141d66a637235e9da6ce' + '2cd8f5628c3a38b290526f008bae351b90211825f86e5959bf95f140748de574' + 'd9a3062858900d32b977f0d50d168fd7d36785b6ecc038c019e661e27f7b1c17' + 'c6523e8bf5e2da89b7475d6777ef9bffe7d089752ef2f7b27b5e39a4130fb0ff' + 'd39c2f9aab051c5447461718fd0ec72cf5982f6c920a4a985a50831f34babe84' + '76b11706d70ed8f5e157d96ca441c90c46c42176102fcb651b4ab1102b61bfee') diff --git a/pcr/mediatomb/gcc46.patch b/pcr/mediatomb/gcc46.patch new file mode 100644 index 000000000..0f4fe490f --- /dev/null +++ b/pcr/mediatomb/gcc46.patch @@ -0,0 +1,10 @@ +--- a/src/zmm/object.h ++++ b/src/zmm/object.h +@@ -33,6 +33,7 @@ + #define __ZMM_OBJECT_H__ + + #include // for size_t ++#include + #include "atomic.h" + + namespace zmm diff --git a/pcr/mediatomb/jsparse.patch b/pcr/mediatomb/jsparse.patch new file mode 100644 index 000000000..9938939b0 --- /dev/null +++ b/pcr/mediatomb/jsparse.patch @@ -0,0 +1,144 @@ +diff -rup mediatomb-0.12.1/src/scripting/js_functions.cc ../mediatomb-0.12.1/src/scripting/js_functions.cc +--- mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:51:13.641025479 -0400 ++++ ../mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:49:21.071800273 -0400 +@@ -51,15 +51,28 @@ extern "C" { + JSBool + 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); ++ + char * log_str = JS_EncodeString(cx, str); + log_js("%s\n", log_str); + JS_free(cx, log_str); +@@ -116,24 +129,54 @@ js_addCdsObject(JSContext *cx, uintN arg + { + 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 orig_object; + + Ref p2i; + Ref 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, JS_THIS_OBJECT(cx, argv)); ++ 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) +@@ -144,23 +187,14 @@ js_addCdsObject(JSContext *cx, uintN arg + { + 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_EncodeString(cx, str); + +- JSString *cont = JS_ValueToString(cx, argv[2]); ++ + if (cont) + { + containerclass = JS_EncodeString(cx, cont); +@@ -169,9 +203,9 @@ js_addCdsObject(JSContext *cx, uintN arg + } + + if (self->whoami() == S_PLAYLIST) +- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist")); ++ js_orig_obj = self->getObjectProperty(obj, _("playlist")); + else if (self->whoami() == S_IMPORT) +- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig")); ++ js_orig_obj = self->getObjectProperty(obj, _("orig")); + + if (js_orig_obj == NULL) + { +@@ -179,9 +213,6 @@ js_addCdsObject(JSContext *cx, uintN arg + 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; diff --git a/pcr/mediatomb/libav_0.7_support.patch b/pcr/mediatomb/libav_0.7_support.patch new file mode 100644 index 000000000..e25697c50 --- /dev/null +++ b/pcr/mediatomb/libav_0.7_support.patch @@ -0,0 +1,64 @@ +=== modified file 'src/metadata/ffmpeg_handler.cc' +--- old/src/metadata/ffmpeg_handler.cc 2010-08-25 17:07:03 +0000 ++++ new/src/metadata/ffmpeg_handler.cc 2011-05-19 04:33:32 +0000 +@@ -89,6 +89,33 @@ + + Ref sc = StringConverter::m2i(); + ++ /* Tabs are 4 characters here */ ++ typedef struct {const char *avname; metadata_fields_t field;} mapping_t; ++ static const mapping_t mapping[] = ++ { ++ {"title", M_TITLE}, ++ {"artist", M_ARTIST}, ++ {"album", M_ALBUM}, ++ {"date", M_DATE}, ++ {"genre", M_GENRE}, ++ {"comment", M_DESCRIPTION}, ++ {"track", M_TRACKNUMBER}, ++ {NULL, M_MAX}, ++ }; ++ ++ if (!pFormatCtx->metadata) ++ return; ++ for (const mapping_t *m = mapping; m->avname != NULL; m++) ++ { ++ AVMetadataTag *tag = NULL; ++ tag = av_metadata_get(pFormatCtx->metadata, m->avname, NULL, 0); ++ if (tag && tag->value && tag->value[0]) ++ { ++ log_debug("Added metadata %s: %s\n", m->avname, tag->value); ++ item->setMetadata(MT_KEYS[m->field].upnp, sc->convert(tag->value)); ++ } ++ } ++ /* Old algorithm (doesn't work with libav >= 0.7) + if (strlen(pFormatCtx->title) > 0) + { + log_debug("Added metadata title: %s\n", pFormatCtx->title); +@@ -131,6 +158,7 @@ + item->setMetadata(MT_KEYS[M_TRACKNUMBER].upnp, + sc->convert(String::from(pFormatCtx->track))); + } ++ */ + } + + // ffmpeg library calls +@@ -178,7 +206,7 @@ + for(i=0; inb_streams; i++) + { + AVStream *st = pFormatCtx->streams[i]; +- if((st != NULL) && (videoset == false) && (st->codec->codec_type == CODEC_TYPE_VIDEO)) ++ if((st != NULL) && (videoset == false) && (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)) + { + if (st->codec->codec_tag > 0) + { +@@ -209,7 +237,7 @@ + *y = st->codec->height; + } + } +- if(st->codec->codec_type == CODEC_TYPE_AUDIO) ++ if(st->codec->codec_type == AVMEDIA_TYPE_AUDIO) + { + // Increase number of audiochannels + audioch++; + diff --git a/pcr/mediatomb/libavformat.patch b/pcr/mediatomb/libavformat.patch new file mode 100644 index 000000000..96685ea15 --- /dev/null +++ b/pcr/mediatomb/libavformat.patch @@ -0,0 +1,52 @@ +--- mediatomb-0.12.1.orig/src/metadata/ffmpeg_handler.cc 2012-06-18 02:50:35.000000000 -0400 ++++ mediatomb-0.12.1/src/metadata/ffmpeg_handler.cc 2012-06-18 02:59:02.000000000 -0400 +@@ -107,8 +107,8 @@ + return; + for (const mapping_t *m = mapping; m->avname != NULL; m++) + { +- AVMetadataTag *tag = NULL; +- tag = av_metadata_get(pFormatCtx->metadata, m->avname, NULL, 0); ++ AVDictionaryEntry *tag = NULL; ++ tag = av_dict_get(pFormatCtx->metadata, m->avname, NULL, 0); + if (tag && tag->value && tag->value[0]) + { + log_debug("Added metadata %s: %s\n", m->avname, tag->value); +@@ -278,7 +278,7 @@ + int x = 0; + int y = 0; + +- AVFormatContext *pFormatCtx; ++ AVFormatContext *pFormatCtx = avformat_alloc_context(); + + // Suppress all log messages + av_log_set_callback(FfmpegNoOutputStub); +@@ -286,15 +286,15 @@ + // Register all formats and codecs + av_register_all(); + +- // Open video file +- if (av_open_input_file(&pFormatCtx, +- item->getLocation().c_str(), NULL, 0, NULL) != 0) ++ // Open video file ++ if (avformat_open_input(&pFormatCtx, ++ item->getLocation().c_str(), NULL, NULL) != 0) + return; // Couldn't open file + + // Retrieve stream information +- if (av_find_stream_info(pFormatCtx) < 0) ++ if (avformat_find_stream_info(pFormatCtx,NULL) < 0) + { +- av_close_input_file(pFormatCtx); ++ avformat_close_input(&pFormatCtx); + return; // Couldn't find stream information + } + // Add metadata using ffmpeg library calls +@@ -303,7 +303,7 @@ + addFfmpegResourceFields(item, pFormatCtx, &x, &y); + + // Close the video file +- av_close_input_file(pFormatCtx); ++ avformat_close_input(&pFormatCtx); + } + + Ref FfmpegHandler::serveContent(Ref item, int resNum, off_t *data_size) diff --git a/pcr/mediatomb/libmp4v2_191_p497.patch b/pcr/mediatomb/libmp4v2_191_p497.patch new file mode 100644 index 000000000..6a6b51e1e --- /dev/null +++ b/pcr/mediatomb/libmp4v2_191_p497.patch @@ -0,0 +1,187 @@ +diff -urN old/src/metadata/libmp4v2_handler.cc new/src/metadata/libmp4v2_handler.cc +--- old/src/metadata/libmp4v2_handler.cc 2012-04-05 01:46:26.000000000 +0200 ++++ new/src/metadata/libmp4v2_handler.cc 2012-04-05 02:01:24.000000000 +0200 +@@ -65,29 +65,28 @@ + static void addMetaField(metadata_fields_t field, MP4FileHandle mp4, Ref item) + { + String value; +- char* mp4_retval = NULL; +- u_int16_t track; +- u_int16_t total_tracks; +- + Ref sc = StringConverter::i2i(); + ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ ++ if (!MP4TagsFetch(new_tags, mp4)) ++ return; ++ + switch (field) + { + case M_TITLE: +- MP4GetMetadataName(mp4, &mp4_retval); ++ value = new_tags->name; + break; + case M_ARTIST: +- MP4GetMetadataArtist(mp4, &mp4_retval); ++ value = new_tags->artist; + break; + case M_ALBUM: +- MP4GetMetadataAlbum(mp4, &mp4_retval); ++ value = new_tags->album; + break; + case M_DATE: +- MP4GetMetadataYear(mp4, &mp4_retval); +- if (mp4_retval) ++ value = new_tags->releaseDate; ++ if (value.length() > 0) + { +- value = mp4_retval; +- free(mp4_retval); + if (string_ok(value)) + value = value + "-01-01"; + else +@@ -95,34 +94,31 @@ + } + break; + case M_GENRE: +- MP4GetMetadataGenre(mp4, &mp4_retval); ++ value = new_tags->genre; + break; + case M_DESCRIPTION: +- MP4GetMetadataComment(mp4, &mp4_retval); ++ value = new_tags->comments; + break; + case M_TRACKNUMBER: +- MP4GetMetadataTrack(mp4, &track, &total_tracks); +- if (track > 0) ++ if (new_tags->track) + { +- value = String::from(track); +- item->setTrackNumber((int)track); ++ value = String::from(new_tags->track->index); ++ item->setTrackNumber((int)new_tags->track->index); + } + else ++ { ++ MP4TagsFree( new_tags ); + return; ++ } + break; + default: ++ MP4TagsFree( new_tags ); + return; + } + +- if ((field != M_DATE) && (field != M_TRACKNUMBER) && +- (mp4_retval)) +- { +- value = mp4_retval; +- free(mp4_retval); +- } +- ++ MP4TagsFree( new_tags ); + value = trim_string(value); +- ++ + if (string_ok(value)) + { + item->setMetadata(MT_KEYS[field].upnp, sc->convert(value)); +@@ -190,14 +186,19 @@ + } + + #if defined(HAVE_MAGIC) +- u_int8_t *art_data; +- u_int32_t art_data_len; ++ void *art_data = 0; ++ u_int32_t art_data_len = 0; + String art_mimetype; ++ ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ MP4TagsFetch(new_tags, mp4); ++ if (new_tags->artworkCount) ++ { ++ art_data = new_tags->artwork->data; ++ art_data_len = new_tags->artwork->size; ++ } + #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT +- if (MP4GetMetadataCoverArtCount(mp4) && +- MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len)) +-#else +- MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len); ++ if (new_tags->artworkCount && art_data_len > 0) + #endif + { + if (art_data) +@@ -211,11 +212,10 @@ + } + catch (Exception ex) + { +- free(art_data); ++ MP4TagsFree(new_tags); + throw ex; + } + +- free(art_data); + if (art_mimetype != _(MIMETYPE_DEFAULT)) + { + Ref resource(new CdsResource(CH_MP4)); +@@ -225,6 +225,7 @@ + } + } + } ++ MP4TagsFree(new_tags); + #endif + MP4Close(mp4); + } +@@ -249,26 +250,35 @@ + + if (ctype != ID3_ALBUM_ART) + throw _Exception(_("LibMP4V2Handler: got unknown content type: ") + ctype); ++ ++ const MP4Tags* new_tags = MP4TagsAlloc(); ++ if (MP4TagsFetch(new_tags, mp4)) ++ { + #ifdef HAVE_MP4_GET_METADATA_COVER_ART_COUNT +- if (!MP4GetMetadataCoverArtCount(mp4)) +- throw _Exception(_("LibMP4V2Handler: resource has no album art information")); ++ if (!new_tags->artworkCount) ++ throw _Exception(_("LibMP4V2Handler: resource has no album art information")); + #endif +- u_int8_t *art_data; +- u_int32_t art_data_len; +- if (MP4GetMetadataCoverArt(mp4, &art_data, &art_data_len)) +- { +- if (art_data) ++ void *art_data = 0; ++ u_int32_t art_data_len; ++ ++ const MP4TagArtwork* art = new_tags->artwork; ++ art_data = art->data; ++ art_data_len = art->size; ++ if (art) + { +- *data_size = (off_t)art_data_len; +- Ref h(new MemIOHandler((void *)art_data, art_data_len)); +- free(art_data); +- return h; ++ if (art_data) ++ { ++ *data_size = (off_t)art_data_len; ++ Ref h(new MemIOHandler(art_data, art_data_len)); ++ MP4TagsFree(new_tags); ++ return h; ++ } + } ++ MP4TagsFree(new_tags); + } +- + throw _Exception(_("LibMP4V2Handler: could not serve album art " +- "for file") + item->getLocation() + +- " - embedded image not found"); ++ "for file") + item->getLocation() + ++ " - embedded image not found"); + } + + #endif // HAVE_LIBMP4V2 +De binära filerna old/src/metadata/.libmp4v2_handler.cc.swp och new/src/metadata/.libmp4v2_handler.cc.swp skiljer diff --git a/pcr/mediatomb/mediatomb.conf b/pcr/mediatomb/mediatomb.conf new file mode 100644 index 000000000..798018d2a --- /dev/null +++ b/pcr/mediatomb/mediatomb.conf @@ -0,0 +1,23 @@ +# +# Parameters to be passed to mediatomb +# + +# Port to listen on +MT_PORT='50500' + +# User and group to run as +MT_USER='nobody' +MT_GROUP='nobody' + +# Location of the PID file +MT_PIDFILE='/var/run/mediatomb.pid' + +# Location of the log file +MT_LOGFILE='/var/log/mediatomb.log' + +# Location of the config file/database +MT_HOME='/var/lib/mediatomb' +MT_CFGDIR='.mediatomb' + +# User defined command line options +MT_OPTIONS='' diff --git a/pcr/mediatomb/mediatomb.install b/pcr/mediatomb/mediatomb.install new file mode 100644 index 000000000..56f6ef92c --- /dev/null +++ b/pcr/mediatomb/mediatomb.install @@ -0,0 +1,9 @@ +post_install() { + echo 'Warning: the MediaTomb web interface exposes your filesystem to the network' + echo 'For maximum security, set in your MediaTomb config file' +} + +post_upgrade() { + # TODO: disable next update + post_install +} diff --git a/pcr/mediatomb/mediatomb.rc b/pcr/mediatomb/mediatomb.rc new file mode 100644 index 000000000..7b93012cd --- /dev/null +++ b/pcr/mediatomb/mediatomb.rc @@ -0,0 +1,54 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/mediatomb + +MT_OPTIONS="-p $MT_PORT -u $MT_USER -g $MT_GROUP -P $MT_PIDFILE \ + -l $MT_LOGFILE -m $MT_HOME -f $MT_CFGDIR $MT_OPTIONS" + +case "$1" in + start) + stat_busy "Starting Mediatomb UPnP Media Server" + + chown "$MT_USER:$MT_GROUP" "$MT_HOME" + + if ! pidof -o %PPID /usr/bin/mediatomb &> /dev/null; then + rm -f "$MT_PIDFILE" + fi + + PID="$(cat "$MT_PIDFILE" 2> /dev/null)" + + if [ -z "$PID" ] && /usr/bin/mediatomb -d $MT_OPTIONS; then + add_daemon mediatomb + stat_done + else + stat_fail + fi + ;; + + stop) + stat_busy "Stopping Mediatomb UPnP Media Server" + + PID="$(cat "$MT_PIDFILE" 2> /dev/null)" + + if [ -n "$PID" ] && kill "$PID" &> /dev/null; then + rm -f "$MT_PIDFILE" + rm_daemon mediatomb + stat_done + else + stat_fail + fi + ;; + + restart) + "$0" stop + sleep 1 + "$0" start + ;; + + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac +exit 0 diff --git a/pcr/mediatomb/tonewjs.patch b/pcr/mediatomb/tonewjs.patch new file mode 100644 index 000000000..115968530 --- /dev/null +++ b/pcr/mediatomb/tonewjs.patch @@ -0,0 +1,564 @@ +diff -up mediatomb-0.12.1-back/build/Makefile.in.tonewjs mediatomb-0.12.1-back/build/Makefile.in +--- mediatomb-0.12.1-back/build/Makefile.in.tonewjs 2010-04-08 00:40:15.000000000 +0200 ++++ mediatomb-0.12.1-back/build/Makefile.in 2011-04-19 17:17:01.343509944 +0200 +@@ -257,7 +257,7 @@ CURL_LIBS = @CURL_LIBS@ + 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 -up mediatomb-0.12.1-back/src/scripting/import_script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/import_script.cc +--- mediatomb-0.12.1-back/src/scripting/import_script.cc.tonewjs 2011-04-18 13:10:48.000000000 +0200 ++++ mediatomb-0.12.1-back/src/scripting/import_script.cc 2011-04-18 13:29:36.000000000 +0200 +@@ -53,8 +53,8 @@ ImportScript::ImportScript(Ref + 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 @@ ImportScript::~ImportScript() + #endif + + if (root) +- JS_RemoveRoot(cx, &root); ++ JS_RemoveObjectRoot(cx, &root); + + #ifdef JS_THREADSAFE + JS_EndRequest(cx); +diff -up mediatomb-0.12.1-back/src/scripting/js_functions.cc.tonewjs mediatomb-0.12.1-back/src/scripting/js_functions.cc +--- mediatomb-0.12.1-back/src/scripting/js_functions.cc.tonewjs 2011-04-18 13:29:55.000000000 +0200 ++++ mediatomb-0.12.1-back/src/scripting/js_functions.cc 2011-04-19 16:48:04.009229611 +0200 +@@ -49,7 +49,7 @@ using namespace zmm; + 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; + JSString *str; +@@ -60,19 +60,21 @@ js_print(JSContext *cx, JSObject *obj, u + 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 +93,7 @@ js_copyObject(JSContext *cx, JSObject *o + + 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,7 +112,7 @@ js_copyObject(JSContext *cx, JSObject *o + } + + JSBool +-js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ++js_addCdsObject(JSContext *cx, uintN argc, jsval *argv) + { + try + { +@@ -126,7 +128,7 @@ js_addCdsObject(JSContext *cx, JSObject + Ref p2i; + Ref i2i; + +- Script *self = (Script *)JS_GetPrivate(cx, obj); ++ Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv)); + + if (self == NULL) + { +@@ -156,20 +158,20 @@ js_addCdsObject(JSContext *cx, JSObject + 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; + } + + if (self->whoami() == S_PLAYLIST) +- js_orig_obj = self->getObjectProperty(obj, _("playlist")); ++ js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist")); + else if (self->whoami() == S_IMPORT) +- js_orig_obj = self->getObjectProperty(obj, _("orig")); ++ js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig")); + + if (js_orig_obj == NULL) + { +@@ -285,8 +287,7 @@ js_addCdsObject(JSContext *cx, JSObject + 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 +303,7 @@ js_addCdsObject(JSContext *cx, JSObject + 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 +322,7 @@ static JSBool convert_charset_generic(JS + { + str = JS_ValueToString(cx, argv[0]); + if (str) +- result = JS_GetStringBytes(str); ++ result = JS_EncodeString(cx, str); + } + + if (result != nil) +@@ -330,7 +331,7 @@ static JSBool convert_charset_generic(JS + 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 +348,23 @@ static JSBool convert_charset_generic(JS + } + + +-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 -up mediatomb-0.12.1-back/src/scripting/js_functions.h.tonewjs mediatomb-0.12.1-back/src/scripting/js_functions.h +--- mediatomb-0.12.1-back/src/scripting/js_functions.h.tonewjs 2010-03-25 15:58:05.000000000 +0100 ++++ mediatomb-0.12.1-back/src/scripting/js_functions.h 2011-04-18 13:59:29.000000000 +0200 +@@ -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 -up mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc +--- mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc.tonewjs 2011-04-18 13:34:14.000000000 +0200 ++++ mediatomb-0.12.1-back/src/scripting/playlist_parser_script.cc 2011-04-18 13:51:59.000000000 +0200 +@@ -46,9 +46,9 @@ using namespace zmm; + 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 @@ js_readln(JSContext *cx, JSObject *obj, + + 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 @@ PlaylistParserScript::PlaylistParserScri + + 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 @@ PlaylistParserScript::~PlaylistParserScr + #endif + + if (root) +- JS_RemoveRoot(cx, &root); ++ JS_RemoveObjectRoot(cx, &root); + + #ifdef JS_THREADSAFE + JS_EndRequest(cx); +diff -up mediatomb-0.12.1-back/src/scripting/script.cc.tonewjs mediatomb-0.12.1-back/src/scripting/script.cc +--- mediatomb-0.12.1-back/src/scripting/script.cc.tonewjs 2011-04-18 13:53:07.000000000 +0200 ++++ mediatomb-0.12.1-back/src/scripting/script.cc 2011-04-19 18:26:34.460338804 +0200 +@@ -87,7 +87,7 @@ String Script::getProperty(JSObject *obj + 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 @@ static JSFunctionSpec js_global_function + 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 @@ Script::~Script() + 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 @@ void Script::initGlobalObject() + 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 @@ void Script::initGlobalObject() + }; + + /* 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 @@ void Script::defineFunctions(JSFunctionS + 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 @@ JSScript *Script::_load(zmm::String scri + + 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 @@ Ref Script::jsObject2cdsObjec + 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 @@ Ref Script::jsObject2cdsObjec + } + } + } +- JS_RemoveRoot(cx, &js_meta); ++ JS_RemoveObjectRoot(cx, &js_meta); + } + + // stuff that has not been exported to js +diff -up mediatomb-0.12.1-back/src/scripting/script.h.tonewjs mediatomb-0.12.1-back/src/scripting/script.h +--- mediatomb-0.12.1-back/src/scripting/script.h.tonewjs 2011-04-18 12:56:14.000000000 +0200 ++++ mediatomb-0.12.1-back/src/scripting/script.h 2011-04-18 12:56:51.000000000 +0200 +@@ -66,8 +66,8 @@ public: + JSRuntime *rt; + JSContext *cx; + JSObject *glob; +- JSScript *script; +- JSScript *common_script; ++ JSObject *script; ++ JSObject *common_script; + + public: + Script(zmm::Ref runtime); +@@ -115,8 +115,8 @@ private: + 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 _p2i; + zmm::Ref _j2i; + zmm::Ref _f2i; +--- mediatomb-0.12.1/configure.tonewjs 2011-07-04 20:20:00.290227110 +1200 ++++ mediatomb-0.12.1/configure 2011-07-04 20:20:28.186894644 +1200 +@@ -23784,14 +23784,14 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" + + else + +- LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS" +- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 +-$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } +-if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then ++ LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs185 $ADD_PTHREAD_CFLAGS" ++ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 ++$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } ++if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lmozjs $LIBS" ++LIBS="-lmozjs185 $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -23835,12 +23835,12 @@ $as_echo "$ac_try_echo") >&5 + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then +- ac_cv_lib_mozjs_JS_NewObject=yes ++ ac_cv_lib_mozjs185_JS_NewObject=yes + else + $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_lib_mozjs_JS_NewObject=no ++ ac_cv_lib_mozjs185_JS_NewObject=no + fi + + rm -rf conftest.dSYM +@@ -23848,12 +23848,12 @@ rm -f core conftest.err conftest.$ac_obj + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 +-$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } +-if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then ++{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 ++$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } ++if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then + +- JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs" +- MOZLIB=mozjs ++ JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs185" ++ MOZLIB=mozjs185 + + else + +@@ -24020,13 +24020,13 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" + else + + unset ac_cv_lib_smjs_JS_NewObject +- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 +-$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } +-if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then ++ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 ++$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } ++if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lmozjs $LIBS" ++LIBS="-lmozjs185 $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -24070,12 +24070,12 @@ $as_echo "$ac_try_echo") >&5 + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then +- ac_cv_lib_mozjs_JS_NewObject=yes ++ ac_cv_lib_mozjs185_JS_NewObject=yes + else + $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_lib_mozjs_JS_NewObject=no ++ ac_cv_lib_mozjs185_JS_NewObject=no + fi + + rm -rf conftest.dSYM +@@ -24083,12 +24083,12 @@ rm -f core conftest.err conftest.$ac_obj + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 +-$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } +-if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then ++{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 ++$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } ++if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then + +- MOZLIB=mozjs +- JS_LIBS="-lmozjs" ++ MOZLIB=mozjs185 ++ JS_LIBS="-lmozjs185" + + else + +@@ -24239,15 +24239,15 @@ if test "x$ac_cv_lib_smjs_JS_NewObject" + + else + +- LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs" +- unset ac_cv_lib_mozjs_JS_NewObject +- { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs" >&5 +-$as_echo_n "checking for JS_NewObject in -lmozjs... " >&6; } +-if test "${ac_cv_lib_mozjs_JS_NewObject+set}" = set; then ++ LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs185" ++ unset ac_cv_lib_mozjs185_JS_NewObject ++ { $as_echo "$as_me:$LINENO: checking for JS_NewObject in -lmozjs185" >&5 ++$as_echo_n "checking for JS_NewObject in -lmozjs185... " >&6; } ++if test "${ac_cv_lib_mozjs185_JS_NewObject+set}" = set; then + $as_echo_n "(cached) " >&6 + else + ac_check_lib_save_LIBS=$LIBS +-LIBS="-lmozjs $LIBS" ++LIBS="-lmozjs185 $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -24291,12 +24291,12 @@ $as_echo "$ac_try_echo") >&5 + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then +- ac_cv_lib_mozjs_JS_NewObject=yes ++ ac_cv_lib_mozjs185_JS_NewObject=yes + else + $as_echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +- ac_cv_lib_mozjs_JS_NewObject=no ++ ac_cv_lib_mozjs185_JS_NewObject=no + fi + + rm -rf conftest.dSYM +@@ -24304,12 +24304,12 @@ rm -f core conftest.err conftest.$ac_obj + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs_JS_NewObject" >&5 +-$as_echo "$ac_cv_lib_mozjs_JS_NewObject" >&6; } +-if test "x$ac_cv_lib_mozjs_JS_NewObject" = x""yes; then ++{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_mozjs185_JS_NewObject" >&5 ++$as_echo "$ac_cv_lib_mozjs185_JS_NewObject" >&6; } ++if test "x$ac_cv_lib_mozjs185_JS_NewObject" = x""yes; then + +- JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs" +- MOZLIB=mozjs ++ JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs185" ++ MOZLIB=mozjs185 + + else + -- cgit v1.2.2