Index: branches/2017Q3/Mk/Uses/gecko.mk =================================================================== --- branches/2017Q3/Mk/Uses/gecko.mk (revision 447216) +++ branches/2017Q3/Mk/Uses/gecko.mk (revision 447217) @@ -1,127 +1,127 @@ # $FreeBSD$ # # Handle dependency of different gecko based applications # # MAINTAINER: gecko@FreeBSD.org # # Feature: gecko # Usage: USES=gecko or USES=gecko:ARGS # Valid ARGS: libxul, firefox, seamonkey, thunderbird # in case the first argument is not libxul # The following arguments are available # - build: also add the dependency as a build # dependency # - [0-9][0-9][+]?: a version optionnally # followed by a + # .if !defined(_INCLUDE_USES_GECKO_MK) _INCLUDE_USES_GECKO_MK= yes .if empty(gecko_ARGS) gecko_ARGS= libxul .endif _GECKO_VERSION= ${gecko_ARGS:M[0-9][0-9]*} .if ${gecko_ARGS:Mlibxul} # Compat with older versions GECKO= libxul GECKO_CONFING?= ${LOCALBASE}/bin/${GECKO}-config XPIDL?= ${LOCALBASE}/lib/${GECKO}/xpidl XPIDL_INCL?= `${GECKO_CONFIG} --idlflags` BUILD_DEPENDS+= libxul>=45:www/libxul RUN_DEPENDS+= libxul>=45:www/libxul .elif ${gecko_ARGS:Mfirefox} _GECKO_DEFAULT_VERSION= 52 _GECKO_VERSIONS= 52 54 _GECKO_TYPE= firefox # Dependence lines for different Firefox versions 52_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr 54_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox .if exists(${LOCALBASE}/bin/firefox) _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null _GECKO_INSTALLED_VER:= ${_GECKO_INSTALLED_VER:M[0-9][0-9]*:C/([0-9][0-9]).*/\1/g} .endif .elif ${gecko_ARGS:Mseamonkey} -_GECKO_DEFAULT_VERSION= 46 -_GECKO_VERSIONS= 46 +_GECKO_DEFAULT_VERSION= 48 +_GECKO_VERSIONS= 48 _GECKO_TYPE= seamonkey .if exists(${LOCALBASE}/bin/seamonkey) _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/seamonkey --version 2>/dev/null _GECKO_INSTALLED_VER:= ${_GECKO_INSTALLED_VER:M[0-9]*:C/[0-9].([0-9][0-9]).*/\1/g} .endif # Dependence lines for different Seamonkey versions -46_DEPENDS= ${LOCALBASE}/lib/seamonkey/seamonkey:www/seamonkey +48_DEPENDS= ${LOCALBASE}/lib/seamonkey/seamonkey:www/seamonkey .elif ${gecko_ARGS:Mthunderbird} _GECKO_DEFAULT_VERSION= 52 _GECKO_VERSIONS= 52 _GECKO_TYPE= thunderbird .if exists(${LOCALBASE}/bin/thunderbird) _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/thunderbird --version 2>/dev/null _GECKO_INSTALLED_VER:= ${_GECKO_INSTALLED_VER:M[0-9][0-9]*:C/([0-9][0-9]).*/\1/g} .endif # Dependence lines for different Thunderbird versions 52_DEPENDS= ${LOCALBASE}/lib/thunderbird/thunderbird:mail/thunderbird .else IGNORE= Unknown type of gecko dependency you may specify either libxul, firefox, seamonkey or thunderbird .endif .if defined(_GECKO_TYPE) .if ${_GECKO_VERSION:M*+} _GECKO_MIN_VERSION:= ${_GECKO_VERSION:S/+//} _GECKO_WANTED_VERSIONS:= ${_GECKO_DEFAULT_VERSION} .endif .if ${_GECKO_VERSION:M[0-9][0-9]} _GECKO_WANTED_VERSIONS:= ${_GECKO_VERSION:M[0-9][0-9]} .endif _GECKO_WANTED_VERSIONS?= ${_GECKO_DEFAULT_VERSION} .if defined(_GECKO_MIN_VERSION) . for _v in ${_GECKO_VERSIONS} . if ${_GECKO_MIN_VERSION} <= ${_v} _GECKO_WANTED_VERSIONS+= ${_v} . endif . endfor .endif .for _v in ${_GECKO_WANTED_VERSIONS:O:u} _GECKO_HIGHEST_VERSION:= ${_v} .if defined(_GECKO_INSTALLED_VER) && ${_GECKO_INSTALLED_VER} == ${_v} _GECKO_WANTED_VERSION:= ${_v} .endif .endfor .if !defined(_GECKO_WANTED_VERSION) .if defined(_GECKO_INSTALLED_VER) IGNORE= cannot install: ${_GECKO_TYPE} versions mismatch: ${_GECKO_TYPE}-${_GECKO_INSTALLED_VER} is installed and wanted version is ${_GECKO_TYPE}-${_GECKO_VERSION:M[0-9][0-9]} .else _GECKO_WANTED_VERSION:= ${_GECKO_HIGHEST_VERSION} .endif .endif .if ${gecko_ARGS:Mbuild} BUILD_DEPENDS+= ${${_GECKO_WANTED_VERSION}_DEPENDS} .endif RUN_DEPENDS+= ${${_GECKO_WANTED_VERSION}_DEPENDS} .endif .endif Index: branches/2017Q3/www/linux-seamonkey/Makefile =================================================================== --- branches/2017Q3/www/linux-seamonkey/Makefile (revision 447216) +++ branches/2017Q3/www/linux-seamonkey/Makefile (revision 447217) @@ -1,17 +1,16 @@ # Created by: Andrew Pantyukhin # $FreeBSD$ PORTNAME= seamonkey -DISTVERSION= 2.46 -PORTREVISION= 1 +DISTVERSION= 2.48 CATEGORIES= www mail news editors irc ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US \ - MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build9/linux-i686/en-US + MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/linux-i686/en-US MAINTAINER= gecko@FreeBSD.org COMMENT= The open source, standards compliant web browser USES= tar:bzip2 .include "${.CURDIR}/Makefile.common" .include Index: branches/2017Q3/www/linux-seamonkey/distinfo =================================================================== --- branches/2017Q3/www/linux-seamonkey/distinfo (revision 447216) +++ branches/2017Q3/www/linux-seamonkey/distinfo (revision 447217) @@ -1,3 +1,3 @@ -TIMESTAMP = 1481682190 -SHA256 (seamonkey-2.46.tar.bz2) = 096a1a8e229eaa05c2db5ae0661f856aceae58f1cae406cf52d2b270ca8a9957 -SIZE (seamonkey-2.46.tar.bz2) = 48816262 +TIMESTAMP = 1499406030 +SHA256 (seamonkey-2.48.tar.bz2) = b5294430a517a2e988c3abcf31cdddb41f96b8e17a075247b8bad68dfa0df91b +SIZE (seamonkey-2.48.tar.bz2) = 50679912 Index: branches/2017Q3/www/seamonkey/Makefile =================================================================== --- branches/2017Q3/www/seamonkey/Makefile (revision 447216) +++ branches/2017Q3/www/seamonkey/Makefile (revision 447217) @@ -1,90 +1,90 @@ # Created by: eivind/dima/jseger # $FreeBSD$ PORTNAME= seamonkey -DISTVERSION= 2.46 -MOZILLA_VER= 49 # above + 3 -PORTREVISION= 10 +DISTVERSION= 2.48 +MOZILLA_VER= 51 # above + 3 +PORTREVISION= 0 CATEGORIES?= www mail news editors irc ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ - MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build9/source + MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source DISTFILES= ${PORTNAME}-${DISTVERSION}.source${EXTRACT_SUFX} EXTRACT_ONLY= ${PORTNAME}-${DISTVERSION}.source${EXTRACT_SUFX} MAINTAINER= gecko@FreeBSD.org COMMENT= The open source, standards compliant web browser -BUILD_DEPENDS= nspr>=4.12:devel/nspr \ - nss>=3.25:security/nss \ +BUILD_DEPENDS= nspr>=4.13.1:devel/nspr \ + nss>=3.28.1:security/nss \ libevent>=2.0.21_2:devel/libevent \ - harfbuzz>=1.2.6:print/harfbuzz \ + harfbuzz>=1.3.0:print/harfbuzz \ graphite2>=1.3.8:graphics/graphite2 \ - png>=1.6.21:graphics/png \ + png>=1.6.25:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ - sqlite3>=3.13:databases/sqlite3 \ + sqlite3>=3.14.1:databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \ v4l_compat>0:multimedia/v4l_compat \ autoconf-2.13:devel/autoconf213 \ yasm:devel/yasm \ zip:archivers/zip # soundtouch>=1.9.0:audio/soundtouch \ LIB_DEPENDS= libv4l2.so:multimedia/libv4l SSP_UNSAFE= yes USE_GECKO= gecko USE_GL= gl USES= tar:xz MOZ_PIS_SCRIPTS= moz_pis_S50cleanhome MOZ_EXTENSIONS= default MOZ_OPTIONS+= --enable-application=suite USE_MOZILLA= -soundtouch MOZ_PKGCONFIG_FILES= OPTIONS_DEFINE= LDAP LIGHTNING RUST OPTIONS_SINGLE= TOOLKIT OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 OPTIONS_DEFAULT=CANBERRA GTK2 LDAP LIGHTNING LDAP_DESC?= LDAP support for Mailnews .include "${.CURDIR}/../../www/firefox/Makefile.options" .include WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION} MOZSRC:= ${WRKSRC}/mozilla .if ! ${PORT_OPTIONS:MLDAP} MOZ_OPTIONS+= --disable-ldap .else MOZ_OPTIONS+= --enable-ldap .endif .if ${PORT_OPTIONS:MLIGHTNING} MOZ_OPTIONS+= --enable-calendar .else MOZ_OPTIONS+= --disable-calendar .endif post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/suite/app/nsSuiteApp.cpp @${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/' \ ${WRKSRC}/mozilla/modules/libpref/init/all.js @${SED} -e 's|%%MOZILLA%%|${MOZILLA}|g' \ < ${FILESDIR}/seamonkey.desktop.in > \ ${WRKDIR}/${MOZILLA}.desktop pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${MOZSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${MOZSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) post-install: ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${STAGEDIR}${PREFIX}/share/applications/ ${LN} -sf ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png \ ${STAGEDIR}${PREFIX}/share/pixmaps/${MOZILLA}.png .include Index: branches/2017Q3/www/seamonkey/distinfo =================================================================== --- branches/2017Q3/www/seamonkey/distinfo (revision 447216) +++ branches/2017Q3/www/seamonkey/distinfo (revision 447217) @@ -1,3 +1,3 @@ -TIMESTAMP = 1481682190 -SHA256 (seamonkey-2.46.source.tar.xz) = 39c84ce6fa1ed7c30152473e0dcd858df07437e84b29e5a18973db437a28a912 -SIZE (seamonkey-2.46.source.tar.xz) = 204913776 +TIMESTAMP = 1499406030 +SHA256 (seamonkey-2.48.source.tar.xz) = 6f9a07c86ba6474b44e5083f9d1315d01778c097937f7da4c5701debffab2631 +SIZE (seamonkey-2.48.source.tar.xz) = 220412744 Index: branches/2017Q3/www/seamonkey/files/patch-bug1130155 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1130155 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1130155 (nonexistent) @@ -1,179 +0,0 @@ -commit eab3e3a -Author: Mikhail Teterin -Date: Tue Dec 16 19:34:02 2014 -0800 - - Bug 1130155 - Avoid assert failures when consuming only part of buffer. ---- - media/libcubeb/src/cubeb_alsa.c | 112 ++++++++++++++++++++++++++++++---------- - 1 file changed, 85 insertions(+), 27 deletions(-) - -diff --git media/libcubeb/src/cubeb_alsa.c media/libcubeb/src/cubeb_alsa.c -index 9bbc129..e72944a 100644 ---- mozilla/media/libcubeb/src/cubeb_alsa.c -+++ mozilla/media/libcubeb/src/cubeb_alsa.c -@@ -14,6 +14,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include "cubeb/cubeb.h" -@@ -45,6 +47,7 @@ MAKE_TYPEDEF(snd_pcm_avail_update); - MAKE_TYPEDEF(snd_pcm_close); - MAKE_TYPEDEF(snd_pcm_delay); - MAKE_TYPEDEF(snd_pcm_drain); -+MAKE_TYPEDEF(snd_pcm_forward); - MAKE_TYPEDEF(snd_pcm_frames_to_bytes); - MAKE_TYPEDEF(snd_pcm_get_params); - /* snd_pcm_hw_params_alloca is actually a macro */ -@@ -305,32 +308,35 @@ alsa_refill_stream(cubeb_stream * stm) - long got; - void * p; - int draining; -+ unsigned pipefailures, againfailures; - - draining = 0; - - pthread_mutex_lock(&stm->mutex); - -- r = WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents); -- if (r < 0 || revents != POLLOUT) { -- /* This should be a stream error; it makes no sense for poll(2) to wake -- for this stream and then have the stream report that it's not ready. -- Unfortunately, this does happen, so just bail out and try again. */ -- pthread_mutex_unlock(&stm->mutex); -- return RUNNING; -- } -+ for (pipefailures = 0;;) { -+ r = WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents); -+ if (r < 0 || revents != POLLOUT || -+ (avail = WRAP(snd_pcm_avail_update)(stm->pcm)) == 0) { -+ /* This should be a stream error; it makes no sense for poll(2) to wake -+ for this stream and then have the stream report that it's not ready. -+ Unfortunately, this does happen, so just bail out and try again. */ -+ pthread_mutex_unlock(&stm->mutex); -+ return RUNNING; -+ } - -- avail = WRAP(snd_pcm_avail_update)(stm->pcm); -- if (avail == -EPIPE) { -+ if (avail > 0) -+ break; -+ if (pipefailures++ > 11) { -+ fprintf(stderr, "%s: repeated failures from snd_pcm_avail_update, " -+ "giving up\n", __func__); -+ pthread_mutex_unlock(&stm->mutex); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ return ERROR; -+ } - WRAP(snd_pcm_recover)(stm->pcm, avail, 1); -- avail = WRAP(snd_pcm_avail_update)(stm->pcm); -- } -- -- /* Failed to recover from an xrun, this stream must be broken. */ -- if (avail < 0) { -- pthread_mutex_unlock(&stm->mutex); -- stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -- return ERROR; - } -+ pipefailures = againfailures = 0; - - /* This should never happen. */ - if ((unsigned int) avail > stm->buffer_size) { -@@ -359,10 +365,11 @@ alsa_refill_stream(cubeb_stream * stm) - if (got < 0) { - pthread_mutex_unlock(&stm->mutex); - stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ free(p); - return ERROR; - } - if (got > 0) { -- snd_pcm_sframes_t wrote; -+ snd_pcm_sframes_t wrote, towrite = got; - - if (stm->params.format == CUBEB_SAMPLE_FLOAT32NE) { - float * b = (float *) p; -@@ -375,14 +382,62 @@ alsa_refill_stream(cubeb_stream * stm) - b[i] *= stm->volume; - } - } -- wrote = WRAP(snd_pcm_writei)(stm->pcm, p, got); -- if (wrote == -EPIPE) { -- WRAP(snd_pcm_recover)(stm->pcm, wrote, 1); -- wrote = WRAP(snd_pcm_writei)(stm->pcm, p, got); -+ for (;;) { -+ wrote = WRAP(snd_pcm_writei)(stm->pcm, p, -+ towrite > avail ? avail : towrite); -+ switch(wrote) { -+ case -EPIPE: -+ if (pipefailures++ > 3) { -+ fprintf(stderr, "%s: Too many underflows, giving up\n", __func__); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ pthread_mutex_unlock(&stm->mutex); -+ free(p); -+ return ERROR; -+ } -+ WRAP(snd_pcm_recover)(stm->pcm, wrote, 1); -+ continue; -+ case -EAGAIN: -+ if (againfailures++ > 3) { -+ fprintf(stderr, "%s: Too many -EAGAIN errors from snd_pcm_writei, " -+ "giving up\n", __func__); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ pthread_mutex_unlock(&stm->mutex); -+ free(p); -+ return ERROR; -+ } -+ continue; -+ case -EBADFD: -+ fprintf(stderr, "%s: snc_pcm_writei returned -%s, giving up\n", -+ __func__, "EBADFD"); -+ free(p); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ pthread_mutex_unlock(&stm->mutex); -+ return ERROR; -+ } -+ if (wrote < 0) { -+ fprintf(stderr, "%s: snc_pcm_writei returned unexpected error %lld, " -+ "giving up\n", __func__, (long long)wrote); -+ free(p); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ pthread_mutex_unlock(&stm->mutex); -+ return ERROR; -+ } -+ pipefailures = againfailures = 0; -+ stm->write_position += wrote; -+ gettimeofday(&stm->last_activity, NULL); -+ if (wrote > towrite) { -+ fprintf(stderr, "%s: snc_pcm_writei wrote %lld frames, which was more " -+ "than we requested (%lld). This should not happen, giving up\n", -+ __func__, (long long)wrote, (long long)towrite); -+ free(p); -+ stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -+ pthread_mutex_unlock(&stm->mutex); -+ return ERROR; -+ } -+ if (towrite == wrote) -+ break; -+ towrite -= wrote; - } -- assert(wrote >= 0 && wrote == got); -- stm->write_position += wrote; -- gettimeofday(&stm->last_activity, NULL); - } - if (got != avail) { - long buffer_fill = stm->buffer_size - (avail - got); -@@ -1177,7 +1232,10 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position) - return CUBEB_OK; - } - -- assert(delay >= 0); -+ if (delay < 0) { -+ WRAP(snd_pcm_forward)(stm->pcm, -delay); -+ delay = 0; -+ } - - *position = 0; - if (stm->write_position >= (snd_pcm_uframes_t) delay) { Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1130155 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1290037 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1290037 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1290037 (nonexistent) @@ -1,29 +0,0 @@ -commit 7943c27406fb -Author: Franziskus Kiefer -Date: Thu Jul 28 16:48:00 2016 +0200 - - Bug 1290037 - Update keybits in H2, r=mt - - MozReview-Commit-ID: 35oWoDMqe1Y - - --HG-- - extra : rebase_source : 020fbd93c190131eb04eed2d583787d6e5954a5a ---- - netwerk/protocol/http/Http2Session.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git netwerk/protocol/http/Http2Session.cpp netwerk/protocol/http/Http2Session.cpp -index dbcc1115cbd3..f3cd57304f73 100644 ---- mozilla/netwerk/protocol/http/Http2Session.cpp -+++ mozilla/netwerk/protocol/http/Http2Session.cpp -@@ -3549,8 +3549,8 @@ Http2Session::ConfirmTLSProfile() - LOG3(("Http2Session::ConfirmTLSProfile %p FAILED due to DH %d < 2048\n", - this, keybits)); - RETURN_SESSION_ERROR(this, INADEQUATE_SECURITY); -- } else if (kea == ssl_kea_ecdh && keybits < 256) { // 256 bits is "security level" of 128 -- LOG3(("Http2Session::ConfirmTLSProfile %p FAILED due to ECDH %d < 256\n", -+ } else if (kea == ssl_kea_ecdh && keybits < 224) { // see rfc7540 9.2.1. -+ LOG3(("Http2Session::ConfirmTLSProfile %p FAILED due to ECDH %d < 224\n", - this, keybits)); - RETURN_SESSION_ERROR(this, INADEQUATE_SECURITY); - } Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1290037 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1320621 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1320621 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1320621 (nonexistent) @@ -1,39 +0,0 @@ -Make sure --enable-system-hunspell picks up system headers - ---- mozilla/extensions/spellcheck/hunspell/glue/moz.build -+++ mozilla/extensions/spellcheck/hunspell/glue/moz.build -@@ -11,12 +11,14 @@ UNIFIED_SOURCES += [ - 'RemoteSpellCheckEngineParent.cpp', - ] - --CXXFLAGS += CONFIG['MOZ_HUNSPELL_CFLAGS'] -- - FINAL_LIBRARY = 'xul' - -+if CONFIG['MOZ_SYSTEM_HUNSPELL']: -+ CXXFLAGS += CONFIG['MOZ_HUNSPELL_CFLAGS'] -+else: -+ LOCAL_INCLUDES += ['../src'] -+ - LOCAL_INCLUDES += [ -- '../src', - '/dom/base', - '/extensions/spellcheck/src', - ] ---- mozilla/extensions/spellcheck/src/moz.build -+++ mozilla/extensions/spellcheck/src/moz.build -@@ -17,9 +17,13 @@ UNIFIED_SOURCES += [ - - FINAL_LIBRARY = 'xul' - -+if CONFIG['MOZ_SYSTEM_HUNSPELL']: -+ CXXFLAGS += CONFIG['MOZ_HUNSPELL_CFLAGS'] -+else: -+ LOCAL_INCLUDES += ['../hunspell/src'] -+ - LOCAL_INCLUDES += [ - '../hunspell/glue', -- '../hunspell/src', - '/dom/base', - ] - EXPORTS.mozilla += [ Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1320621 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1256136 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1256136 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1256136 (nonexistent) @@ -1,21 +0,0 @@ -diff --git xpcom/glue/nsISupportsImpl.h xpcom/glue/nsISupportsImpl.h -index 9102102..e1f34c0 100644 ---- mozilla/xpcom/glue/nsISupportsImpl.h -+++ mozilla/xpcom/glue/nsISupportsImpl.h -@@ -32,11 +32,11 @@ - #include "mozilla/TypeTraits.h" - - #if defined(__clang__) -- // bug 1028428 shows that at least in FreeBSD 10.0 with Clang 3.4 and libc++ 3.4, -- // std::is_destructible is buggy in that it returns false when it should return true -- // on ipc::SharedMemory. On the other hand, all Clang versions currently in use -- // seem to handle the fallback just fine. --# define MOZ_CAN_USE_IS_DESTRUCTIBLE_FALLBACK -+# if MOZ_USING_LIBCXX && __has_include() -+# define MOZ_HAVE_STD_IS_DESTRUCTIBLE -+# else -+# define MOZ_CAN_USE_IS_DESTRUCTIBLE_FALLBACK -+# endif - #elif defined(__GNUC__) - // GCC 4.7 is has buggy std::is_destructible - # if MOZ_USING_LIBSTDCXX && MOZ_GCC_VERSION_AT_LEAST(4, 8, 0) Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1256136 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1278861 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1278861 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1278861 (nonexistent) @@ -1,38 +0,0 @@ - -# HG changeset patch -# User Nathan Froyd -# Date 1466820205 14400 -# Node ID bd25b06261c840a62d035192cf4b1dbc18f54e3f -# Parent fbe25a30fcbbe172bdd37c70c5b06cdbb07886af -Bug 1278861 - adjust ifdefs in Conversions.h:ToInt32 to catch clang-on-arm-generally; r=luke - -The bug noted in ToInt32 doesn't just exist when compiling for -arm-darwin; it exists for ARM targets generally. The ifdef should -reflect that. - -diff --git mozilla/js/public/Conversions.h mozilla/js/public/Conversions.h ---- mozilla/js/public/Conversions.h -+++ mozilla/js/public/Conversions.h -@@ -395,19 +395,19 @@ ToIntWidth(double d) - } - - } // namespace detail - - /* ES5 9.5 ToInt32 (specialized for doubles). */ - inline int32_t - ToInt32(double d) - { -- // clang crashes compiling this when targeting arm-darwin: -+ // clang crashes compiling this when targeting arm: - // https://llvm.org/bugs/show_bug.cgi?id=22974 --#if defined (__arm__) && defined (__GNUC__) && !defined(__APPLE__) -+#if defined (__arm__) && defined (__GNUC__) && !defined(__clang__) - int32_t i; - uint32_t tmp0; - uint32_t tmp1; - uint32_t tmp2; - asm ( - // We use a pure integer solution here. In the 'softfp' ABI, the argument - // will start in r0 and r1, and VFP can't do all of the necessary ECMA - // conversions by itself so some integer code will be required anyway. A - Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1278861 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1299694 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1299694 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1299694 (nonexistent) @@ -1,31 +0,0 @@ -commit 6ab2496 -Author: Chris Pearce -Date: Mon Sep 5 13:54:37 2016 +1200 - - Bug 1299694 - Ensure we don't enable Widevine unintentionally. r=glandium - - On FreeBSD the target.kernel etc checks in enable_eme are failing, - but we're still falling through to |return value|, and so Widevine - is being enabled. If we remove the |return value| from enable_eme - we at least make Widevine disabled where it's not supposed to be - enabled. - - MozReview-Commit-ID: D1h0IUidxhv ---- - toolkit/moz.configure | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git toolkit/moz.configure toolkit/moz.configure -index 0c98c7a..a00b6eb 100644 ---- mozilla/toolkit/moz.configure -+++ mozilla/toolkit/moz.configure -@@ -366,7 +366,8 @@ def enable_eme(value, target): - return value - elif value and value.origin != 'default': - die('%s is not supported on %s' % (value.format('--enable-eme'), target.alias)) -- return value -+ # Return the same type of OptionValue (Positive or Negative), with an empty tuple. -+ return value.__class__(()) - - @depends(enable_eme, fmp4) - def eme(value, fmp4): Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1299694 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1021761 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1021761 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug1021761 (revision 447217) @@ -1,1177 +1,1157 @@ diff --git build/moz.configure/old.configure build/moz.configure/old.configure index b95dd2b..4cbefd5 100644 --- mozilla/build/moz.configure/old.configure +++ mozilla/build/moz.configure/old.configure @@ -305,6 +305,7 @@ def old_configure_options(*options): '--with-nspr-prefix', '--with-nss-exec-prefix', '--with-nss-prefix', + '--with-oss', '--with-pthreads', '--with-qemu-exe', '--with-servo', diff --git old-configure.in configure.in index 48e60c0..ec08417 100644 --- mozilla/old-configure.in +++ mozilla/old-configure.in @@ -5591,6 +5591,67 @@ fi AC_SUBST(MOZ_WEBM_ENCODER) dnl ================================== +dnl = Check OSS availability +dnl ================================== + +dnl If using Linux, Solaris or BSDs, ensure that OSS is available +case "$OS_TARGET" in +Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD) + MOZ_OSS=1 + ;; +esac + +MOZ_ARG_WITH_STRING(oss, +[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]], + OSSPREFIX=$withval) + +if test -n "$OSSPREFIX"; then + if test "$OSSPREFIX" != "no"; then + MOZ_OSS=1 + else + MOZ_OSS= + fi +fi + +_SAVE_CFLAGS=$CFLAGS +_SAVE_LIBS=$LIBS +if test -n "$MOZ_OSS"; then + dnl Prefer 4Front implementation + AC_MSG_CHECKING([MOZ_OSS_CFLAGS]) + if test "$OSSPREFIX" != "yes"; then + oss_conf=${OSSPREFIX%/usr}/etc/oss.conf + if test -f "$oss_conf"; then + . "$oss_conf" + else + OSSLIBDIR=$OSSPREFIX/lib/oss + fi + if test -d "$OSSLIBDIR"; then + MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include" + fi + fi + AC_MSG_RESULT([$MOZ_OSS_CFLAGS]) + + CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS" + MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h) + + if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \ + "$ac_cv_header_soundcard_h" != "yes"; then + AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --without-oss.]) + fi + + dnl Assume NetBSD implementation over SunAudio + AC_CHECK_LIB(ossaudio, _oss_ioctl, + [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound") + MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"]) +fi +CFLAGS=$_SAVE_CFLAGS +LIBS=$_SAVE_LIBS + +AC_SUBST(MOZ_OSS) +AC_SUBST_LIST(MOZ_OSS_CFLAGS) +AC_SUBST_LIST(MOZ_OSS_LIBS) + +dnl ================================== dnl = Check alsa availability on Linux dnl ================================== diff --git media/libcubeb/AUTHORS media/libcubeb/AUTHORS index b441e8a..950d9e5 100644 --- mozilla/media/libcubeb/AUTHORS +++ mozilla/media/libcubeb/AUTHORS @@ -4,3 +4,4 @@ Michael Wu Paul Adenot David Richards Sebastien Alaiwan +Evgeniy Vodolazskiy diff --git media/libcubeb/src/cubeb.c media/libcubeb/src/cubeb.c index 9c3adcc..45d765b 100644 --- mozilla/media/libcubeb/src/cubeb.c +++ mozilla/media/libcubeb/src/cubeb.c @@ -54,6 +54,9 @@ int opensl_init(cubeb ** context, char const * context_name); #if defined(USE_AUDIOTRACK) int audiotrack_init(cubeb ** context, char const * context_name); #endif +#if defined(USE_OSS) +int oss_init(cubeb ** context, char const * context_name); +#endif int validate_stream_params(cubeb_stream_params stream_params) @@ -120,6 +123,9 @@ cubeb_init(cubeb ** context, char const * context_name) #if defined(USE_AUDIOTRACK) audiotrack_init, #endif +#if defined(USE_OSS) + oss_init, +#endif }; int i; diff --git media/libcubeb/src/cubeb_alsa.c media/libcubeb/src/cubeb_alsa.c index a962553..1f780f4 100644 --- mozilla/media/libcubeb/src/cubeb_alsa.c +++ mozilla/media/libcubeb/src/cubeb_alsa.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +25,50 @@ #define ALSA_PA_PLUGIN "ALSA <-> PulseAudio PCM I/O Plugin" +#ifdef DISABLE_LIBASOUND_DLOPEN +#define WRAP(x) x +#else +#define WRAP(x) cubeb_##x +#define MAKE_TYPEDEF(x) static typeof(x) * cubeb_##x +MAKE_TYPEDEF(snd_config); +MAKE_TYPEDEF(snd_config_add); +MAKE_TYPEDEF(snd_config_copy); +MAKE_TYPEDEF(snd_config_delete); +MAKE_TYPEDEF(snd_config_get_id); +MAKE_TYPEDEF(snd_config_get_string); +MAKE_TYPEDEF(snd_config_imake_integer); +MAKE_TYPEDEF(snd_config_search); +MAKE_TYPEDEF(snd_config_search_definition); +MAKE_TYPEDEF(snd_lib_error_set_handler); +MAKE_TYPEDEF(snd_pcm_avail_update); +MAKE_TYPEDEF(snd_pcm_close); +MAKE_TYPEDEF(snd_pcm_delay); +MAKE_TYPEDEF(snd_pcm_drain); +MAKE_TYPEDEF(snd_pcm_frames_to_bytes); +MAKE_TYPEDEF(snd_pcm_get_params); +/* snd_pcm_hw_params_alloca is actually a macro */ +/* MAKE_TYPEDEF(snd_pcm_hw_params_alloca); */ +MAKE_TYPEDEF(snd_pcm_hw_params_sizeof); +#define snd_pcm_hw_params_sizeof cubeb_snd_pcm_hw_params_sizeof +MAKE_TYPEDEF(snd_pcm_hw_params_any); +MAKE_TYPEDEF(snd_pcm_hw_params_get_channels_max); +MAKE_TYPEDEF(snd_pcm_hw_params_get_rate); +MAKE_TYPEDEF(snd_pcm_hw_params_set_rate_near); +MAKE_TYPEDEF(snd_pcm_nonblock); +MAKE_TYPEDEF(snd_pcm_open); +MAKE_TYPEDEF(snd_pcm_open_lconf); +MAKE_TYPEDEF(snd_pcm_pause); +MAKE_TYPEDEF(snd_pcm_poll_descriptors); +MAKE_TYPEDEF(snd_pcm_poll_descriptors_count); +MAKE_TYPEDEF(snd_pcm_poll_descriptors_revents); +MAKE_TYPEDEF(snd_pcm_recover); +MAKE_TYPEDEF(snd_pcm_set_params); +MAKE_TYPEDEF(snd_pcm_state); +MAKE_TYPEDEF(snd_pcm_writei); + +#undef MAKE_TYPEDEF +#endif + /* ALSA is not thread-safe. snd_pcm_t instances are individually protected by the owning cubeb_stream's mutex. snd_pcm_t creation and destruction is not thread-safe until ALSA 1.0.24 (see alsa-lib.git commit 91c9c8f1), @@ -64,6 +109,8 @@ struct cubeb { workaround is not required. */ snd_config_t * local_config; int is_pa; + + void * libasound; }; enum stream_state { -@@ -262,7 +309,7 @@ alsa_refill_stream(cubeb_stream * stm) +@@ -260,10 +307,10 @@ alsa_refill_stream(cubeb_stream * stm) pthread_mutex_lock(&stm->mutex); -- r = snd_pcm_poll_descriptors_revents(stm->pcm, stm->fds, stm->nfds, &revents); -+ r = WRAP(snd_pcm_poll_descriptors_revents)(stm->pcm, stm->fds, stm->nfds, &revents); - if (r < 0 || revents != POLLOUT) { - /* This should be a stream error; it makes no sense for poll(2) to wake - for this stream and then have the stream report that it's not ready. -@@ -271,10 +318,10 @@ alsa_refill_stream(cubeb_stream * stm) - return RUNNING; - } - - avail = snd_pcm_avail_update(stm->pcm); + avail = WRAP(snd_pcm_avail_update)(stm->pcm); - if (avail == -EPIPE) { + if (avail < 0) { - snd_pcm_recover(stm->pcm, avail, 1); - avail = snd_pcm_avail_update(stm->pcm); + WRAP(snd_pcm_recover)(stm->pcm, avail, 1); + avail = WRAP(snd_pcm_avail_update)(stm->pcm); } /* Failed to recover from an xrun, this stream must be broken. */ -@@ -293,8 +340,8 @@ alsa_refill_stream(cubeb_stream * stm) - available to write. If avail is still zero here, the stream must be in - a funky state, so recover and try again. */ - if (avail == 0) { -- snd_pcm_recover(stm->pcm, -EPIPE, 1); -- avail = snd_pcm_avail_update(stm->pcm); -+ WRAP(snd_pcm_recover)(stm->pcm, -EPIPE, 1); -+ avail = WRAP(snd_pcm_avail_update)(stm->pcm); - if (avail <= 0) { - pthread_mutex_unlock(&stm->mutex); - stm->state_callback(stm, stm->user_ptr, CUBEB_STATE_ERROR); -@@ -302,7 +349,7 @@ alsa_refill_stream(cubeb_stream * stm) - } +@@ -286,7 +333,7 @@ alsa_refill_stream(cubeb_stream * stm) + return RUNNING; } - p = calloc(1, snd_pcm_frames_to_bytes(stm->pcm, avail)); + p = calloc(1, WRAP(snd_pcm_frames_to_bytes)(stm->pcm, avail)); assert(p); pthread_mutex_unlock(&stm->mutex); -@@ -327,10 +374,10 @@ alsa_refill_stream(cubeb_stream * stm) +@@ -312,10 +359,10 @@ alsa_refill_stream(cubeb_stream * stm) b[i] *= stm->volume; } } - wrote = snd_pcm_writei(stm->pcm, p, got); + wrote = WRAP(snd_pcm_writei)(stm->pcm, p, got); - if (wrote == -EPIPE) { + if (wrote < 0) { - snd_pcm_recover(stm->pcm, wrote, 1); - wrote = snd_pcm_writei(stm->pcm, p, got); + WRAP(snd_pcm_recover)(stm->pcm, wrote, 1); + wrote = WRAP(snd_pcm_writei)(stm->pcm, p, got); } assert(wrote >= 0 && wrote == got); stm->write_position += wrote; @@ -342,7 +389,7 @@ alsa_refill_stream(cubeb_stream * stm) /* Fill the remaining buffer with silence to guarantee one full period has been written. */ - snd_pcm_writei(stm->pcm, (char *) p + got, avail - got); + WRAP(snd_pcm_writei)(stm->pcm, (char *) p + got, avail - got); set_timeout(&stm->drain_timeout, buffer_time * 1000); @@ -453,26 +500,26 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) slave_def = NULL; - r = snd_config_search(root_pcm, "slave", &slave_pcm); + r = WRAP(snd_config_search)(root_pcm, "slave", &slave_pcm); if (r < 0) { return NULL; } - r = snd_config_get_string(slave_pcm, &string); + r = WRAP(snd_config_get_string)(slave_pcm, &string); if (r >= 0) { - r = snd_config_search_definition(lconf, "pcm_slave", string, &slave_def); + r = WRAP(snd_config_search_definition)(lconf, "pcm_slave", string, &slave_def); if (r < 0) { return NULL; } } do { - r = snd_config_search(slave_def ? slave_def : slave_pcm, "pcm", &pcm); + r = WRAP(snd_config_search)(slave_def ? slave_def : slave_pcm, "pcm", &pcm); if (r < 0) { break; } - r = snd_config_get_string(slave_def ? slave_def : slave_pcm, &string); + r = WRAP(snd_config_get_string)(slave_def ? slave_def : slave_pcm, &string); if (r < 0) { break; } @@ -481,7 +528,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) if (r < 0 || r > (int) sizeof(node_name)) { break; } - r = snd_config_search(lconf, node_name, &pcm); + r = WRAP(snd_config_search)(lconf, node_name, &pcm); if (r < 0) { break; } @@ -490,7 +537,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm) } while (0); if (slave_def) { - snd_config_delete(slave_def); + WRAP(snd_config_delete)(slave_def); } return NULL; @@ -513,22 +560,22 @@ init_local_config_with_workaround(char const * pcm_name) lconf = NULL; - if (snd_config == NULL) { + if (*WRAP(snd_config) == NULL) { return NULL; } - r = snd_config_copy(&lconf, snd_config); + r = WRAP(snd_config_copy)(&lconf, *WRAP(snd_config)); if (r < 0) { return NULL; } do { - r = snd_config_search_definition(lconf, "pcm", pcm_name, &pcm_node); + r = WRAP(snd_config_search_definition)(lconf, "pcm", pcm_name, &pcm_node); if (r < 0) { break; } - r = snd_config_get_id(pcm_node, &string); + r = WRAP(snd_config_get_id)(pcm_node, &string); if (r < 0) { break; } @@ -537,7 +584,7 @@ init_local_config_with_workaround(char const * pcm_name) if (r < 0 || r > (int) sizeof(node_name)) { break; } - r = snd_config_search(lconf, node_name, &pcm_node); + r = WRAP(snd_config_search)(lconf, node_name, &pcm_node); if (r < 0) { break; } @@ -548,12 +595,12 @@ init_local_config_with_workaround(char const * pcm_name) } /* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */ - r = snd_config_search(pcm_node, "type", &node); + r = WRAP(snd_config_search)(pcm_node, "type", &node); if (r < 0) { break; } - r = snd_config_get_string(node, &string); + r = WRAP(snd_config_get_string)(node, &string); if (r < 0) { break; } @@ -564,18 +611,18 @@ init_local_config_with_workaround(char const * pcm_name) /* Don't clobber an explicit existing handle_underrun value, set it only if it doesn't already exist. */ - r = snd_config_search(pcm_node, "handle_underrun", &node); + r = WRAP(snd_config_search)(pcm_node, "handle_underrun", &node); if (r != -ENOENT) { break; } /* Disable pcm_pulse's asynchronous underrun handling. */ - r = snd_config_imake_integer(&node, "handle_underrun", 0); + r = WRAP(snd_config_imake_integer)(&node, "handle_underrun", 0); if (r < 0) { break; } - r = snd_config_add(pcm_node, node); + r = WRAP(snd_config_add)(pcm_node, node); if (r < 0) { break; } @@ -583,7 +630,7 @@ init_local_config_with_workaround(char const * pcm_name) return lconf; } while (0); - snd_config_delete(lconf); + WRAP(snd_config_delete)(lconf); return NULL; } @@ -595,9 +642,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, snd_pcm_stream_t stream, snd_config_t * l pthread_mutex_lock(&cubeb_alsa_mutex); if (local_config) { - r = snd_pcm_open_lconf(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config); + r = WRAP(snd_pcm_open_lconf)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK, local_config); } else { - r = snd_pcm_open(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK); + r = WRAP(snd_pcm_open)(pcm, CUBEB_ALSA_PCM_NAME, stream, SND_PCM_NONBLOCK); } pthread_mutex_unlock(&cubeb_alsa_mutex); @@ -610,7 +657,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm) int r; pthread_mutex_lock(&cubeb_alsa_mutex); - r = snd_pcm_close(pcm); + r = WRAP(snd_pcm_close)(pcm); pthread_mutex_unlock(&cubeb_alsa_mutex); return r; @@ -667,12 +714,65 @@ alsa_init(cubeb ** context, char const * context_name) pthread_attr_t attr; snd_pcm_t * dummy; + void * libasound = NULL; + +#ifndef DISABLE_LIBASOUND_DLOPEN + libasound = dlopen("libasound.so", RTLD_LAZY); + if (!libasound) { + return CUBEB_ERROR; + } + +#define LOAD(x) do { \ + cubeb_##x = dlsym(libasound, #x); \ + if (!cubeb_##x) { \ + dlclose(libasound); \ + return CUBEB_ERROR; \ + } \ + } while(0) + + LOAD(snd_config); + LOAD(snd_config_add); + LOAD(snd_config_copy); + LOAD(snd_config_delete); + LOAD(snd_config_get_id); + LOAD(snd_config_get_string); + LOAD(snd_config_imake_integer); + LOAD(snd_config_search); + LOAD(snd_config_search_definition); + LOAD(snd_lib_error_set_handler); + LOAD(snd_pcm_avail_update); + LOAD(snd_pcm_close); + LOAD(snd_pcm_delay); + LOAD(snd_pcm_drain); + LOAD(snd_pcm_frames_to_bytes); + LOAD(snd_pcm_get_params); + /* snd_pcm_hw_params_alloca is actually a macro */ + /* LOAD(snd_pcm_hw_params_alloca); */ + LOAD(snd_pcm_hw_params_sizeof); + LOAD(snd_pcm_hw_params_any); + LOAD(snd_pcm_hw_params_get_channels_max); + LOAD(snd_pcm_hw_params_get_rate); + LOAD(snd_pcm_hw_params_set_rate_near); + LOAD(snd_pcm_nonblock); + LOAD(snd_pcm_open); + LOAD(snd_pcm_open_lconf); + LOAD(snd_pcm_pause); + LOAD(snd_pcm_poll_descriptors); + LOAD(snd_pcm_poll_descriptors_count); + LOAD(snd_pcm_poll_descriptors_revents); + LOAD(snd_pcm_recover); + LOAD(snd_pcm_set_params); + LOAD(snd_pcm_state); + LOAD(snd_pcm_writei); + +#undef LOAD +#endif assert(context); *context = NULL; pthread_mutex_lock(&cubeb_alsa_mutex); if (!cubeb_alsa_error_handler_set) { - snd_lib_error_set_handler(silent_error_handler); + WRAP(snd_lib_error_set_handler)(silent_error_handler); cubeb_alsa_error_handler_set = 1; } pthread_mutex_unlock(&cubeb_alsa_mutex); @@ -680,6 +780,8 @@ alsa_init(cubeb ** context, char const * context_name) ctx = calloc(1, sizeof(*ctx)); assert(ctx); + ctx->libasound = libasound; + ctx->ops = &alsa_ops; r = pthread_mutex_init(&ctx->mutex, NULL); @@ -729,7 +831,7 @@ alsa_init(cubeb ** context, char const * context_name) config fails with EINVAL, the PA PCM is too old for this workaround. */ if (r == -EINVAL) { pthread_mutex_lock(&cubeb_alsa_mutex); - snd_config_delete(ctx->local_config); + WRAP(snd_config_delete)(ctx->local_config); pthread_mutex_unlock(&cubeb_alsa_mutex); ctx->local_config = NULL; } else if (r >= 0) { @@ -768,9 +870,13 @@ alsa_destroy(cubeb * ctx) pthread_mutex_destroy(&ctx->mutex); free(ctx->fds); + if (ctx->libasound) { + dlclose(ctx->libasound); + } + if (ctx->local_config) { pthread_mutex_lock(&cubeb_alsa_mutex); - snd_config_delete(ctx->local_config); + WRAP(snd_config_delete)(ctx->local_config); pthread_mutex_unlock(&cubeb_alsa_mutex); } @@ -838,7 +944,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stream ** stream, char const * stream_name, return CUBEB_ERROR; } - r = snd_pcm_nonblock(stm->pcm, 1); + r = WRAP(snd_pcm_nonblock)(stm->pcm, 1); assert(r == 0); - /* Ugly hack: the PA ALSA plugin allows buffer configurations that can't -@@ -859,7 +965,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stre - latency = latency < 500 ? 500 : latency; + latency_us = latency_frames * 1e6 / stm->params.rate; +@@ -855,7 +961,7 @@ alsa_stream_init(cubeb * ctx, cubeb_stre + latency_us = latency_us < min_latency ? min_latency: latency_us; } - r = snd_pcm_set_params(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED, + r = WRAP(snd_pcm_set_params)(stm->pcm, format, SND_PCM_ACCESS_RW_INTERLEAVED, stm->params.channels, stm->params.rate, 1, - latency * 1000); + latency_us); if (r < 0) { @@ -867,15 +973,15 @@ alsa_stream_init(cubeb * ctx, cubeb_stre return CUBEB_ERROR_INVALID_FORMAT; } - r = snd_pcm_get_params(stm->pcm, &stm->buffer_size, &period_size); + r = WRAP(snd_pcm_get_params)(stm->pcm, &stm->buffer_size, &period_size); assert(r == 0); - stm->nfds = snd_pcm_poll_descriptors_count(stm->pcm); + stm->nfds = WRAP(snd_pcm_poll_descriptors_count)(stm->pcm); assert(stm->nfds > 0); stm->saved_fds = calloc(stm->nfds, sizeof(struct pollfd)); assert(stm->saved_fds); - r = snd_pcm_poll_descriptors(stm->pcm, stm->saved_fds, stm->nfds); + r = WRAP(snd_pcm_poll_descriptors)(stm->pcm, stm->saved_fds, stm->nfds); assert((nfds_t) r == stm->nfds); r = pthread_cond_init(&stm->cond, NULL); @@ -895,7 +1001,7 @@ alsa_stream_destroy(cubeb_stream * stm) pthread_mutex_lock(&stm->mutex); if (stm->pcm) { if (stm->state == DRAINING) { - snd_pcm_drain(stm->pcm); + WRAP(snd_pcm_drain)(stm->pcm); } alsa_locked_pcm_close(stm->pcm); stm->pcm = NULL; @@ -938,12 +1044,12 @@ alsa_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) return CUBEB_ERROR; } - r = snd_pcm_hw_params_any(stm->pcm, hw_params); + r = WRAP(snd_pcm_hw_params_any)(stm->pcm, hw_params); if (r < 0) { return CUBEB_ERROR; } - r = snd_pcm_hw_params_get_channels_max(hw_params, max_channels); + r = WRAP(snd_pcm_hw_params_get_channels_max)(hw_params, max_channels); if (r < 0) { return CUBEB_ERROR; } -@@ -963,34 +1069,34 @@ alsa_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate) { +@@ -969,34 +1075,34 @@ alsa_get_preferred_sample_rate(cubeb * c /* get a pcm, disabling resampling, so we get a rate the * hardware/dmix/pulse/etc. supports. */ -- r = snd_pcm_open(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0); -+ r = WRAP(snd_pcm_open)(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK | SND_PCM_NO_AUTO_RESAMPLE, 0); +- r = snd_pcm_open(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK, SND_PCM_NO_AUTO_RESAMPLE); ++ r = WRAP(snd_pcm_open)(&pcm, CUBEB_ALSA_PCM_NAME, SND_PCM_STREAM_PLAYBACK, SND_PCM_NO_AUTO_RESAMPLE); if (r < 0) { return CUBEB_ERROR; } - r = snd_pcm_hw_params_any(pcm, hw_params); + r = WRAP(snd_pcm_hw_params_any)(pcm, hw_params); if (r < 0) { - snd_pcm_close(pcm); + WRAP(snd_pcm_close)(pcm); return CUBEB_ERROR; } - r = snd_pcm_hw_params_get_rate(hw_params, rate, &dir); + r = WRAP(snd_pcm_hw_params_get_rate)(hw_params, rate, &dir); if (r >= 0) { /* There is a default rate: use it. */ - snd_pcm_close(pcm); + WRAP(snd_pcm_close)(pcm); return CUBEB_OK; } /* Use a common rate, alsa may adjust it based on hw/etc. capabilities. */ *rate = 44100; - r = snd_pcm_hw_params_set_rate_near(pcm, hw_params, rate, NULL); + r = WRAP(snd_pcm_hw_params_set_rate_near)(pcm, hw_params, rate, NULL); if (r < 0) { - snd_pcm_close(pcm); + WRAP(snd_pcm_close)(pcm); return CUBEB_ERROR; } - snd_pcm_close(pcm); + WRAP(snd_pcm_close)(pcm); return CUBEB_OK; } @@ -1013,7 +1119,7 @@ alsa_stream_start(cubeb_stream * stm) ctx = stm->context; pthread_mutex_lock(&stm->mutex); - snd_pcm_pause(stm->pcm, 0); + WRAP(snd_pcm_pause)(stm->pcm, 0); gettimeofday(&stm->last_activity, NULL); pthread_mutex_unlock(&stm->mutex); @@ -1047,7 +1153,7 @@ alsa_stream_stop(cubeb_stream * stm) pthread_mutex_unlock(&ctx->mutex); pthread_mutex_lock(&stm->mutex); - snd_pcm_pause(stm->pcm, 1); + WRAP(snd_pcm_pause)(stm->pcm, 1); pthread_mutex_unlock(&stm->mutex); return CUBEB_OK; @@ -1063,8 +1169,8 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position) pthread_mutex_lock(&stm->mutex); delay = -1; - if (snd_pcm_state(stm->pcm) != SND_PCM_STATE_RUNNING || - snd_pcm_delay(stm->pcm, &delay) != 0) { + if (WRAP(snd_pcm_state)(stm->pcm) != SND_PCM_STATE_RUNNING || + WRAP(snd_pcm_delay)(stm->pcm, &delay) != 0) { *position = stm->last_position; pthread_mutex_unlock(&stm->mutex); return CUBEB_OK; @@ -1089,7 +1195,7 @@ alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency) snd_pcm_sframes_t delay; /* This function returns the delay in frames until a frame written using snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */ - if (snd_pcm_delay(stm->pcm, &delay)) { + if (WRAP(snd_pcm_delay)(stm->pcm, &delay)) { return CUBEB_ERROR; } diff --git media/libcubeb/src/cubeb_oss.c media/libcubeb/src/cubeb_oss.c new file mode 100644 index 0000000..5e38e27 --- /dev/null +++ mozilla/media/libcubeb/src/cubeb_oss.c @@ -0,0 +1,442 @@ +/* + * Copyright © 2014 Mozilla Foundation + * + * This program is made available under an ISC-style license. See the + * accompanying file LICENSE for details. + */ +#if defined(HAVE_SYS_SOUNDCARD_H) +#include +#else +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cubeb/cubeb.h" +#include "cubeb-internal.h" + +#ifndef CUBEB_OSS_DEFAULT_OUTPUT +#define CUBEB_OSS_DEFAULT_OUTPUT "/dev/dsp" +#endif + +#define OSS_BUFFER_SIZE 1024 + +struct cubeb { + struct cubeb_ops const * ops; +}; + +struct cubeb_stream { + cubeb * context; + + cubeb_data_callback data_callback; + cubeb_state_callback state_callback; + void * user_ptr; + float volume; + float panning; + + pthread_mutex_t state_mutex; + pthread_cond_t state_cond; + + int running; + int stopped; + int floating; + + /* These two vars are needed to support old versions of OSS */ + unsigned int position_bytes; + unsigned int last_position_bytes; + + uint64_t written_frags; /* The number of fragments written to /dev/dsp */ + uint64_t missed_frags; /* fragments output with stopped stream */ + + cubeb_stream_params params; + int fd; + pthread_t th; +}; + +static struct cubeb_ops const oss_ops; + +int oss_init(cubeb ** context, char const * context_name) +{ + cubeb* ctx = (cubeb*)malloc(sizeof(cubeb)); + ctx->ops = &oss_ops; + *context = ctx; + return CUBEB_OK; +} + +static void oss_destroy(cubeb *ctx) +{ + free(ctx); +} + +static char const * oss_get_backend_id(cubeb * context) +{ + static char oss_name[] = "oss"; + return oss_name; +} + +static int oss_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) +{ + *max_channels = 2; /* Let's support only stereo for now */ + return CUBEB_OK; +} + +static int oss_get_min_latency(cubeb * context, cubeb_stream_params params, + uint32_t * latency_ms) +{ + /* 40ms is a big enough number to work ok */ + *latency_ms = 40; + return CUBEB_OK; +} + +static int oss_get_preferred_sample_rate(cubeb *context, uint32_t * rate) +{ + /* 48000 seems a prefered choice for most audio devices + * and a good choice for OSS */ + *rate = 48000; + return CUBEB_OK; +} + +static void run_state_callback(cubeb_stream *stream, cubeb_state state) +{ + if (stream->state_callback) { + stream->state_callback(stream, stream->user_ptr, state); + } +} + +static long run_data_callback(cubeb_stream *stream, void *buffer, long nframes) +{ + long got = 0; + pthread_mutex_lock(&stream->state_mutex); + if (stream->data_callback && stream->running && !stream->stopped) { + pthread_mutex_unlock(&stream->state_mutex); + got = stream->data_callback(stream, stream->user_ptr, NULL, buffer, nframes); + } else { + pthread_mutex_unlock(&stream->state_mutex); + } + return got; +} + +static void apply_volume_int(int16_t* buffer, unsigned int n, + float volume, float panning) +{ + float left = volume; + float right = volume; + unsigned int i; + int pan[2]; + if (panning<0) { + right *= (1+panning); + } else { + left *= (1-panning); + } + pan[0] = 128.0*left; + pan[1] = 128.0*right; + for(i=0; irunning) { + pthread_mutex_lock(&stream->state_mutex); + if (stream->stopped) { + pthread_mutex_unlock(&stream->state_mutex); + run_state_callback(stream, CUBEB_STATE_STOPPED); + pthread_mutex_lock(&stream->state_mutex); + while (stream->stopped) { + pthread_cond_wait(&stream->state_cond, &stream->state_mutex); + } + pthread_mutex_unlock(&stream->state_mutex); + run_state_callback(stream, CUBEB_STATE_STARTED); + continue; + } + pthread_mutex_unlock(&stream->state_mutex); + if (stream->floating) { + got = run_data_callback(stream, f_buffer, + OSS_BUFFER_SIZE/stream->params.channels); + apply_volume_float(f_buffer, got*stream->params.channels, + stream->volume, stream->panning); + for (i=0; i<((unsigned long)got)*stream->params.channels; i++) { + /* Clipping is prefered to overflow */ + if(f_buffer[i]>=1.0){ + f_buffer[i]=1.0; + } + if(f_buffer[i]<=-1.0){ + f_buffer[i]=-1.0; + } + /* One might think that multipling by 32767.0 is logical but results in clipping */ + buffer[i] = f_buffer[i]*32767.0; + } + } else { + got = run_data_callback(stream, buffer, + OSS_BUFFER_SIZE/stream->params.channels); + apply_volume_int(buffer, got*stream->params.channels, + stream->volume, stream->panning); + } + if (got<0) { + run_state_callback(stream, CUBEB_STATE_ERROR); + break; + } + if (!got) { + run_state_callback(stream, CUBEB_STATE_DRAINED); + } + if (got) { + size_t i = 0; + size_t s = got*stream->params.channels*sizeof(int16_t); + while (i < s) { + ssize_t n = write(stream->fd, ((char*)buffer) + i, s - i); + if (n<=0) { + run_state_callback(stream, CUBEB_STATE_ERROR); + break; + } + i+=n; + } + stream->written_frags+=got; + } + } + return NULL; +} + +static void oss_try_set_latency(cubeb_stream* stream, unsigned int latency) +{ + unsigned int latency_bytes, n_frag; + int frag; + /* fragment size of 1024 is a good choice with good chances to be accepted */ + unsigned int frag_size=1024; + unsigned int frag_log=10; /* 2^frag_log = frag_size */ + latency_bytes = + latency*stream->params.rate*stream->params.channels*sizeof(uint16_t)/1000; + n_frag = latency_bytes>>frag_log; + frag = (n_frag<<16) | frag_log; + /* Even if this fails we wish to continue, not checking for errors */ + ioctl(stream->fd, SNDCTL_DSP_SETFRAGMENT, &frag); +} + +static int oss_stream_init(cubeb * context, cubeb_stream ** stm, + char const * stream_name, + cubeb_devid input_device, + cubeb_stream_params * input_stream_params, + cubeb_devid output_device, + cubeb_stream_params * output_stream_params, + unsigned int latency, + cubeb_data_callback data_callback, + cubeb_state_callback state_callback, void * user_ptr) +{ + cubeb_stream* stream = (cubeb_stream*)malloc(sizeof(cubeb_stream)); + stream->context = context; + stream->data_callback = data_callback; + stream->state_callback = state_callback; + stream->user_ptr = user_ptr; + + assert(!input_stream_params && "not supported."); + if (input_device || output_device) { + /* Device selection not yet implemented. */ + return CUBEB_ERROR_DEVICE_UNAVAILABLE; + } + + if ((stream->fd = open(CUBEB_OSS_DEFAULT_OUTPUT, O_WRONLY)) == -1) { + free(stream); + return CUBEB_ERROR; + } +#define SET(what, to) do { unsigned int i = to; \ + int j = ioctl(stream->fd, what, &i); \ + if (j == -1 || i != to) { \ + close(stream->fd); \ + free(stream); \ + return CUBEB_ERROR_INVALID_FORMAT; } } while (0) + + stream->params = *output_stream_params; + stream->volume = 1.0; + stream->panning = 0.0; + + oss_try_set_latency(stream, latency); + + stream->floating = 0; + SET(SNDCTL_DSP_CHANNELS, stream->params.channels); + SET(SNDCTL_DSP_SPEED, stream->params.rate); + switch (stream->params.format) { + case CUBEB_SAMPLE_S16LE: + SET(SNDCTL_DSP_SETFMT, AFMT_S16_LE); + break; + case CUBEB_SAMPLE_S16BE: + SET(SNDCTL_DSP_SETFMT, AFMT_S16_BE); + break; + case CUBEB_SAMPLE_FLOAT32LE: + SET(SNDCTL_DSP_SETFMT, AFMT_S16_NE); + stream->floating = 1; + break; + default: + close(stream->fd); + free(stream); + return CUBEB_ERROR; + } + + + pthread_mutex_init(&stream->state_mutex, NULL); + pthread_cond_init(&stream->state_cond, NULL); + + stream->running = 1; + stream->stopped = 1; + stream->position_bytes = 0; + stream->last_position_bytes = 0; + stream->written_frags = 0; + stream->missed_frags = 0; + + pthread_create(&stream->th, NULL, writer, (void*)stream); + + *stm = stream; + + return CUBEB_OK; +} + +static void oss_stream_destroy(cubeb_stream * stream) +{ + pthread_mutex_lock(&stream->state_mutex); + + stream->running = 0; + stream->stopped = 0; + pthread_cond_signal(&stream->state_cond); + + pthread_mutex_unlock(&stream->state_mutex); + + pthread_join(stream->th, NULL); + + pthread_mutex_destroy(&stream->state_mutex); + pthread_cond_destroy(&stream->state_cond); + close(stream->fd); + free(stream); +} + +static int oss_stream_get_latency(cubeb_stream * stream, uint32_t * latency) +{ + if (ioctl(stream->fd, SNDCTL_DSP_GETODELAY, latency)==-1) { + return CUBEB_ERROR; + } + /* Convert latency from bytes to frames */ + *latency /= stream->params.channels*sizeof(int16_t); + return CUBEB_OK; +} + + +static int oss_stream_current_optr(cubeb_stream * stream, uint64_t * position) +{ + count_info ci; + /* Unfortunately, this ioctl is only available in OSS 4.x */ +#ifdef SNDCTL_DSP_CURRENT_OPTR + oss_count_t count; + if (ioctl(stream->fd, SNDCTL_DSP_CURRENT_OPTR, &count) != -1) { + *position = count.samples;// + count.fifo_samples; + return CUBEB_OK; + } +#endif + /* Fall back to this ioctl in case the previous one fails */ + if (ioctl(stream->fd, SNDCTL_DSP_GETOPTR, &ci) == -1) { + return CUBEB_ERROR; + } + /* ci.bytes is only 32 bit and will start to wrap after arithmetic overflow */ + stream->position_bytes += ci.bytes - stream->last_position_bytes; + stream->last_position_bytes = ci.bytes; + *position = stream->position_bytes/stream->params.channels/sizeof(int16_t); + return CUBEB_OK; +} + +static int oss_stream_get_position(cubeb_stream * stream, uint64_t * position) +{ + if ( oss_stream_current_optr(stream, position) == CUBEB_OK ){ + *position -= stream->missed_frags; + return CUBEB_OK; + } + /* If no correct method to get position works we resort to this */ + *position = stream->written_frags; + return CUBEB_OK; +} + + +static int oss_stream_start(cubeb_stream * stream) +{ + pthread_mutex_lock(&stream->state_mutex); + if (stream->stopped) { + uint64_t ptr; + oss_stream_current_optr(stream, &ptr); + stream->missed_frags = ptr - stream->written_frags; + stream->stopped = 0; + pthread_cond_signal(&stream->state_cond); + } + pthread_mutex_unlock(&stream->state_mutex); + return CUBEB_OK; +} + +static int oss_stream_stop(cubeb_stream * stream) +{ + pthread_mutex_lock(&stream->state_mutex); + stream->stopped = 1; + pthread_mutex_unlock(&stream->state_mutex); + return CUBEB_OK; +} + +int oss_stream_set_panning(cubeb_stream * stream, float panning) +{ + if (stream->params.channels == 2) { + stream->panning=panning; + } + return CUBEB_OK; +} + +int oss_stream_set_volume(cubeb_stream * stream, float volume) +{ + stream->volume=volume; + return CUBEB_OK; +} + +static struct cubeb_ops const oss_ops = { + .init = oss_init, + .get_backend_id = oss_get_backend_id, + .get_max_channel_count = oss_get_max_channel_count, + .get_min_latency = oss_get_min_latency, + .get_preferred_sample_rate = oss_get_preferred_sample_rate, + .destroy = oss_destroy, + .stream_init = oss_stream_init, + .stream_destroy = oss_stream_destroy, + .stream_start = oss_stream_start, + .stream_stop = oss_stream_stop, + .stream_get_position = oss_stream_get_position, + .stream_get_latency = oss_stream_get_latency, + .stream_set_volume = oss_stream_set_volume, + .stream_set_panning = oss_stream_set_panning, + .stream_get_current_device = NULL, + .stream_device_destroy = NULL, + .stream_register_device_changed_callback = NULL +}; diff --git media/libcubeb/src/moz.build media/libcubeb/src/moz.build index 8b7a0dd..31212ce 100644 --- mozilla/media/libcubeb/src/moz.build +++ mozilla/media/libcubeb/src/moz.build @@ -17,6 +17,12 @@ if CONFIG['MOZ_ALSA']: ] DEFINES['USE_ALSA'] = True +if CONFIG['MOZ_OSS']: + SOURCES += [ + 'cubeb_oss.c', + ] + DEFINES['USE_OSS'] = True + if CONFIG['MOZ_PULSEAUDIO']: SOURCES += [ 'cubeb_pulse.c', @@ -75,5 +81,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': FAIL_ON_WARNINGS = True +CFLAGS += CONFIG['MOZ_OSS_CFLAGS'] CFLAGS += CONFIG['MOZ_ALSA_CFLAGS'] CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS'] diff --git media/libcubeb/tests/moz.build media/libcubeb/tests/moz.build index 1b17c7b..48b56c2 100644 --- mozilla/media/libcubeb/tests/moz.build +++ mozilla/media/libcubeb/tests/moz.build @@ -73,7 +73,6 @@ elif CONFIG['OS_TARGET'] == 'OpenBSD': 'sndio', ] else: - OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] OS_LIBS += CONFIG['MOZ_PULSEAUDIO_LIBS'] if CONFIG['GNU_CXX']: diff --git media/libcubeb/update.sh media/libcubeb/update.sh index a96badd..2f9585e 100755 --- mozilla/media/libcubeb/update.sh +++ mozilla/media/libcubeb/update.sh -@@ -10,6 +10,7 @@ cp $1/src/cubeb_audiounit.c src - cp $1/src/cubeb_pulse.c src - cp $1/src/cubeb_sndio.c src +@@ -16,6 +16,7 @@ cp $1/src/cubeb_audiounit.cpp src + cp $1/src/cubeb_osx_run_loop.h src + cp $1/src/cubeb_jack.cpp src cp $1/src/cubeb_opensl.c src +cp $1/src/cubeb_oss.c src - cp $1/src/cubeb_audiotrack.c src - cp $1/src/cubeb_wasapi.cpp src - cp $1/src/cubeb_resampler.h src + cp $1/src/cubeb_panner.cpp src + cp $1/src/cubeb_panner.h src + cp $1/src/cubeb_pulse.c src diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build index 991f03f..3d99eb5 100644 --- mozilla/media/webrtc/signaling/test/common.build +++ mozilla/media/webrtc/signaling/test/common.build @@ -102,8 +102,8 @@ USE_LIBS += ['mozglue'] OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS'] OS_LIBS += CONFIG['REALTIME_LIBS'] -if CONFIG['MOZ_ALSA']: - OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] +if CONFIG['MOZ_OSS']: + OS_LIBS += CONFIG['MOZ_OSS_LIBS'] if CONFIG['MOZ_SYSTEM_JPEG']: OS_LIBS += CONFIG['MOZ_JPEG_LIBS'] diff --git toolkit/library/moz.build toolkit/library/moz.build index e191f13..4fb268a 100644 --- mozilla/toolkit/library/moz.build +++ mozilla/toolkit/library/moz.build @@ -234,8 +234,8 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']: if not CONFIG['MOZ_TREE_PIXMAN']: OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] -if CONFIG['MOZ_ALSA']: - OS_LIBS += CONFIG['MOZ_ALSA_LIBS'] +if CONFIG['MOZ_OSS']: + OS_LIBS += CONFIG['MOZ_OSS_LIBS'] if CONFIG['HAVE_CLOCK_MONOTONIC']: OS_LIBS += CONFIG['REALTIME_LIBS'] Index: branches/2017Q3/www/seamonkey/files/patch-bug1142056 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1142056 (nonexistent) +++ branches/2017Q3/www/seamonkey/files/patch-bug1142056 (revision 447217) @@ -0,0 +1,64 @@ +commit ef0d953d9e2d +Author: Makoto Kato +Date: Tue Aug 23 16:54:06 2016 +0900 + + Bug 1142056 - Add aarch64 configuration on Skia's moz.build. r=gw280 + + MozReview-Commit-ID: 60iAZjFg6W6 + + --HG-- + extra : histedit_source : b3bb5a3e556393ba49f43dc4ab8bdaa9be40fb0c +--- + gfx/skia/generate_mozbuild.py | 6 ++++-- + gfx/skia/moz.build | 12 ++++++++++-- + 2 files changed, 14 insertions(+), 4 deletions(-) + +diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py +index 2088b729d476..1eb04c1d7f57 100755 +--- mozilla/gfx/skia/generate_mozbuild.py ++++ mozilla/gfx/skia/generate_mozbuild.py +@@ -429,10 +429,12 @@ def write_mozbuild(sources): + f.write("if CONFIG['INTEL_ARCHITECTURE']:\n") + write_sources(f, sources['intel'], 4) + +- f.write("elif CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']:\n") ++ f.write("elif CONFIG['CPU_ARCH'] in ('arm', 'aarch64') and CONFIG['GNU_CC']:\n") + write_sources(f, sources['arm'], 4) + +- f.write(" if CONFIG['BUILD_ARM_NEON']:\n") ++ f.write(" if CONFIG['CPU_ARCH'] == 'aarch64':\n") ++ write_sources(f, sources['neon'], 8) ++ f.write(" elif CONFIG['BUILD_ARM_NEON']:\n") + write_list(f, 'SOURCES', sources['neon'], 8) + write_cflags(f, sources['neon'], 'neon', "CONFIG['NEON_FLAGS']", 8) + +diff --git gfx/skia/moz.build gfx/skia/moz.build +index b33f1cdbee54..9dba87978dd3 100644 +--- mozilla/gfx/skia/moz.build ++++ mozilla/gfx/skia/moz.build +@@ -519,7 +519,7 @@ if CONFIG['INTEL_ARCHITECTURE']: + 'skia/src/opts/SkOpts_sse41.cpp', + 'skia/src/opts/SkOpts_ssse3.cpp', + ] +-elif CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']: ++elif CONFIG['CPU_ARCH'] in ('arm', 'aarch64') and CONFIG['GNU_CC']: + UNIFIED_SOURCES += [ + 'skia/src/core/SkUtilsArm.cpp', + 'skia/src/opts/SkBitmapProcState_opts_arm.cpp', +@@ -528,7 +528,15 @@ elif CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']: + SOURCES += [ + 'skia/src/opts/SkBlitRow_opts_arm.cpp', + ] +- if CONFIG['BUILD_ARM_NEON']: ++ if CONFIG['CPU_ARCH'] == 'aarch64': ++ SOURCES += [ ++ 'skia/src/opts/SkBitmapProcState_arm_neon.cpp', ++ 'skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp', ++ 'skia/src/opts/SkBlitMask_opts_arm_neon.cpp', ++ 'skia/src/opts/SkBlitRow_opts_arm_neon.cpp', ++ 'skia/src/opts/SkOpts_neon.cpp', ++ ] ++ elif CONFIG['BUILD_ARM_NEON']: + SOURCES += [ + 'skia/src/opts/SkBitmapProcState_arm_neon.cpp', + 'skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp', Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1142056 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug1316879 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug1316879 (nonexistent) +++ branches/2017Q3/www/seamonkey/files/patch-bug1316879 (revision 447217) @@ -0,0 +1,13 @@ +Don't use CPP/CXXCPP from environment after bug 1299919. r=glandium, a=jcristau + +diff --git build/buildconfig.py build/buildconfig.py +index bb12114b2f4a..e73903a1a981 100644 +--- mozilla/build/buildconfig.py ++++ mozilla/build/buildconfig.py +@@ -16,5 +16,5 @@ for var in ('topsrcdir', 'topobjdir', 'defines', 'non_global_defines', + substs = dict(substs) + + for var in os.environ: +- if var != 'SHELL' and var in substs: ++ if var not in ('CPP', 'CXXCPP', 'SHELL') and var in substs: + substs[var] = os.environ[var] Property changes on: branches/2017Q3/www/seamonkey/files/patch-bug1316879 ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-bug826985 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug826985 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug826985 (revision 447217) @@ -1,179 +1,179 @@ commit 8024d93 Author: Henrik Gulbrandsen Date: Fri Jan 4 13:49:22 2013 +0100 Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux. --- config/system-headers | 1 + old-configure.in | 7 +++++++ media/webrtc/signaling/test/Makefile.in | 1 + .../modules/video_capture/linux/device_info_linux.cc | 17 +++++++++++++++++ .../modules/video_capture/linux/video_capture_linux.cc | 16 +++++++++++++++- .../webrtc/modules/video_capture/video_capture.gypi | 11 +++++++++++ toolkit/library/Makefile.in | 1 + 6 files changed, 52 insertions(+), 1 deletion(-) diff --git config/system-headers config/system-headers index 55e4cd1..76567b3 100644 --- mozilla/config/system-headers +++ mozilla/config/system-headers -@@ -629,6 +629,7 @@ libgnome/libgnome.h +@@ -624,6 +624,7 @@ libgnome/libgnome.h libgnomeui/gnome-icon-lookup.h libgnomeui/gnome-icon-theme.h libgnomeui/gnome-ui-init.h +libv4l2.h - limits limits.h link.h + #ifdef ANDROID diff --git old-configure.in configure.in index 55e4cd1..76567b3 100644 --- mozilla/old-configure.in +++ mozilla/old-configure.in @@ -5309,6 +5309,9 @@ if test -n "$MOZ_WEBRTC"; then MOZ_VP8_ENCODER=1 MOZ_VP8_ERROR_CONCEALMENT=1 + dnl with libv4l2 we can support more cameras + PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2) + dnl enable once Signaling lands MOZ_WEBRTC_SIGNALING=1 AC_DEFINE(MOZ_WEBRTC_SIGNALING) diff --git build/gyp.mozbuild build/gyp.mozbuild index b483cd1..f1dd1f0 100644 --- mozilla/build/gyp.mozbuild +++ mozilla/build/gyp.mozbuild @@ -11,6 +11,7 @@ gyp_vars = { 'have_ethtool_cmd_speed_hi': 1 if CONFIG['MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI'] else 0, 'include_alsa_audio': 1 if CONFIG['MOZ_ALSA'] else 0, 'include_pulse_audio': 1 if CONFIG['MOZ_PULSEAUDIO'] else 0, + 'use_libv4l2': 1 if CONFIG['MOZ_LIBV4L2_LIBS'] else 0, # basic stuff for everything 'include_internal_video_render': 0, 'clang_use_chrome_plugins': 0, diff --git media/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build index b483cd1..f1dd1f0 100644 --- mozilla/media/webrtc/signaling/test/common.build +++ mozilla/media/webrtc/signaling/test/common.build @@ -99,6 +99,7 @@ if CONFIG['JS_SHARED_LIBRARY']: USE_LIBS += ['mozglue'] +OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS'] OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS'] OS_LIBS += CONFIG['REALTIME_LIBS'] diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc index 239a292..bab496c 100644 --- mozilla/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc +++ mozilla/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc @@ -25,10 +25,21 @@ #else #include #endif +#ifdef HAVE_LIBV4L2 +#include +#endif #include "webrtc/system_wrappers/interface/ref_count.h" #include "webrtc/system_wrappers/interface/trace.h" +#ifdef HAVE_LIBV4L2 +#define open v4l2_open +#define close v4l2_close +#define dup v4l2_dup +#define ioctl v4l2_ioctl +#define mmap v4l2_mmap +#define munmap v4l2_munmap +#endif namespace webrtc { @@ -130,6 +142,11 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName( memset(deviceNameUTF8, 0, deviceNameLength); memcpy(cameraName, cap.card, sizeof(cap.card)); + if (cameraName[0] == '\0') + { + sprintf(cameraName, "Camera at /dev/video%d", deviceNumber); + } + if (deviceNameLength >= strlen(cameraName)) { memcpy(deviceNameUTF8, cameraName, strlen(cameraName)); diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc index 12df1b3..e9863ba 100644 --- mozilla/media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc +++ mozilla/media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc @@ -25,6 +25,9 @@ #else #include #endif +#ifdef HAVE_LIBV4L2 +#include +#endif #include @@ -26,6 +31,15 @@ #include "critical_section_wrapper.h" #include "video_capture_linux.h" +#ifdef HAVE_LIBV4L2 +#define open v4l2_open +#define close v4l2_close +#define dup v4l2_dup +#define ioctl v4l2_ioctl +#define mmap v4l2_mmap +#define munmap v4l2_munmap +#endif + namespace webrtc { namespace videocapturemodule diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi index d46b5aa..e452223 100644 --- mozilla/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi +++ mozilla/media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi @@ -7,6 +7,9 @@ # be found in the AUTHORS file in the root of the source tree. { + 'variables': { + 'use_libv4l2%': 0, + }, 'targets': [ { 'target_name': 'video_capture_module', @@ -75,6 +78,19 @@ 'linux/video_capture_linux.cc', 'linux/video_capture_linux.h', ], + 'conditions': [ + ['use_libv4l2==1', { + 'defines': [ + 'HAVE_LIBV4L2', + ], + 'cflags_mozilla': [ + '$(MOZ_LIBV4L2_CFLAGS)', + ], + 'libraries': [ + '-lv4l2', + ], + }], + ], }], # linux ['OS=="mac"', { 'sources': [ diff --git toolkit/library/moz.build toolkit/library/moz.build index 9c16ffa..1db3794 100644 --- mozilla/toolkit/library/moz.build +++ mozilla/toolkit/library/moz.build @@ -163,6 +163,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF ] OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS'] +OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS'] OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS'] OS_LIBS += CONFIG['MOZ_APP_EXTRA_LIBS'] Index: branches/2017Q3/www/seamonkey/files/patch-bug847568 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-bug847568 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-bug847568 (revision 447217) @@ -1,271 +1,272 @@ # Allow building against system-wide graphite2/harfbuzz. -diff --git build/moz.configure/old.configure build/moz.configure/old.configure -index 4cbefd5..42ab554 100644 ---- mozilla/build/moz.configure/old.configure -+++ mozilla/build/moz.configure/old.configure -@@ -312,6 +312,8 @@ def old_configure_options(*options): - '--with-sixgill', - '--with-soft-float', - '--with-system-bz2', -+ '--with-system-graphite2', -+ '--with-system-harfbuzz', - '--with-system-icu', - '--with-system-jpeg', - '--with-system-libevent', diff --git config/Makefile.in config/Makefile.in -index 14bfc0d..5383399 100644 +index 10807cf..f4b8587 100644 --- mozilla/config/Makefile.in +++ mozilla/config/Makefile.in @@ -49,6 +49,8 @@ export:: $(export-preqs) -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \ -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \ -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \ + -DMOZ_SYSTEM_GRAPHITE2=$(MOZ_SYSTEM_GRAPHITE2) \ + -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \ - $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers + $(srcdir)/system-headers $(srcdir)/stl-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers $(INSTALL) system_wrappers $(DIST) diff --git config/system-headers config/system-headers -index 18e8703..bdc5f82 100644 +index 48afa0f..61612f6 100644 --- mozilla/config/system-headers +++ mozilla/config/system-headers -@@ -1344,3 +1344,12 @@ unicode/utypes.h +@@ -1331,3 +1331,12 @@ unicode/utypes.h #endif libutil.h unwind.h +#if MOZ_SYSTEM_GRAPHITE2==1 +graphite2/Font.h +graphite2/Segment.h +#endif +#if MOZ_SYSTEM_HARFBUZZ==1 +harfbuzz/hb-glib.h +harfbuzz/hb-ot.h +harfbuzz/hb.h +#endif -diff --git old-configure.in configure.in -index ac38f40..87536b7 100644 ---- mozilla/old-configure.in -+++ mozilla/old-configure.in -@@ -7989,6 +7989,49 @@ if test "$USE_FC_FREETYPE"; then - fi - - dnl ======================================================== -+dnl Check for harfbuzz -+dnl ======================================================== -+ -+MOZ_ARG_WITH_BOOL(system-harfbuzz, -+[ --with-system-harfbuzz Use system harfbuzz (located with pkgconfig)], -+MOZ_SYSTEM_HARFBUZZ=1, -+MOZ_SYSTEM_HARFBUZZ=) -+ -+if test -n "$MOZ_SYSTEM_HARFBUZZ"; then -+ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 1.2.6) -+fi -+ -+AC_SUBST(MOZ_SYSTEM_HARFBUZZ) -+ -+dnl ======================================================== -+dnl Check for graphite2 -+dnl ======================================================== -+ -+MOZ_ARG_WITH_BOOL(system-graphite2, -+[ --with-system-graphite2 Use system graphite2 (located with pkgconfig)], -+MOZ_SYSTEM_GRAPHITE2=1, -+MOZ_SYSTEM_GRAPHITE2=) -+ -+if test -n "$MOZ_SYSTEM_GRAPHITE2"; then -+ PKG_CHECK_MODULES(MOZ_GRAPHITE2, graphite2) -+ -+ dnl graphite2.pc has bogus version, check manually -+ AC_TRY_COMPILE([ #include -+ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ -+ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ -+ * 100 + GR2_VERSION_BUGFIX >= \ -+ (major) * 10000 + (minor) * 100 + (bugfix) ) -+ ], [ -+ #if !GR2_VERSION_REQUIRE(1,3,8) -+ #error "Insufficient graphite2 version." -+ #endif -+ ], [], -+ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) -+fi -+ -+AC_SUBST(MOZ_SYSTEM_GRAPHITE2) -+ -+dnl ======================================================== - dnl Check for pixman and cairo - dnl ======================================================== - diff --git dom/base/moz.build dom/base/moz.build -index a660ba4..6b2f602 100644 +index 6e0d4f5..0770717 100644 --- mozilla/dom/base/moz.build +++ mozilla/dom/base/moz.build -@@ -397,6 +397,9 @@ if CONFIG['INTEL_ARCHITECTURE']: - SOURCES += ['nsTextFragmentSSE2.cpp'] - SOURCES['nsTextFragmentSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] +@@ -457,6 +457,9 @@ if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']: + if CONFIG['MOZ_X11']: + CXXFLAGS += CONFIG['TK_CFLAGS'] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: -+ SOURCES['nsContentUtils.cpp'].flags += CONFIG['MOZ_HARFBUZZ_CFLAGS'] ++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + - EXTRA_COMPONENTS += [ - 'ConsoleAPI.manifest', - 'ConsoleAPIStorage.js', + GENERATED_FILES += [ + 'PropertyUseCounterMap.inc', + 'UseCounterList.h', diff --git gfx/graphite2/moz-gr-update.sh gfx/graphite2/moz-gr-update.sh -index f3d76ea..a9e7fb6 100644 +index faaab1b..04eff5f 100644 --- mozilla/gfx/graphite2/moz-gr-update.sh +++ mozilla/gfx/graphite2/moz-gr-update.sh @@ -1,6 +1,7 @@ #!/bin/bash # Script used to update the Graphite2 library in the mozilla source tree +# and bump version for --with-system-graphite2 # This script lives in gfx/graphite2, along with the library source, # but must be run from the top level of the mozilla-central tree. -@@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >> +@@ -37,12 +38,16 @@ echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e "s///;s/Windows.h/windows.h/;" {} \; +# chase version for --with-system-graphite2 +perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \ + if /GR2_VERSION_REQUIRE/" old-configure.in + # summarize what's been touched echo Updated to $RELEASE. echo Here is what changed in the gfx/graphite2 directory: echo -hg stat gfx/graphite2 +hg stat old-configure.in gfx/graphite2 echo echo If gfx/graphite2/src/files.mk has changed, please make corresponding diff --git gfx/harfbuzz/README-mozilla gfx/harfbuzz/README-mozilla -index ca57d16..1ce21fe 100644 +index 24e6cbb..0b7a5df 100644 --- mozilla/gfx/harfbuzz/README-mozilla +++ mozilla/gfx/harfbuzz/README-mozilla -@@ -18,3 +18,8 @@ the mozilla tree. - In addition, the src/Makefile.in file here is NOT from upstream, nor is it - generated from src/Makefile.am (the original harfbuzz version); it is a mozilla- - specific makefile that is maintained by hand. +@@ -20,3 +20,8 @@ the mozilla tree. + + If the collection of source files changes, manual updates to moz.build may be + needed, as we don't use the upstream makefiles. + +The in-tree copy may be omitted during build by --with-system-harfbuzz. +Make sure to keep pkg-config version check within old-configure.in in sync +with checkout version or increment latest tag by one if it's not based +on upstream release. diff --git gfx/moz.build gfx/moz.build -index 519aa46..6929751 100644 +index 2509198..5cc4663 100644 --- mozilla/gfx/moz.build +++ mozilla/gfx/moz.build @@ -7,6 +7,12 @@ if CONFIG['MOZ_TREE_CAIRO']: DIRS += ['cairo'] +if not CONFIG['MOZ_SYSTEM_GRAPHITE2']: + DIRS += ['graphite2/src' ] + +if not CONFIG['MOZ_SYSTEM_HARFBUZZ']: + DIRS += ['harfbuzz/src'] + DIRS += [ '2d', 'ycbcr', @@ -15,8 +21,6 @@ DIRS += [ 'qcms', 'gl', 'layers', - 'graphite2/src', - 'harfbuzz/src', 'ots/src', 'thebes', 'ipc', diff --git gfx/skia/generate_mozbuild.py gfx/skia/generate_mozbuild.py -index 28fa6b5..240dced 100755 +index ab1365f..8897c27 100755 --- mozilla/gfx/skia/generate_mozbuild.py +++ mozilla/gfx/skia/generate_mozbuild.py -@@ -134,6 +134,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_ +@@ -140,6 +140,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: '-Wno-unused-private-field', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'): + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] diff --git gfx/skia/moz.build gfx/skia/moz.build -index 1d0c2f9..adb8941 100644 +index a2f914b..d3759b0 100644 --- mozilla/gfx/skia/moz.build +++ mozilla/gfx/skia/moz.build -@@ -752,6 +752,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_ +@@ -664,6 +664,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: '-Wno-unused-private-field', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + - if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'): + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] diff --git gfx/thebes/moz.build gfx/thebes/moz.build -index d5852fa..aeeab25 100644 +index bbbce6fd..db0ceb1 100644 --- mozilla/gfx/thebes/moz.build +++ mozilla/gfx/thebes/moz.build -@@ -306,7 +306,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk +@@ -289,7 +289,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] -DEFINES['GRAPHITE2_STATIC'] = True +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + +if CONFIG['MOZ_SYSTEM_GRAPHITE2']: + CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS'] +else: + DEFINES['GRAPHITE2_STATIC'] = True if CONFIG['CLANG_CXX']: # Suppress warnings from Skia header files. -index d736943..41a931f 100644 +diff --git intl/unicharutil/util/moz.build intl/unicharutil/util/moz.build +index 9754753..768cc7d 100644 --- mozilla/intl/unicharutil/util/moz.build +++ mozilla/intl/unicharutil/util/moz.build -@@ -44,4 +44,7 @@ if CONFIG['ENABLE_INTL_API']: - LOCAL_INCLUDES += CONFIG['MOZ_ICU_INCLUDES'] +@@ -42,4 +42,7 @@ if CONFIG['_MSC_VER']: + if CONFIG['ENABLE_INTL_API']: USE_LIBS += ['icu'] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + DIST_INSTALL = True +diff --git moz.configure moz.configure +index e762576..196dafd 100644 +--- mozilla/moz.configure ++++ mozilla/moz.configure +@@ -216,6 +216,30 @@ check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'), + check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'), + allow_missing=True) + ++option('--with-system-graphite2', ++ help="Use system graphite2 (located with pkgconfig)") ++ ++@depends('--with-system-graphite2', compile_environment) ++def check_for_graphite2(value, compile_env): ++ return value and compile_env ++ ++system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2', ++ check_for_graphite2) ++ ++set_config('MOZ_SYSTEM_GRAPHITE2', system_graphite2) ++ ++option('--with-system-harfbuzz', ++ help="Use system harfbuzz (located with pkgconfig)") ++ ++@depends('--with-system-harfbuzz', compile_environment) ++def check_for_harfbuzz(value, compile_env): ++ return value and compile_env ++ ++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.3.0', ++ check_for_harfbuzz) ++ ++set_config('MOZ_SYSTEM_HARFBUZZ', system_harfbuzz) ++ + option('--enable-system-hunspell', + help="Use system hunspell (located with pkgconfig)") + diff --git netwerk/dns/moz.build netwerk/dns/moz.build -index 0b0717a..2e665c9 100644 +index f788d9a..5662301 100644 --- mozilla/netwerk/dns/moz.build +++ mozilla/netwerk/dns/moz.build @@ -66,6 +66,9 @@ LOCAL_INCLUDES += [ '/netwerk/base', ] +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] > '19': - LOCAL_INCLUDES += ['%' + '%s/bionic/libc/dns/include' % CONFIG['ANDROID_SOURCE']] + if CONFIG['ENABLE_INTL_API']: + DEFINES['IDNA2008'] = True + USE_LIBS += ['icu'] +diff --git old-configure.in old-configure.in +index 0070d48..9d1129f 100644 +--- mozilla/old-configure.in ++++ mozilla/old-configure.in +@@ -5764,6 +5764,27 @@ if test "$USE_FC_FREETYPE"; then + fi + dnl ======================================================== ++dnl Check for graphite2 ++dnl ======================================================== ++if test -n "$MOZ_SYSTEM_GRAPHITE2"; then ++ dnl graphite2.pc has bogus version, check manually ++ _SAVE_CFLAGS=$CFLAGS ++ CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS" ++ AC_TRY_COMPILE([ #include ++ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \ ++ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \ ++ * 100 + GR2_VERSION_BUGFIX >= \ ++ (major) * 10000 + (minor) * 100 + (bugfix) ) ++ ], [ ++ #if !GR2_VERSION_REQUIRE(1,3,8) ++ #error "Insufficient graphite2 version." ++ #endif ++ ], [], ++ [AC_MSG_ERROR([--with-system-graphite2 requested but no working libgraphite2 found])]) ++ CFLAGS=$_SAVE_CFLAGS ++fi ++ ++dnl ======================================================== + dnl Check for pixman and cairo + dnl ======================================================== + diff --git toolkit/library/moz.build toolkit/library/moz.build -index 67f0db9..d42137a 100644 +index a3d5450..2c684a7e 100644 --- mozilla/toolkit/library/moz.build +++ mozilla/toolkit/library/moz.build -@@ -231,6 +231,12 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']: - if not CONFIG['MOZ_TREE_PIXMAN']: - OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] +@@ -217,6 +217,12 @@ if CONFIG['MOZ_SYSTEM_JPEG']: + if CONFIG['MOZ_SYSTEM_PNG']: + OS_LIBS += CONFIG['MOZ_PNG_LIBS'] +if CONFIG['MOZ_SYSTEM_GRAPHITE2']: + OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS'] + +if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] + - if CONFIG['MOZ_OSS']: - OS_LIBS += CONFIG['MOZ_OSS_LIBS'] + if CONFIG['MOZ_SYSTEM_HUNSPELL']: + OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] Index: branches/2017Q3/www/seamonkey/files/patch-env-api-keys =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-env-api-keys (nonexistent) +++ branches/2017Q3/www/seamonkey/files/patch-env-api-keys (revision 447217) @@ -0,0 +1,21 @@ +# Accept API keys from environment like before bug 1294585 + +--- mozilla/build/moz.configure/keyfiles.configure ++++ mozilla/build/moz.configure/keyfiles.configure +@@ -18,6 +18,7 @@ def keyfile(desc, help=None, callback=lambda x: x): + @checking('for the %s key' % desc, lambda x: x and x is not no_key) + @imports(_from='__builtin__', _import='open') + @imports(_from='__builtin__', _import='IOError') ++ @imports(_from='os', _import='environ') + def keyfile(value): + if value: + try: +@@ -29,7 +30,7 @@ def keyfile(desc, help=None, callback=lambda x: x): + raise + except IOError: + pass +- return no_key ++ return environ.get('MOZ_%s_KEY' % desc.upper().replace(' ', '_')) or no_key + + return keyfile + Property changes on: branches/2017Q3/www/seamonkey/files/patch-env-api-keys ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: branches/2017Q3/www/seamonkey/files/patch-suite-app-nsSuiteApp.cpp =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-suite-app-nsSuiteApp.cpp (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-suite-app-nsSuiteApp.cpp (revision 447217) @@ -1,12 +1,12 @@ ---- suite/app/nsSuiteApp.cpp~ +--- suite/app/nsSuiteApp.cpp.orig 2017-07-07 05:15:27 UTC +++ suite/app/nsSuiteApp.cpp -@@ -331,6 +331,9 @@ int main(int argc, char* argv[]) - TriggerQuirks(); - #endif +@@ -318,6 +318,9 @@ int main(int argc, char* argv[], char* envp[]) + { + mozilla::TimeStamp start = mozilla::TimeStamp::Now(); + setenv("MOZ_GMP_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0); + setenv("MOZ_PLUGIN_PATH", "%%LOCALBASE%%/lib/browser_plugins/symlinks/gecko", 0); -+ - int gotCounters; - #if defined(XP_UNIX) - struct rusage initialRUsage; ++ + #ifdef HAS_DLL_BLOCKLIST + DllBlocklist_Initialize(); + Index: branches/2017Q3/www/seamonkey/files/patch-z-bug517422 =================================================================== --- branches/2017Q3/www/seamonkey/files/patch-z-bug517422 (revision 447216) +++ branches/2017Q3/www/seamonkey/files/patch-z-bug517422 (revision 447217) @@ -1,463 +1,463 @@ # Allow more config/external/ libs built against system-wide version. diff --git build/moz.configure/old.configure build/moz.configure/old.configure index 42ab554..c91df3d 100644 --- mozilla/build/moz.configure/old.configure +++ mozilla/build/moz.configure/old.configure @@ -320,7 +320,12 @@ def old_configure_options(*options): '--with-system-libvpx', '--with-system-nspr', '--with-system-nss', + '--with-system-ogg', '--with-system-png', + '--with-system-soundtouch', + '--with-system-theora', + '--with-system-tremor', + '--with-system-vorbis', '--with-system-zlib', '--with-thumb', '--with-thumb-interwork', diff --git config/Makefile.in config/Makefile.in index 5383399..0410004 100644 --- mozilla/config/Makefile.in +++ mozilla/config/Makefile.in -@@ -77,6 +77,11 @@ export:: $(export-preqs) +@@ -51,6 +51,11 @@ export:: $(export-preqs) -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \ -DMOZ_SYSTEM_GRAPHITE2=$(MOZ_SYSTEM_GRAPHITE2) \ -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \ + -DMOZ_SYSTEM_OGG=$(MOZ_SYSTEM_OGG) \ + -DMOZ_SYSTEM_THEORA=$(MOZ_SYSTEM_THEORA) \ + -DMOZ_SYSTEM_VORBIS=$(MOZ_SYSTEM_VORBIS) \ + -DMOZ_SYSTEM_TREMOR=$(MOZ_SYSTEM_TREMOR) \ + -DMOZ_SYSTEM_SOUNDTOUCH=$(MOZ_SYSTEM_SOUNDTOUCH) \ - $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers + $(srcdir)/system-headers $(srcdir)/stl-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers $(INSTALL) system_wrappers $(DIST) diff --git config/external/moz.build config/external/moz.build index f67c5c7..eb909ce 100644 --- mozilla/config/external/moz.build +++ mozilla/config/external/moz.build @@ -20,12 +20,21 @@ if CONFIG['MOZ_UPDATER']: # There's no "native brotli" yet, but probably in the future... external_dirs += ['modules/brotli'] -if CONFIG['MOZ_VORBIS']: +if not CONFIG['MOZ_SYSTEM_OGG']: + external_dirs += ['media/libogg'] + +if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_SYSTEM_VORBIS']: external_dirs += ['media/libvorbis'] -if CONFIG['MOZ_TREMOR']: +if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_SYSTEM_TREMOR']: external_dirs += ['media/libtremor'] +if not CONFIG['MOZ_SYSTEM_THEORA']: + external_dirs += ['media/libtheora'] + +if not CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: + external_dirs += ['media/libsoundtouch'] + if CONFIG['MOZ_WEBM_ENCODER']: external_dirs += ['media/libmkv'] @@ -51,12 +60,9 @@ external_dirs += [ 'media/kiss_fft', 'media/libcubeb', 'media/libnestegg', - 'media/libogg', 'media/libopus', - 'media/libtheora', 'media/libspeex_resampler', 'media/libstagefright', - 'media/libsoundtouch', ] DIRS += ['../../' + i for i in external_dirs] diff --git config/system-headers config/system-headers index bef567c..9807c29 100644 --- mozilla/config/system-headers +++ mozilla/config/system-headers @@ -1364,3 +1363,17 @@ graphite2/Segment.h harfbuzz/hb-ot.h harfbuzz/hb.h #endif +#if MOZ_SYSTEM_OGG==1 +ogg/ogg.h +ogg/os_types.h +#endif +#if MOZ_SYSTEM_THEORA==1 +theora/theoradec.h +#endif +#if MOZ_SYSTEM_VORBIS==1 +vorbis/codec.h +vorbis/vorbisenc.h +#endif +#if MOZ_SYSTEM_TREMOR==1 +tremor/ivorbiscodec.h +#endif diff --git old-configure.in configure.in index 87db361..7947626 100644 --- mozilla/old-configure.in +++ mozilla/old-configure.in @@ -5401,6 +5401,111 @@ if test -n "$MOZ_OMX_PLUGIN"; then fi fi +dnl ======================================================== +dnl Check for libogg +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-ogg, +[ --with-system-ogg Use system libogg (located with pkgconfig)], +MOZ_SYSTEM_OGG=1, +MOZ_SYSTEM_OGG=) + +if test -n "$MOZ_SYSTEM_OGG"; then + PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.2.1) + + _SAVE_LIBS=$LIBS + LIBS="$LIBS $MOZ_OGG_LIBS" + AC_CHECK_FUNC(ogg_set_mem_functions, [], + [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)]) + LIBS=$_SAVE_LIBS +fi + +AC_SUBST(MOZ_SYSTEM_OGG) + +dnl ======================================================== +dnl Check for libvorbis +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-vorbis, +[ --with-system-vorbis Use system libvorbis (located with pkgconfig)], +MOZ_SYSTEM_VORBIS=1, +MOZ_SYSTEM_VORBIS=) + +if test -n "$MOZ_SYSTEM_VORBIS"; then + PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5) +fi + +AC_SUBST(MOZ_SYSTEM_VORBIS) + +dnl ======================================================== +dnl Check for integer-only libvorbis aka tremor +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-tremor, +[ --with-system-tremor Use system libtremor (located with pkgconfig)], +MOZ_SYSTEM_TREMOR=1, +MOZ_SYSTEM_TREMOR=) + +if test -n "$MOZ_SYSTEM_TREMOR"; then + PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1) +fi + +AC_SUBST(MOZ_SYSTEM_TREMOR) + +dnl ======================================================== +dnl Check for libtheora +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-theora, +[ --with-system-theora Use system libtheora (located with pkgconfig)], +MOZ_SYSTEM_THEORA=1, +MOZ_SYSTEM_THEORA=) + +if test -n "$MOZ_SYSTEM_THEORA"; then + PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2) +fi + +AC_SUBST(MOZ_SYSTEM_THEORA) + +dnl ======================================================== +dnl Check for libSoundTouch +dnl ======================================================== + +MOZ_ARG_WITH_BOOL(system-soundtouch, +[ --with-system-soundtouch Use system libSoundTouch (located with pkgconfig)], +MOZ_SYSTEM_SOUNDTOUCH=1, +MOZ_SYSTEM_SOUNDTOUCH=) + +if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.9.0) + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + _SAVE_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" + AC_CACHE_CHECK(for soundtouch sample type, + ac_cv_soundtouch_sample_type, + [AC_TRY_COMPILE([#include + #ifndef SOUNDTOUCH_INTEGER_SAMPLES + #error soundtouch expects float samples + #endif], + [], + [ac_cv_soundtouch_sample_type=short], + [ac_cv_soundtouch_sample_type=float])]) + CXXFLAGS=$_SAVE_CXXFLAGS + AC_LANG_RESTORE + + if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ + -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then + AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) + fi +fi + +if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then + AC_DEFINE(MOZ_SYSTEM_SOUNDTOUCH) +fi +AC_SUBST(MOZ_SYSTEM_SOUNDTOUCH) + dnl system libvpx Support dnl ======================================================== MOZ_ARG_WITH_BOOL(system-libvpx, diff --git dom/media/AudioStream.cpp dom/media/AudioStream.cpp index 2127256..1ec09fe 100644 --- mozilla/dom/media/AudioStream.cpp +++ mozilla/dom/media/AudioStream.cpp @@ -125,7 +125,9 @@ AudioStream::AudioStream(DataSource& aSo , mOutRate(0) , mChannels(0) , mOutChannels(0) +#ifndef MOZ_SYSTEM_SOUNDTOUCH , mTimeStretcher(nullptr) +#endif , mDumpFile(nullptr) , mState(INITIALIZED) , mDataSource(aSource) @@ -152,9 +154,11 @@ AudioStream::~AudioStream() if (mDumpFile) { fclose(mDumpFile); } +#ifndef MOZ_SYSTEM_SOUNDTOUCH if (mTimeStretcher) { soundtouch::destroySoundTouchObj(mTimeStretcher); } +#endif } size_t -@@ -177,7 +181,11 @@ nsresult AudioStream::EnsureTimeStretcherInitializedUnlocked() +@@ -151,7 +155,11 @@ nsresult AudioStream::EnsureTimeStretche { mMonitor.AssertCurrentThreadOwns(); if (!mTimeStretcher) { +#ifdef MOZ_SYSTEM_SOUNDTOUCH + mTimeStretcher = new soundtouch::SoundTouch(); +#else mTimeStretcher = soundtouch::createSoundTouchObj(); +#endif - mTimeStretcher->setSampleRate(mInRate); + mTimeStretcher->setSampleRate(mAudioClock.GetInputRate()); mTimeStretcher->setChannels(mOutChannels); mTimeStretcher->setPitch(1.0); diff --git dom/media/AudioStream.h dom/media/AudioStream.h index a552e3e..02b80b1 100644 --- mozilla/dom/media/AudioStream.h +++ mozilla/dom/media/AudioStream.h @@ -15,7 +15,11 @@ #include "mozilla/RefPtr.h" #include "mozilla/UniquePtr.h" #include "CubebUtils.h" +#ifdef MOZ_SYSTEM_SOUNDTOUCH +#include "soundtouch/SoundTouch.h" +#else #include "soundtouch/SoundTouchFactory.h" +#endif namespace mozilla { @@ -277,7 +277,11 @@ private: // Number of frames written to the buffers. int64_t mWritten; AudioClock mAudioClock; +#ifdef MOZ_SYSTEM_SOUNDTOUCH + nsAutoPtr mTimeStretcher; +#else soundtouch::SoundTouch* mTimeStretcher; +#endif // Stream start time for stream open delay telemetry. TimeStamp mStartTime; diff --git dom/media/moz.build dom/media/moz.build index 7526cff..e0a0ca0 100644 --- mozilla/dom/media/moz.build +++ mozilla/dom/media/moz.build @@ -300,6 +300,21 @@ if CONFIG['MOZ_WEBRTC']: DEFINES['MOZILLA_INTERNAL_API'] = True +if CONFIG['MOZ_SYSTEM_OGG']: + CXXFLAGS += CONFIG['MOZ_OGG_CFLAGS'] + +if CONFIG['MOZ_SYSTEM_THEORA']: + CXXFLAGS += CONFIG['MOZ_THEORA_CFLAGS'] + +if CONFIG['MOZ_SYSTEM_VORBIS']: + CXXFLAGS += CONFIG['MOZ_VORBIS_CFLAGS'] + +if CONFIG['MOZ_SYSTEM_TREMOR']: + CXXFLAGS += CONFIG['MOZ_TREMOR_CFLAGS'] + +if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: + CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS'] + if CONFIG['OS_TARGET'] == 'WINNT': DEFINES['WEBRTC_WIN'] = True else: diff --git media/libogg/README_MOZILLA media/libogg/README_MOZILLA index 0833e4d..7ece97b 100644 --- mozilla/media/libogg/README_MOZILLA +++ mozilla/media/libogg/README_MOZILLA @@ -6,3 +6,6 @@ The svn revision number used was r17287. The int-types.patch address a bug that config_types.h generated from Linux platform can't be used on OpenSolaris directly see Mozilla bug 449754 + +The in-tree copy may be omitted during build by --with-system-ogg. +Keep version in old-configure.in in sync on updates. diff --git media/libsoundtouch/README_MOZILLA media/libsoundtouch/README_MOZILLA index bfd4b1a..15b158d 100644 --- mozilla/media/libsoundtouch/README_MOZILLA +++ mozilla/media/libsoundtouch/README_MOZILLA @@ -6,3 +6,5 @@ The whole library is not used, only the relevant files are imported in the tree, using the script `update.sh`. Some changes have been made to the files, using the patch `moz-libsoundtouch.patch`. We also use a custom soundtouch_config.h. +The in-tree copy may be omitted during build by --with-system-soundtouch. +Keep version in old-configure.in in sync on updates. diff --git media/libsoundtouch/src/soundtouch_perms.h media/libsoundtouch/src/soundtouch_perms.h index 0af2fe6..d80c145 100644 --- mozilla/media/libsoundtouch/src/soundtouch_perms.h +++ mozilla/media/libsoundtouch/src/soundtouch_perms.h @@ -12,7 +12,9 @@ #pragma GCC visibility push(default) #include "SoundTouch.h" +#ifndef MOZ_SYSTEM_SOUNDTOUCH #include "SoundTouchFactory.h" +#endif #pragma GCC visibility pop #endif // MOZILLA_SOUNDTOUCH_PERMS_H diff --git media/libtheora/README_MOZILLA media/libtheora/README_MOZILLA index d48dbfa..f08a2ed 100644 --- mozilla/media/libtheora/README_MOZILLA +++ mozilla/media/libtheora/README_MOZILLA @@ -3,3 +3,6 @@ using the update.sh script. The changes made were those applied by update.sh, the addition/update of Makefile.in files for the Mozilla build system. The subversion revision used was r17578. + +The in-tree copy may be omitted during build by --with-system-theora. +Keep version in old-configure.in in sync on updates. diff --git media/libtheora/moz.build media/libtheora/moz.build index 14265b1..3069e99 100644 --- mozilla/media/libtheora/moz.build +++ mozilla/media/libtheora/moz.build @@ -21,6 +21,9 @@ if CONFIG['GKMEDIAS_SHARED_LIBRARY']: # The encoder is currently not included. DEFINES['THEORA_DISABLE_ENCODE'] = True +if CONFIG['MOZ_SYSTEM_OGG']: + CFLAGS += CONFIG['MOZ_OGG_CFLAGS'] + # Suppress warnings in third-party code. if CONFIG['GNU_CC']: CFLAGS += ['-Wno-type-limits'] diff --git media/libtremor/README_MOZILLA media/libtremor/README_MOZILLA index ee67b53..3f34a09 100644 --- mozilla/media/libtremor/README_MOZILLA +++ mozilla/media/libtremor/README_MOZILLA @@ -5,3 +5,6 @@ Makefile.in files for the Mozilla build system. The upstream release used was http://svn.xiph.org/trunk/Tremor/ The subversion revision used was r17547. + +The in-tree copy may be omitted during build by --with-system-tremor. +Keep version in old-configure.in in sync on updates. diff --git media/libtremor/moz.build media/libtremor/moz.build index 31831ba..a03d576 100644 --- mozilla/media/libtremor/moz.build +++ mozilla/media/libtremor/moz.build @@ -6,3 +6,5 @@ DIRS += ['include/tremor', 'lib'] +if CONFIG['MOZ_SYSTEM_OGG']: + CFLAGS += CONFIG['MOZ_OGG_CFLAGS'] diff --git media/libvorbis/README_MOZILLA media/libvorbis/README_MOZILLA index 7c7454c..55baedd 100644 --- mozilla/media/libvorbis/README_MOZILLA +++ mozilla/media/libvorbis/README_MOZILLA @@ -8,3 +8,6 @@ https://svn.xiph.org/tags/vorbis/libvorbis-1.3.4@19059 Some files are renamed during the copy to prevent clashes with object file names with other Mozilla libraries. + +The in-tree copy may be omitted during build by --with-system-vorbis. +Keep version in old-configure.in in sync on updates. diff --git media/libvorbis/moz.build media/libvorbis/moz.build index 919b99e..cc776f7 100644 --- mozilla/media/libvorbis/moz.build +++ mozilla/media/libvorbis/moz.build @@ -55,3 +55,6 @@ FINAL_LIBRARY = 'gkmedias' # Suppress warnings in third-party code. if CONFIG['GNU_CC']: CFLAGS += ['-Wno-uninitialized'] + +if CONFIG['MOZ_SYSTEM_OGG']: + CFLAGS += CONFIG['MOZ_OGG_CFLAGS'] diff --git toolkit/library/moz.build toolkit/library/moz.build index d42137a..695e75a8 100644 --- mozilla/toolkit/library/moz.build +++ mozilla/toolkit/library/moz.build @@ -178,6 +178,21 @@ if CONFIG['MOZ_SYSTEM_PNG']: if CONFIG['MOZ_SYSTEM_HUNSPELL']: OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] +if CONFIG['MOZ_SYSTEM_OGG']: + OS_LIBS += CONFIG['MOZ_OGG_LIBS'] + +if CONFIG['MOZ_SYSTEM_THEORA']: + OS_LIBS += CONFIG['MOZ_THEORA_LIBS'] + +if CONFIG['MOZ_SYSTEM_VORBIS']: + OS_LIBS += CONFIG['MOZ_VORBIS_LIBS'] + +if CONFIG['MOZ_SYSTEM_TREMOR']: + OS_LIBS += CONFIG['MOZ_TREMOR_LIBS'] + +if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: + OS_LIBS += CONFIG['MOZ_SOUNDTOUCH_LIBS'] + if CONFIG['MOZ_SYSTEM_LIBEVENT']: OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS'] diff --git xpcom/build/XPCOMInit.cpp xpcom/build/XPCOMInit.cpp index 2cf281e..6d7af0e 100644 --- mozilla/xpcom/build/XPCOMInit.cpp +++ mozilla/xpcom/build/XPCOMInit.cpp @@ -138,7 +138,9 @@ extern nsresult nsStringInputStreamConstructor(nsISupports*, REFNSIID, void**); #include "mozilla/VisualEventTracer.h" #endif +#ifndef MOZ_OGG_NO_MEM_REPORTING #include "ogg/ogg.h" +#endif #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) #include "vpx_mem/vpx_mem.h" #endif @@ -651,11 +653,13 @@ NS_InitXPCOM2(nsIServiceManager** aResult, // this oddness. mozilla::SetICUMemoryFunctions(); +#ifndef MOZ_OGG_NO_MEM_REPORTING // Do the same for libogg. ogg_set_mem_functions(OggReporter::CountingMalloc, OggReporter::CountingCalloc, OggReporter::CountingRealloc, OggReporter::CountingFree); +#endif #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) // And for VPX. Index: branches/2017Q3/www/seamonkey-i18n/Makefile =================================================================== --- branches/2017Q3/www/seamonkey-i18n/Makefile (revision 447216) +++ branches/2017Q3/www/seamonkey-i18n/Makefile (revision 447217) @@ -1,85 +1,84 @@ # Created by: Andrew Pantyukhin # $FreeBSD$ PORTNAME= seamonkey-i18n -PORTVERSION= 2.46 -PORTREVISION= 1 +PORTVERSION= 2.48 CATEGORIES= www mail news editors irc MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/langpack \ - MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build9/langpack + MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/langpack PKGNAMEPREFIX= DISTFILES= ${SEAMONKEY_I18N_:S/$/.langpack.xpi/:S/^/seamonkey-${PORTVERSION}./} DIST_SUBDIR= xpi/${DISTNAME} MAINTAINER= gecko@FreeBSD.org COMMENT= Localized interface for SeaMonkey USES= zip gecko:seamonkey USE_XPI= seamonkey linux-seamonkey NO_ARCH= yes USE_SUBMAKE= yes WDIR= langpack-*@seamonkey.mozilla.org XPI_DISTNAMES= ${SEAMONKEY_I18N_} PLIST?= ${WRKDIR}/plist PLISTF?= ${WRKDIR}/plist_files .include "${.CURDIR}/Makefile.option" .include .ifndef WITHOUT_SWITCHER RUN_DEPENDS+= xpi-quick-locale-switcher>=0:www/xpi-quick-locale-switcher .endif .include "${.CURDIR}/Makefile.lang" SEAMONKEY_I18N_?= ${SEAMONKEY_I18N} .for dist in ${XPI_DISTNAMES} XPI_ID_${dist}= langpack-${dist}@seamonkey.mozilla.org .endfor pre-everything:: @${ECHO_CMD} @${ECHO_CMD} "Please define SEAMONKEY_I18N_ALL to install all languages." @${ECHO_CMD} do-extract: @${MKDIR} ${WRKSRC} @for lang in ${SEAMONKEY_I18N_}; do \ if ! (${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/seamonkey-${PORTVERSION}.$$lang.langpack.xpi -d ${WRKSRC}/langpack-$$lang@seamonkey.mozilla.org);\ then \ exit 1; \ fi; \ cd ${WRKSRC}/langpack-$$lang@seamonkey.mozilla.org/; \ ${FIND} -H -s * ! -type d | \ ${SED} -e "s|^|lib/xpi/langpack-$$lang@seamonkey.mozilla.org/|" >> ${PLISTF}; \ done ${CAT} ${PLISTF} | ${SORT} >> ${PLIST} do-install: @${MKDIR} ${STAGEDIR}${XPI_LIBDIR} ${XPI_LINKFARMS:S,^,${STAGEDIR},} cd ${WRKSRC}; ${PAX} -rw . ${STAGEDIR}${XPI_LIBDIR} ${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${WDIR}/ @for sldir in ${XPI_LINKFARMS}; do \ ${ECHO_CMD} "@dir $${sldir}" ${_A}; \ done @${ECHO_CMD} '@exec for _dir in ${XPI_LINKFARMS} ; { \ ${LN} -sf ${XPI_LIBDIR}/${WDIR} $$_dir/ ${_Q}; }' ${_A} @${ECHO_CMD} '@unexec for _dir in ${XPI_LINKFARMS}; { ${RM} $$_dir/${WDIR} ; }' ${_A} post-patch: ${FIND} ${WRKSRC} -name install.rdf -print0 | \ ${XARGS} -0L1 ${REINPLACE_CMD} -i '' -e '/ Index: branches/2017Q3/www/seamonkey-i18n/Makefile.lang =================================================================== --- branches/2017Q3/www/seamonkey-i18n/Makefile.lang (revision 447216) +++ branches/2017Q3/www/seamonkey-i18n/Makefile.lang (revision 447217) @@ -1,89 +1,88 @@ # Created by: Koji Yokota # $FreeBSD$ -SEAMONKEY_I18N_ALL_= be ca cs de en-GB en-US es-AR es-ES fi fr gl hu it \ - ja lt nb-NO nl pl pt-PT ru sk sv-SE tr uk \ - zh-CN zh-TW +SEAMONKEY_I18N_ALL_= cs de en-GB en-US es-AR es-ES fr hu it ja lt nl \ + pl pt-PT ru sk sv-SE zh-CN zh-TW .if defined(SEAMONKEY_I18N_ALL) || (defined(PACKAGE_BUILDING) && !exists(${OPTIONS_FILE})) || make(makesum) SEAMONKEY_I18N= ${SEAMONKEY_I18N_ALL_} .else .if ${PORT_OPTIONS:MLANG_BE} SEAMONKEY_I18N+= be .endif .if ${PORT_OPTIONS:MLANG_CA} SEAMONKEY_I18N+= ca .endif .if ${PORT_OPTIONS:MLANG_CS} SEAMONKEY_I18N+= cs .endif .if ${PORT_OPTIONS:MLANG_DE} SEAMONKEY_I18N+= de .endif .if ${PORT_OPTIONS:MLANG_GB} SEAMONKEY_I18N+= en-GB .endif .if ${PORT_OPTIONS:MLANG_US} SEAMONKEY_I18N+= en-US .endif .if ${PORT_OPTIONS:MLANG_SA} SEAMONKEY_I18N+= es-AR .endif .if ${PORT_OPTIONS:MLANG_ES} SEAMONKEY_I18N+= es-ES .endif .if ${PORT_OPTIONS:MLANG_FI} SEAMONKEY_I18N+= fi .endif .if ${PORT_OPTIONS:MLANG_FR} SEAMONKEY_I18N+= fr .endif .if ${PORT_OPTIONS:MLANG_GL} SEAMONKEY_I18N+= gl .endif .if ${PORT_OPTIONS:MLANG_HU} SEAMONKEY_I18N+= hu .endif .if ${PORT_OPTIONS:MLANG_IT} SEAMONKEY_I18N+= it .endif .if ${PORT_OPTIONS:MLANG_JA} SEAMONKEY_I18N+= ja .endif .if ${PORT_OPTIONS:MLANG_LT} SEAMONKEY_I18N+= lt .endif .if ${PORT_OPTIONS:MLANG_NB} SEAMONKEY_I18N+= nb-NO .endif .if ${PORT_OPTIONS:MLANG_NL} SEAMONKEY_I18N+= nl .endif .if ${PORT_OPTIONS:MLANG_PL} SEAMONKEY_I18N+= pl .endif .if ${PORT_OPTIONS:MLANG_PT} SEAMONKEY_I18N+= pt-PT .endif .if ${PORT_OPTIONS:MLANG_RU} SEAMONKEY_I18N+= ru .endif .if ${PORT_OPTIONS:MLANG_SK} SEAMONKEY_I18N+= sk .endif .if ${PORT_OPTIONS:MLANG_SE} SEAMONKEY_I18N+= sv-SE .endif .if ${PORT_OPTIONS:MLANG_TR} SEAMONKEY_I18N+= tr .endif .if ${PORT_OPTIONS:MLANG_UA} SEAMONKEY_I18N+= uk .endif .if ${PORT_OPTIONS:MLANG_CN} SEAMONKEY_I18N+= zh-CN .endif .if ${PORT_OPTIONS:MLANG_TW} SEAMONKEY_I18N+= zh-TW .endif .endif Index: branches/2017Q3/www/seamonkey-i18n/distinfo =================================================================== --- branches/2017Q3/www/seamonkey-i18n/distinfo (revision 447216) +++ branches/2017Q3/www/seamonkey-i18n/distinfo (revision 447217) @@ -1,53 +1,39 @@ -TIMESTAMP = 1481640594 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.be.langpack.xpi) = d97376ff92ffcdf04ec08273b60b8750d2c4f65edd71eed734313f72885f45db -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.be.langpack.xpi) = 936650 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ca.langpack.xpi) = 11adc88aab13826dbb7dd9374f877b80c87a085d75712c976173f243950292a6 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ca.langpack.xpi) = 937577 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.cs.langpack.xpi) = 4fae0f46a8ba83a72e6c7a50b7ba73153f153055b874fa3e857ebf6867a48ff3 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.cs.langpack.xpi) = 936101 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.de.langpack.xpi) = e6d000492fbb3aa1f7624dbb3a546742bd9badb67a9cee8a95fd8b8ead7ac0eb -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.de.langpack.xpi) = 942796 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.en-GB.langpack.xpi) = be1e956e11c4e36def6af6ee0c0795f5ec19e4370d811b6f3fdf60ed38f184c4 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.en-GB.langpack.xpi) = 900232 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.en-US.langpack.xpi) = ff188a86cebac99fa25575b8f8a2eb01d0f6ee009485c826dd9fbf3701839eb4 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.en-US.langpack.xpi) = 900829 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.es-AR.langpack.xpi) = 5b7a9da73fe69c9004487f844f97f5f18d3db79e49dd151ae9a6229545ef7d2c -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.es-AR.langpack.xpi) = 952318 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.es-ES.langpack.xpi) = da0c4b4e156965310ad4280c5ab461abd778b89e55d16a1f1ee78f692bbb76cb -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.es-ES.langpack.xpi) = 881728 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.fi.langpack.xpi) = 9242710c283628b6e9f68eee0425e1f7b81d81be27c1d5c3dc441018751b1511 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.fi.langpack.xpi) = 905048 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.fr.langpack.xpi) = e8e01037b879fe49e9dc042f27e08737083ac2bd7f9652ec2216d69f3de84ac9 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.fr.langpack.xpi) = 945990 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.gl.langpack.xpi) = e10ed62becc1e090c1734434d4a48b403dadb75b2231b70b33e2f34666fa42fa -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.gl.langpack.xpi) = 915640 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.hu.langpack.xpi) = 7366d80af72e1e5c46275b0f3f4efa36290b59ac2c24dc4b2debf06dbdc469fe -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.hu.langpack.xpi) = 950137 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.it.langpack.xpi) = 939162085a89575988fc44251f6f484bce087433bf06220fe94a3a3ef31a4279 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.it.langpack.xpi) = 788290 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ja.langpack.xpi) = b3f8a0e23cbd3e235d33d1fb083ff6b5b4d0abdd4697d89be444f90e657afea5 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ja.langpack.xpi) = 1000175 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.lt.langpack.xpi) = 32ca1b4668234c96c161512e6e7a444d864229d86efdc89caafff5e1d882bd0d -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.lt.langpack.xpi) = 951611 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.nb-NO.langpack.xpi) = 20b93b1f9475fc97a9f86f48d2bbcdeca43015c2cfe62a5a7b4d204dee1d7e0f -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.nb-NO.langpack.xpi) = 921937 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.nl.langpack.xpi) = eb9e84781c9c70411ccc199b8ccd6bf96729763ac09210d67d2dbe9178f9b8c4 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.nl.langpack.xpi) = 926891 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.pl.langpack.xpi) = 47a18be4d673bc8ef172b358512390d5bcfc6f81d1c2d327669aa135b2aec482 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.pl.langpack.xpi) = 918214 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.pt-PT.langpack.xpi) = 0ba281071038143950c64a03edaab7a37a4d284ed1583b50633ab58e393c7743 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.pt-PT.langpack.xpi) = 934340 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ru.langpack.xpi) = fd50c7fd8f291530f68af88424dffd15e59340cb854a1edc915d2d5dc548ec78 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.ru.langpack.xpi) = 960162 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.sk.langpack.xpi) = 124d643a414d595941cc5fd72c0529629df8f3ea15c0f16186e7e3d5550dca22 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.sk.langpack.xpi) = 962527 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.sv-SE.langpack.xpi) = 6cadce5a8b40aaf1cc39157f5a9be3de5890d4b298082c11f9da1bdf43638869 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.sv-SE.langpack.xpi) = 935346 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.tr.langpack.xpi) = 1ad81e539c119d4bcc9b4c15dc1a54d604ae8d999c3e7dbc112c2633dd914409 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.tr.langpack.xpi) = 912742 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.uk.langpack.xpi) = 50be5f1fc5bf46133308185fee7f6761eca90550bbbb6d27ded3a0f81e2cfb81 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.uk.langpack.xpi) = 995478 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.zh-CN.langpack.xpi) = 19e835ebb01e3c7c8bdd3aeee9105f18187fb7c588bf2e329db45c39acb4e5dc -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.zh-CN.langpack.xpi) = 942579 -SHA256 (xpi/seamonkey-i18n-2.46/seamonkey-2.46.zh-TW.langpack.xpi) = 2fe7403370d70d4daa6a302fc24fc72a062cb9777acc672faf20f51f2ed73955 -SIZE (xpi/seamonkey-i18n-2.46/seamonkey-2.46.zh-TW.langpack.xpi) = 970970 +TIMESTAMP = 1499406030 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.cs.langpack.xpi) = a8b955affee247a1c541bcca68fa383444fcf5db37659da045f47c0f6451d351 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.cs.langpack.xpi) = 929570 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.de.langpack.xpi) = 66cf0338e5607582824dffbd71dd6d82954275501de50bca3ebe70a2462c2b8a +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.de.langpack.xpi) = 937351 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.en-GB.langpack.xpi) = 835dbdca2c0d40be3e76045ec04932f0fff8223030febf7533885b9ff9868067 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.en-GB.langpack.xpi) = 901731 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.en-US.langpack.xpi) = 3f499d126578dc72c2982ac7bb6a47797dc6a520624b0eccaaf313f3de659330 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.en-US.langpack.xpi) = 921449 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.es-AR.langpack.xpi) = 78680bec36912e021ab35f144bd51c726dc9ce8031dbf7012bf9f2ef685872f4 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.es-AR.langpack.xpi) = 941407 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.es-ES.langpack.xpi) = 37702e2d54e965c6dffbd5c0c7bde9e4494ddfa9fc984136c826974a9fd253e5 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.es-ES.langpack.xpi) = 890255 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.fr.langpack.xpi) = f7a7c207878bfc84e9dd53f7111f00b7c297ad9c75c594ef4df4ddac532179a2 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.fr.langpack.xpi) = 957402 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.hu.langpack.xpi) = 2f1138ca9a9d1321dbe38d24cc0b6994a4a1569eb2bd4baebbcec00ed0e5355e +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.hu.langpack.xpi) = 943677 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.it.langpack.xpi) = f0084a1ce0681a1e3038597c6a77a2f3436b91166263f50b325a86cf9c708716 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.it.langpack.xpi) = 783035 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.ja.langpack.xpi) = fb3029513e8fcf9713b5ad565e66ee6842d59822af509336e56b713373fce6bd +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.ja.langpack.xpi) = 1027353 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.lt.langpack.xpi) = 54ccbd5b07e8260462ec060135f969a10dd94569238958fd96bde55e0cf61056 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.lt.langpack.xpi) = 944779 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.nl.langpack.xpi) = a2de7dcc53b7d0db496a8f1efab774fa603b4635a200fcf00cb503ebebb3227d +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.nl.langpack.xpi) = 946317 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.pl.langpack.xpi) = 4083874a25597b833d4b9473f05bdac1f7de92d5f095793597a9fc855cb160b0 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.pl.langpack.xpi) = 905621 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.pt-PT.langpack.xpi) = 2c22ee0372cebea03737f6b506a0aaf002e67be9ed26662f70204250964dc642 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.pt-PT.langpack.xpi) = 928435 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.ru.langpack.xpi) = 0ee69e3b81708004bb7c155b68343a80d15c60735a603207a86939ff7b033060 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.ru.langpack.xpi) = 986167 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.sk.langpack.xpi) = cc176898ef9cb67728f0ed3eae24336cf52582bf0144a894f3fa04fc71140861 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.sk.langpack.xpi) = 956279 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.sv-SE.langpack.xpi) = 831a4b42faa31f4006984269e2d6d3472a0f1450f92895fb8190c1719e2ff2c8 +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.sv-SE.langpack.xpi) = 930510 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.zh-CN.langpack.xpi) = 991629043056dd722202116ef026aeb86a8615539aabf41a28b6a78da63eab7b +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.zh-CN.langpack.xpi) = 934871 +SHA256 (xpi/seamonkey-i18n-2.48/seamonkey-2.48.zh-TW.langpack.xpi) = bb41ee50948baca9e78ae1ba0174046bde21d7bb823c6b365e32d7a8c6a9c50f +SIZE (xpi/seamonkey-i18n-2.48/seamonkey-2.48.zh-TW.langpack.xpi) = 991735 Index: branches/2017Q3 =================================================================== --- branches/2017Q3 (revision 447216) +++ branches/2017Q3 (revision 447217) Property changes on: branches/2017Q3 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head:r446510