Index: head/Mk/Uses/gecko.mk =================================================================== --- head/Mk/Uses/gecko.mk (revision 421530) +++ head/Mk/Uses/gecko.mk (revision 421531) @@ -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= 45 -_GECKO_VERSIONS= 45 47 +_GECKO_VERSIONS= 45 49 _GECKO_TYPE= firefox # Dependence lines for different Firefox versions 45_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr -47_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox +49_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= 39 _GECKO_VERSIONS= 39 _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 39_DEPENDS= ${LOCALBASE}/lib/seamonkey/seamonkey:www/seamonkey .elif ${gecko_ARGS:Mthunderbird} _GECKO_DEFAULT_VERSION= 45 _GECKO_VERSIONS= 45 _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 45_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: head/Mk/bsd.gecko.mk =================================================================== --- head/Mk/bsd.gecko.mk (revision 421530) +++ head/Mk/bsd.gecko.mk (revision 421531) @@ -1,634 +1,632 @@ #-*- tab-width: 4; -*- # ex:ts=4 # # Date created: 12 Nov 2005 # Whom: Michael Johnson # # $FreeBSD$ # # 4 column tabs prevent hair loss and tooth decay! # bsd.gecko.mk abstracts the selection of gecko-based backends. It allows users # and porters to support any available gecko backend without needing to build # many conditional tests. ${USE_GECKO} is the list of backends that your port # can handle, and ${GECKO} is set by bsd.gecko.mk to be the chosen backend. # Users set ${WITH_GECKO} to the list of gecko backends they want on their # system. .if defined(USE_GECKO) .if !defined(_POSTMKINCLUDED) && !defined(Gecko_Pre_Include) Gecko_Pre_Include= bsd.gecko.mk # This file contains some reusable components for mozilla ports. It's of # use primarily to apps from the mozilla project itself (such as Firefox, # Thunderbird, etc.), and probably won't be of use for gecko-based ports # like epiphany, galeon, etc. # # You need to make sure to add USE_GECKO=gecko to for your port can uses # one of these options below. # # Ports can use the following: # # USE_MOZILLA By default, it enables every system dependency # listed in '_ALL_DEPENDS'. If your port doesn't # need one of those then you can use '-' like # 'USE_MOZILLA= -png -vpx' to subtract the # dependencies. Experimental deps use '+' like # 'USE_MOZILLA= +speex +theora'. # # MOZILLA_PLIST_DIRS List of directories to descend into when installing # and creating the plist # # MOZ_PIS_SCRIPTS List of scripts residing in ${FILESDIR} to be # filtered through MOZCONFIG_SED and installed along # with our Pluggable Init Scripts (PIS) # # MOZ_SED_ARGS sed(1) commands through which MOZ_PIS_SCRIPTS are # filtered. There is a default set defined here, so # you probably want to add to MOZ_SED_ARGS rather # than clobber it # # MOZ_OPTIONS configure arguments (added to .mozconfig). If # NOMOZCONFIG is defined, you probably want to set # CONFIGURE_ARGS+=${MOZ_OPTIONS} # # MOZ_MK_OPTIONS The make(1) arguments (added to .mozconfig). If # NOMOZCONFIG is defined, you probably want to set # MAKE_ARGS+=${MOZ_MK_OPTIONS} # # MOZ_EXPORT Environment variables for the build process (added # to .mozconfig). If NOMOZCONFIG is defined, you # probably want to set MAKE_ENV+=${MOZ_EXPORT} # # MOZ_CHROME A variable for the --enable-chrome-format= in # CONFIGURE_ARGS. The default is omni. # # MOZ_TOOLKIT A variable for the --enable-default-toolkit= in # CONFIGURE_ARGS. The default is cairo-gtk2. # # MOZ_EXTENSIONS A list of extensions to build # # MOZ_PROTOCOLS A list of protocols to build (http, ftp, etc.) # # PORT_MOZCONFIG Defaults to ${FILESDIR}/mozconfig.in, but can be # set to a generic mozconfig included with the port # # NOMOZCONFIG Don't drop a customized .mozconfig into the build # directory. Options will have to be specified in # CONFIGURE_ARGS instead # MAINTAINER?= gecko@FreeBSD.org MOZILLA?= ${PORTNAME} MOZILLA_VER?= ${PORTVERSION} MOZILLA_BIN?= ${PORTNAME}-bin MOZILLA_EXEC_NAME?=${MOZILLA} MOZ_RPATH?= ${MOZILLA} USES+= cpe compiler:c++11-lang gmake iconv perl5 pkgconfig \ python:2.7,build desktop-file-utils CPE_VENDOR?=mozilla USE_PERL5= build USE_XORG= x11 xcomposite xdamage xext xfixes xrender xt .if ${MOZILLA} != "libxul" BUNDLE_LIBS= yes .endif +# call to implicitly-deleted copy constructor of 'mozilla::WidevineVideoFrame' +. if ${OPSYS} == FreeBSD && ${OSVERSION} < 1000019 && ${MOZILLA_VER:R:R} >= 49 +# XXX USES=compiler:c++11-lib cannot be used due to ports/208538 +USE_GCC= 5+ +.endif + MOZILLA_SUFX?= none MOZSRC?= ${WRKSRC} WRKSRC?= ${WRKDIR}/mozilla PLISTF?= ${WRKDIR}/plist_files -MOZ_OBJDIR?= ${WRKSRC}/obj-${CONFIGURE_TARGET} +MOZ_OBJDIR?= ${WRKSRC}/obj-${ARCH:C/amd64/x86_64/}-unknown-${OPSYS:tl}${OSREL} MOZ_PIS_DIR?= lib/${MOZILLA}/init.d PORT_MOZCONFIG?= ${FILESDIR}/mozconfig.in MOZCONFIG?= ${WRKSRC}/.mozconfig # XXX Not ?= because fmake uses MAKEFILE internally MAKEFILE= ${WRKSRC}/client.mk MOZILLA_PLIST_DIRS?= bin lib share/pixmaps share/applications PKGINSTALL?= ${WRKDIR}/pkg-install PKGDEINSTALL?= ${WRKDIR}/pkg-deinstall PKGINSTALL_INC?= ${.CURDIR}/../../www/firefox/files/pkg-install.in PKGDEINSTALL_INC?= ${.CURDIR}/../../www/firefox/files/pkg-deinstall.in MOZ_PKGCONFIG_FILES?= ${MOZILLA}-gtkmozembed ${MOZILLA}-js \ ${MOZILLA}-xpcom ${MOZILLA}-plugin ALL_TARGET?= build -CONFIGURE_TARGET:=${ARCH:C/amd64/x86_64/}-portbld-${OPSYS:tl}${OSREL} MOZ_EXPORT+= ${CONFIGURE_ENV} \ PERL="${PERL}" -MOZ_OPTIONS+= ${CONFIGURE_TARGET} --prefix="${PREFIX}" +MOZ_OPTIONS+= --prefix="${PREFIX}" MOZ_MK_OPTIONS+=MOZ_OBJDIR="${MOZ_OBJDIR}" CPPFLAGS+= -isystem${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib \ -Wl,-rpath,${PREFIX}/lib/${MOZILLA} -Wl,--as-needed .if ${OPSYS} != DragonFly # XXX xpcshell crash during install # use jemalloc 3.0.0 (4.0 for firefox 43+) API for stats/tuning MOZ_EXPORT+= MOZ_JEMALLOC3=1 MOZ_JEMALLOC4=1 .if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1100079 . if ${MOZILLA_VER:R:R} < 43 # system jemalloc 4.0.0 vs. bundled jemalloc 3.6.0-204-gb4acf73 EXTRA_PATCHES+= ${FILESDIR}/extra-patch-bug1125514 . endif .elif ${OPSYS} != FreeBSD || ${OSVERSION} < 1000012 || ${MOZILLA_VER:R:R} >= 37 +. if ${MOZILLA_VER:R:R} >= 48 +MOZ_OPTIONS+= --enable-jemalloc=4 +.else MOZ_OPTIONS+= --enable-jemalloc +. endif .endif .endif # !DragonFly # Standard depends _ALL_DEPENDS= cairo event ffi graphite harfbuzz hunspell icu jpeg nspr nss opus png pixman soundtouch sqlite vpx .if ${PORT_OPTIONS:MINTEGER_SAMPLES} MOZ_EXPORT+= MOZ_INTEGER_SAMPLES=1 _ALL_DEPENDS+= tremor .else _ALL_DEPENDS+= vorbis .endif .if ! ${PORT_OPTIONS:MBUNDLED_CAIRO} cairo_BUILD_DEPENDS=cairo>=1.12.16_1,2:graphics/cairo cairo_LIB_DEPENDS= libcairo.so:graphics/cairo cairo_MOZ_OPTIONS= --enable-system-cairo .endif event_LIB_DEPENDS= libevent.so:devel/libevent2 event_MOZ_OPTIONS= --with-system-libevent ffi_LIB_DEPENDS= libffi.so:devel/libffi ffi_MOZ_OPTIONS= --enable-system-ffi .if exists(${FILESDIR}/patch-bug847568) graphite_LIB_DEPENDS= libgraphite2.so:graphics/graphite2 graphite_MOZ_OPTIONS= --with-system-graphite2 harfbuzz_LIB_DEPENDS= libharfbuzz.so:print/harfbuzz harfbuzz_MOZ_OPTIONS= --with-system-harfbuzz .endif hunspell_LIB_DEPENDS= libhunspell-1.3.so:textproc/hunspell hunspell_MOZ_OPTIONS= --enable-system-hunspell icu_LIB_DEPENDS= libicui18n.so:devel/icu icu_MOZ_OPTIONS= --with-system-icu --with-intl-api -jpeg_BUILD_DEPENDS=yasm:devel/yasm # XXX Remove files/patch-ijg-libjpeg once -turbo is default jpeg_USES= jpeg jpeg_MOZ_OPTIONS= --with-system-jpeg=${LOCALBASE} nspr_LIB_DEPENDS= libnspr4.so:devel/nspr nspr_MOZ_OPTIONS= --with-system-nspr nss_LIB_DEPENDS= libnss3.so:security/nss nss_MOZ_OPTIONS= --with-system-nss .if exists(${FILESDIR}/patch-z-bug517422) && ${MOZILLA_VER:R:R} < 45 opus_LIB_DEPENDS= libopus.so:audio/opus opus_MOZ_OPTIONS= --with-system-opus .endif pixman_LIB_DEPENDS= libpixman-1.so:x11/pixman pixman_MOZ_OPTIONS= --enable-system-pixman png_LIB_DEPENDS= libpng.so:graphics/png png_MOZ_OPTIONS= --with-system-png=${LOCALBASE} .if exists(${FILESDIR}/patch-z-bug517422) soundtouch_LIB_DEPENDS= libSoundTouch.so:audio/soundtouch soundtouch_MOZ_OPTIONS= --with-system-soundtouch .endif sqlite_LIB_DEPENDS= libsqlite3.so:databases/sqlite3 sqlite_MOZ_OPTIONS= --enable-system-sqlite .if exists(${FILESDIR}/patch-z-bug517422) # XXX disabled: update to 1.2.x or review backported fixes theora_LIB_DEPENDS= libtheora.so:multimedia/libtheora theora_MOZ_OPTIONS= --with-system-theora tremor_LIB_DEPENDS= libogg.so:audio/libogg libvorbisidec.so:audio/libtremor tremor_MOZ_OPTIONS= --with-system-tremor --with-system-ogg vorbis_LIB_DEPENDS= libogg.so:audio/libogg libvorbis.so:audio/libvorbis vorbis_MOZ_OPTIONS= --with-system-vorbis --with-system-ogg .endif -vpx_BUILD_DEPENDS= yasm:devel/yasm vpx_LIB_DEPENDS= libvpx.so:multimedia/libvpx vpx_MOZ_OPTIONS= --with-system-libvpx .for use in ${USE_MOZILLA} ${use:S/-/_WITHOUT_/}= ${TRUE} .endfor LIB_DEPENDS+= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 .for dep in ${_ALL_DEPENDS} ${USE_MOZILLA:M+*:S/+//} .if !defined(_WITHOUT_${dep}) BUILD_DEPENDS+= ${${dep}_BUILD_DEPENDS} LIB_DEPENDS+= ${${dep}_LIB_DEPENDS} RUN_DEPENDS+= ${${dep}_RUN_DEPENDS} USES+= ${${dep}_USES} MOZ_OPTIONS+= ${${dep}_MOZ_OPTIONS} .else BUILD_DEPENDS+= ${-${dep}_BUILD_DEPENDS} .endif .endfor # Standard options MOZ_CHROME?= omni MOZ_TOOLKIT?= cairo-gtk2 MOZ_OPTIONS+= \ --enable-chrome-format=${MOZ_CHROME} \ --enable-default-toolkit=${MOZ_TOOLKIT} \ --enable-pie \ --with-pthreads # Configure options for install .if !defined(MOZ_EXTENSIONS) MOZ_OPTIONS+= --enable-extensions=default .else MOZ_OPTIONS+= --enable-extensions=${MOZ_EXTENSIONS} .endif .if !defined(MOZ_PROTOCOLS) MOZ_OPTIONS+= --enable-necko-protocols=default .else MOZ_OPTIONS+= --enable-necko-protocols=${MOZ_PROTOCOLS} .endif # others MOZ_OPTIONS+= --with-system-zlib \ --with-system-bz2 \ - --enable-unified-compilation \ - --disable-debug-symbols \ - --disable-glibtest \ - --disable-gtktest \ - --disable-freetypetest \ - --disable-installer \ - --disable-updater \ - --disable-pedantic + --disable-debug-symbols # API keys from www/chromium # http://www.chromium.org/developers/how-tos/api-keys # Note: these are for FreeBSD use ONLY. For your own distribution, # please get your own set of keys. MOZ_EXPORT+= MOZ_GOOGLE_API_KEY=AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8 \ MOZ_GOOGLE_OAUTH_API_CLIENTID=996322985003.apps.googleusercontent.com \ MOZ_GOOGLE_OAUTH_API_KEY=IR1za9-1VK0zZ0f_O8MVFicn .if ${PORT_OPTIONS:MGTK3} MOZ_TOOLKIT= cairo-gtk3 .endif .if ${MOZ_TOOLKIT:Mcairo-gtk3} BUILD_DEPENDS+= gtk3>=3.14.6:x11-toolkits/gtk30 USE_GNOME+= gdkpixbuf2 gtk30 . if ${MOZILLA_VER:R:R} >= 32 USE_GNOME+= gtk20 # bug 624422 . endif .else # gtk2, cairo-gtk2 USE_GNOME+= gdkpixbuf2 gtk20 .endif .if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS} CFLAGS+= -O3 MOZ_EXPORT+= MOZ_OPTIMIZE_FLAGS="${CFLAGS:M-O*}" MOZ_OPTIONS+= --enable-optimize .else -. if ${MOZILLA_VER:R:R} >= 45 && ${ARCH} == i386 && \ - (${OSVERSION} >= 1000000 && ${OSVERSION} < 1003501) -USES:= compiler:c++14-lang ${USES:Ncompiler*c++11*} # XXX ports/207837 -. endif MOZ_OPTIONS+= --disable-optimize .endif .if ${PORT_OPTIONS:MCANBERRA} RUN_DEPENDS+= libcanberra>0:audio/libcanberra .endif .if ${PORT_OPTIONS:MDBUS} BUILD_DEPENDS+= libnotify>0:devel/libnotify LIB_DEPENDS+= libdbus-1.so:devel/dbus \ libdbus-glib-1.so:devel/dbus-glib \ libstartup-notification-1.so:x11/startup-notification MOZ_OPTIONS+= --enable-startup-notification .else -MOZ_OPTIONS+= --disable-dbus --disable-libnotify +MOZ_OPTIONS+= --disable-dbus .endif .if ${PORT_OPTIONS:MFFMPEG} # dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp RUN_DEPENDS+= ffmpeg>=0.8,1:multimedia/ffmpeg .endif .if ${PORT_OPTIONS:MGSTREAMER} RUN_DEPENDS+= gstreamer1-libav>=1.2.4_1:multimedia/gstreamer1-libav USE_GSTREAMER1?=good libav MOZ_OPTIONS+= --enable-gstreamer=1.0 -.else +.elif ${MOZILLA_VER:R:R} < 46 MOZ_OPTIONS+= --disable-gstreamer .endif .if ${PORT_OPTIONS:MGCONF} BUILD_DEPENDS+= ${gconf2_DETECT}:${gconf2_LIB_DEPENDS:C/.*://} USE_GNOME+= gconf2:build MOZ_OPTIONS+= --enable-gconf .else MOZ_OPTIONS+= --disable-gconf .endif .if ${PORT_OPTIONS:MGIO} MOZ_OPTIONS+= --enable-gio .else MOZ_OPTIONS+= --disable-gio .endif .if ${PORT_OPTIONS:MGNOMEUI} BUILD_DEPENDS+= ${libgnomeui_DETECT}:${libgnomeui_LIB_DEPENDS:C/.*://} USE_GNOME+= libgnomeui:build MOZ_OPTIONS+= --enable-gnomeui .else MOZ_OPTIONS+= --disable-gnomeui .endif .if ${PORT_OPTIONS:MLIBPROXY} LIB_DEPENDS+= libproxy.so:net/libproxy MOZ_OPTIONS+= --enable-libproxy .else MOZ_OPTIONS+= --disable-libproxy .endif .if ${PORT_OPTIONS:MPGO} USES:= compiler:gcc-c++11-lib ${USES:Ncompiler*c++11*} USE_DISPLAY=yes ALL_TARGET= profiledbuild MOZ_EXPORT+=MOZ_OPTIMIZE_FLAGS="-Os" MOZ_PGO_OPTIMIZE_FLAGS="${CFLAGS:M-O*}" .endif .if ${PORT_OPTIONS:MALSA} LIB_DEPENDS+= libasound.so:audio/alsa-lib RUN_DEPENDS+= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins RUN_DEPENDS+= alsa-lib>=1.1.1_1:audio/alsa-lib MOZ_OPTIONS+= --enable-alsa .endif .if ${PORT_OPTIONS:MPULSEAUDIO} . if ${PORT_OPTIONS:MALSA} BUILD_DEPENDS+= pulseaudio>0:audio/pulseaudio . else # pull pulse package if we cannot fallback to another backend LIB_DEPENDS+= libpulse.so:audio/pulseaudio . endif MOZ_OPTIONS+= --enable-pulseaudio .else MOZ_OPTIONS+= --disable-pulseaudio .endif .if ${MOZILLA_VER:R:R} >= 40 .if ${PORT_OPTIONS:MRUST} BUILD_DEPENDS+= rustc:${RUST_PORT} RUST_PORT?= lang/rust MOZ_OPTIONS+= --enable-rust .else MOZ_OPTIONS+= --disable-rust .endif .endif .if ${PORT_OPTIONS:MDEBUG} MOZ_OPTIONS+= --enable-debug --disable-release STRIP= # ports/184285 .else MOZ_OPTIONS+= --disable-debug --enable-release .endif .if ${PORT_OPTIONS:MDTRACE} MOZ_OPTIONS+= --enable-dtrace \ --disable-gold . if ${OPSYS} == FreeBSD && ${OSVERSION} < 1100061 LIBS+= -lelf . endif STRIP= .else MOZ_OPTIONS+= --disable-dtrace .endif .if ${MOZILLA_VER:R:R} < 40 . if ${PORT_OPTIONS:MLOGGING} || ${PORT_OPTIONS:MDEBUG} MOZ_OPTIONS+= --enable-logging . else MOZ_OPTIONS+= --disable-logging . endif .endif .if ${PORT_OPTIONS:MPROFILE} MOZ_OPTIONS+= --enable-profiling STRIP= .else MOZ_OPTIONS+= --disable-profiling .endif .if ${PORT_OPTIONS:MTEST} USE_XORG+= xscrnsaver MOZ_OPTIONS+= --enable-tests .else MOZ_OPTIONS+= --disable-tests .endif .if !defined(STRIP) || ${STRIP} == "" MOZ_OPTIONS+= --disable-strip --disable-install-strip .else MOZ_OPTIONS+= --enable-strip --enable-install-strip .endif # _MAKE_JOBS is only available after bsd.port.post.mk, thus cannot be # used in .mozconfig. And client.mk automatically uses -jN where N # is what multiprocessing.cpu_count() returns. .if defined(DISABLE_MAKE_JOBS) || defined(MAKE_JOBS_UNSAFE) MAKE_JOBS_NUMBER= 1 .endif .if defined(MAKE_JOBS_NUMBER) MOZ_MAKE_FLAGS+=-j${MAKE_JOBS_NUMBER} .endif .if defined(MOZ_MAKE_FLAGS) MOZ_MK_OPTIONS+=MOZ_MAKE_FLAGS="${MOZ_MAKE_FLAGS}" .endif MOZ_SED_ARGS+= -e's|@CPPFLAGS@|${CPPFLAGS}|g' \ -e 's|@CFLAGS@|${CFLAGS}|g' \ -e 's|@LDFLAGS@|${LDFLAGS}|g' \ -e 's|@LIBS@|${LIBS}|g' \ -e 's|@LOCALBASE@|${LOCALBASE}|g' \ -e 's|@PERL@|${PERL}|g' \ -e 's|@MOZDIR@|${PREFIX}/lib/${MOZILLA}|g' \ -e 's|%%PREFIX%%|${PREFIX}|g' \ -e 's|%%CFLAGS%%|${CFLAGS}|g' \ -e 's|%%LDFLAGS%%|${LDFLAGS}|g' \ -e 's|%%LIBS%%|${LIBS}|g' \ -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ -e 's|%%PERL%%|${PERL}|g' \ -e 's|%%MOZILLA%%|${MOZILLA}|g' \ -e 's|%%MOZILLA_BIN%%|${MOZILLA_BIN}|g' \ -e 's|%%MOZDIR%%|${PREFIX}/lib/${MOZILLA}|g' MOZCONFIG_SED?= ${SED} ${MOZ_SED_ARGS} .if ${ARCH} == amd64 . if ${USE_MOZILLA:M-nss} USE_BINUTILS= # intel-gcm.s CFLAGS+= -B${LOCALBASE}/bin LDFLAGS+= -B${LOCALBASE}/bin . endif .elif ${ARCH:Mpowerpc*} USES:= compiler:gcc-c++11-lib ${USES:Ncompiler*c++11*} . if ${ARCH} == "powerpc64" MOZ_EXPORT+= UNAME_m="${ARCH}" CFLAGS+= -mminimal-toc . endif .elif ${ARCH} == "sparc64" # Work around miscompilation/mislinkage of the sCanonicalVTable hacks. MOZ_OPTIONS+= --disable-v1-string-abi .endif .else # bsd.port.post.mk pre-extract: gecko-pre-extract gecko-pre-extract: .if ${PORT_OPTIONS:MPGO} @${ECHO} "*****************************************************************" @${ECHO} "**************************** attention **************************" @${ECHO} "*****************************************************************" @${ECHO} "To build ${MOZILLA} with PGO support you need a running X server and" @${ECHO} " build this port with an user who could access the X server! " @${ECHO} "" @${ECHO} "During the build a ${MOZILLA} instance will start and run some test." @${ECHO} " Do not interrupt or close ${MOZILLA} during this tests! " @${ECHO} "*****************************************************************" @sleep 10 .endif post-patch: gecko-post-patch gecko-moz-pis-patch gecko-post-patch: .if exists(${PKGINSTALL_INC}) @${MOZCONFIG_SED} < ${PKGINSTALL_INC} > ${PKGINSTALL} .endif .if exists(${PKGDEINSTALL_INC}) @${MOZCONFIG_SED} < ${PKGDEINSTALL_INC} > ${PKGDEINSTALL} .endif @${RM} -f ${MOZCONFIG} .if !defined(NOMOZCONFIG) @if [ -e ${PORT_MOZCONFIG} ] ; then \ ${MOZCONFIG_SED} < ${PORT_MOZCONFIG} >> ${MOZCONFIG} ; \ fi .for arg in ${MOZ_OPTIONS} @${ECHO_CMD} ac_add_options ${arg:Q} >> ${MOZCONFIG} .endfor .for arg in ${MOZ_MK_OPTIONS} @${ECHO_CMD} mk_add_options ${arg:Q} >> ${MOZCONFIG} .endfor .for var in ${MOZ_EXPORT} @${ECHO_CMD} export ${var:Q} >> ${MOZCONFIG} .endfor .endif # .if !defined(NOMOZCONFIG) .if exists(${MOZSRC}/build/unix/mozilla-config.in) @${REINPLACE_CMD} -e 's/%{idldir}/%idldir%/g ; \ s|"%FULL_NSPR_CFLAGS%"|`nspr-config --cflags`|g ; \ s|"%FULL_NSPR_LIBS%"|`nspr-config --libs`|g' \ ${MOZSRC}/build/unix/mozilla-config.in .endif .if ${USE_MOZILLA:M-nspr} @${ECHO_MSG} "===> Applying NSPR patches" @for i in ${.CURDIR}/../../devel/nspr/files/patch-*; do \ ${PATCH} ${PATCH_ARGS} -d ${MOZSRC}/nsprpub < $$i; \ done .endif .if ${USE_MOZILLA:M-nss} @${ECHO_MSG} "===> Applying NSS patches" @for i in ${.CURDIR}/../../security/nss/files/patch-*; do \ ${PATCH} ${PATCH_ARGS} -d ${MOZSRC}/security/nss < $$i; \ done .endif @for f in \ ${WRKSRC}/directory/c-sdk/config/FreeBSD.mk \ ${WRKSRC}/directory/c-sdk/configure \ ${MOZSRC}/security/coreconf/FreeBSD.mk \ ${MOZSRC}/js/src/Makefile.in \ ${MOZSRC}/js/src/configure \ ${MOZSRC}/configure \ ${WRKSRC}/configure; do \ if [ -f $$f ] ; then \ ${REINPLACE_CMD} -Ee 's|-lc_r|-pthread|g ; \ s|-l?pthread|-pthread|g ; \ s|echo aout|echo elf|g ; \ s|/usr/X11R6|${LOCALBASE}|g' \ $$f; \ fi; \ done @if [ -f ${WRKSRC}/config/baseconfig.mk ] ; then \ ${REINPLACE_CMD} -e 's|%%MOZILLA%%|${MOZILLA}|g' \ ${WRKSRC}/config/baseconfig.mk; \ fi @${REINPLACE_CMD} -e 's|%%MOZILLA%%|${MOZILLA}|g' \ ${MOZSRC}/config/baseconfig.mk @${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g ; \ s|%%LOCALBASE%%|${LOCALBASE}|g' \ ${MOZSRC}/build/unix/run-mozilla.sh @${REINPLACE_CMD} -e 's|/usr/local/netscape|${LOCALBASE}|g ; \ s|/usr/local/lib/netscape|${LOCALBASE}/lib|g' \ ${MOZSRC}/xpcom/io/SpecialSystemDirectory.cpp @${REINPLACE_CMD} -e 's|/etc|${PREFIX}&|g' \ ${MOZSRC}/xpcom/build/nsXPCOMPrivate.h @${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \ -e 's|mozilla/plugins|browser_plugins|g' \ -e 's|share/mozilla/extensions|lib/xpi|g' \ ${MOZSRC}/xpcom/io/nsAppFileLocationProvider.cpp \ ${MOZSRC}/toolkit/xre/nsXREDirProvider.cpp @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${MOZSRC}/extensions/spellcheck/hunspell/*/mozHunspell.cpp # handles mozilla pis scripts. gecko-moz-pis-patch: .for moz in ${MOZ_PIS_SCRIPTS} @${MOZCONFIG_SED} < ${FILESDIR}/${moz} > ${WRKDIR}/${moz} .endfor do-configure: gecko-do-configure gecko-do-configure: @(if ! ${CONFIGURE_ENV} ${DO_MAKE_BUILD} configure; then \ ${ECHO_MSG} "===> Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \ (${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}) | ${FMT} 75 79 ; \ ${FALSE}; \ fi) pre-install: gecko-moz-pis-pre-install post-install-script: gecko-create-plist gecko-create-plist: # Create the plist ${RM} -f ${PLISTF} .for dir in ${MOZILLA_PLIST_DIRS} @cd ${STAGEDIR}${PREFIX}/${dir} && ${FIND} -H -s * ! -type d | \ ${SED} -e 's|^|${dir}/|' >> ${PLISTF} .endfor ${CAT} ${PLISTF} | ${SORT} >> ${TMPPLIST} gecko-moz-pis-pre-install: .if defined(MOZ_PIS_SCRIPTS) ${MKDIR} ${STAGEDIR}${PREFIX}/${MOZ_PIS_DIR} .for moz in ${MOZ_PIS_SCRIPTS} ${INSTALL_SCRIPT} ${WRKDIR}/${moz} ${STAGEDIR}${PREFIX}/${MOZ_PIS_DIR} .endfor .endif .endif .endif # HERE THERE BE TACOS -- adamw Index: head/mail/thunderbird/Makefile =================================================================== --- head/mail/thunderbird/Makefile (revision 421530) +++ head/mail/thunderbird/Makefile (revision 421531) @@ -1,159 +1,160 @@ # Created by: Joe Marcus Clarke # $FreeBSD$ PORTNAME= thunderbird DISTVERSION= 45.2.0 +PORTREVISION= 1 CATEGORIES= mail news net-im ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/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= Mozilla Thunderbird is standalone mail and news that stands above BUILD_DEPENDS= nspr>=4.12:devel/nspr \ nss>=3.21.1:security/nss \ libevent2>=2.0.21_2:devel/libevent2 \ soundtouch>=1.9.0:audio/soundtouch \ harfbuzz>=1.1.0:print/harfbuzz \ graphite2>=1.3.7:graphics/graphite2 \ png>=1.6.19:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ sqlite3>=3.9.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 LIB_DEPENDS= libv4l2.so:multimedia/libv4l EM_VERSION= 1.9.3 L_VERSION= 4.7.2 SSP_UNSAFE= yes USE_GECKO= gecko USE_MOZILLA= # empty USE_GL= gl USES= tar:xz MOZ_OPTIONS= --program-transform-name='s/thunderbird/${MOZILLA}/' \ --enable-single-profile --disable-profilesharing \ --enable-application=mail --enable-official-branding MOZ_MK_OPTIONS= MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 MOZ_EXPORT= MOZ_THUNDERBIRD=1 MAIL_PKG_SHARED=1 MOZ_PKGCONFIG_FILES= PORTNAME_ICON= ${MOZILLA}.png PORTNAME_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png SYSTEM_PREFS= ${FAKEDIR}/lib/${PORTNAME}/defaults/pref/${PORTNAME}.js MOZ_PIS_SCRIPTS=moz_pis_S50cleanhome OPTIONS_EXCLUDE=GSTREAMER LOGGING OPTIONS_DEFINE= ENIGMAIL LIGHTNING RUST OPTIONS_SINGLE= TOOLKIT OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 OPTIONS_DEFAULT=BUNDLED_CAIRO CANBERRA ENIGMAIL GTK2 LIGHTNING .include "${.CURDIR}/../../www/firefox/Makefile.options" .include WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION} MOZSRC:= ${WRKSRC}/mozilla XPI_LIBDIR= ${PREFIX}/lib/xpi .if ${PORT_OPTIONS:MENIGMAIL} MASTER_SITES+= https://www.enigmail.net/download/source/:enigmail DISTFILES+= ${EM_DISTFILE}:enigmail RUN_DEPENDS+= gpg2:security/gnupg EM_DISTNAME= enigmail-${EM_VERSION} EM_DISTFILE= ${EM_DISTNAME}.tar.gz EM_XPI_FILE= ${WRKSRC}/mailnews/extensions/enigmail/build/${EM_DISTNAME}.xpi EM_ORIG_ID= {847b3a00-7ab1-11d4-8f02-006008948af5} EM_ID= ${PORTNAME}@mozilla-enigmail.org EM_ID_RFILES= ${XPI_LIBDIR}/${EM_ID}/install.rdf \ ${XPI_LIBDIR}/${EM_ID}/components/enigmail.js \ ${XPI_LIBDIR}/${EM_ID}/modules/app.jsm .endif .if ${PORT_OPTIONS:MLIGHTNING} MOZ_OPTIONS+= --enable-calendar MOZ_MK_OPTIONS+= MOZ_CO_PROJECT=calendar LIGHTNING_DIR= share/lightning XPI_FILE= ${MOZ_OBJDIR}/dist/xpi-stage/lightning-${L_VERSION}.en-US.${OPSYS:tl}${OSREL}-${ARCH:S/amd64/x86_64/}.xpi XPI_ORIG_ID= {e2fda1a4-762b-4020-b5ad-a41df1933103} XPI_ID= lightning@thunderbird.mozilla.org .else MOZ_OPTIONS+= --disable-calendar .endif post-extract: @${SED} -e 's|@PORTNAME_ICON@|${PORTNAME_ICON}|;s|@MOZILLA@|${MOZILLA}|' \ <${FILESDIR}/thunderbird.desktop.in >${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop .if ${PORT_OPTIONS:MENIGMAIL} @${TAR} -xf ${_DISTDIR}/${EM_DISTFILE} \ -C ${WRKSRC}/mailnews/extensions .endif post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/mail/app/nsMailApp.cpp .if ${PORT_OPTIONS:MENIGMAIL} @${REINPLACE_CMD} -e 's,/usr/bin/perl,${PERL},' \ ${WRKSRC}/mailnews/extensions/enigmail/util/fixlang.pl \ ${WRKSRC}/mailnews/extensions/enigmail/util/make-lang-xpi.pl @${REINPLACE_CMD} -e '/^xpi/s/$$/ all/' \ -e '/^all/s/ xpi//' \ -e '/^XPI_MODULE_VERS/s/= .*/= ${EM_VERSION}/' \ ${WRKSRC}/mailnews/extensions/enigmail/Makefile @${REINPLACE_CMD} -e '/em:version/s,>[^<]*<,>${EM_VERSION}<,' \ -e '/em:maxVersion/s/pre//' \ ${WRKSRC}/mailnews/extensions/enigmail/package/install.rdf .endif 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) .if ${PORT_OPTIONS:MENIGMAIL} post-configure: cd ${WRKSRC}/mailnews/extensions/enigmail/ && \ ${SETENV} ${CONFIGURE_ENV} ${MAKE_ENV} ./configure post-build: ${DO_MAKE_BUILD:N-j*:S,${MAKEFILE},Makefile,} all xpi \ -C ${WRKSRC}/mailnews/extensions/enigmail .endif port-pre-install: ${MKDIR} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/defaults post-install: ${INSTALL_DATA} ${WRKDIR}/${MOZILLA_EXEC_NAME}.desktop ${STAGEDIR}${PREFIX}/share/applications ${LN} -sf ${PORTNAME_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${PORTNAME_ICON} .if ${PORT_OPTIONS:MLIGHTNING} @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/thunderbird @(cd ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) @${REINPLACE_CMD} -i "" "s/${XPI_ORIG_ID}/${XPI_ID}/" ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}/install.rdf @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/thunderbird 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${XPI_ID} ${LOCALBASE}/lib/thunderbird/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/thunderbird/extensions/${XPI_ID}' >> ${TMPPLIST} .endif .if ${PORT_OPTIONS:MENIGMAIL} @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} @(cd ${STAGEDIR}${XPI_LIBDIR}/${EM_ID}; ${TAR} -xf ${EM_XPI_FILE}) @${REINPLACE_CMD} -i "" "s/${EM_ORIG_ID}/${EM_ID}/" ${EM_ID_RFILES:S/^/${STAGEDIR}/} @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/${PORTNAME}/extensions/${EM_ID}' >> ${TMPPLIST} .endif .include Index: head/www/firefox/Makefile =================================================================== --- head/www/firefox/Makefile (revision 421530) +++ head/www/firefox/Makefile (revision 421531) @@ -1,87 +1,88 @@ # Created by: Alan Eldridge # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 47.0.1 -PORTREVISION= 2 +DISTVERSION= 49.0 DISTVERSIONSUFFIX=.source PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ - MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source + MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build2/source MAINTAINER= gecko@FreeBSD.org COMMENT= Web browser based on the browser portion of Mozilla BUILD_DEPENDS= nspr>=4.12:devel/nspr \ - nss>=3.23:security/nss \ + nss>=3.25:security/nss \ libevent2>=2.0.21_2:devel/libevent2 \ soundtouch>=1.9.0:audio/soundtouch \ - harfbuzz>=1.2.2:print/harfbuzz \ + harfbuzz>=1.2.6:print/harfbuzz \ graphite2>=1.3.8:graphics/graphite2 \ png>=1.6.21:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ - sqlite3>=3.11.0:databases/sqlite3 \ + sqlite3>=3.13: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 LIB_DEPENDS= libv4l2.so:multimedia/libv4l USE_GECKO= gecko CONFLICTS_INSTALL= firefox-esr-45.* firefox-esr-3[18].* firefox-esr-24.* MOZ_PKGCONFIG_FILES= # empty USE_MOZILLA= # empty MOZILLA_NAME= Firefox USE_GL= gl USES= tar:xz FIREFOX_ICON= ${MOZILLA}.png FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png -MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \ - --enable-application=browser \ +MOZ_OPTIONS= --enable-application=browser \ --enable-official-branding OPTIONS_EXCLUDE= GSTREAMER LOGGING OPTIONS_DEFINE= RUST OPTIONS_DEFAULT= BUNDLED_CAIRO GTK3 ${OPTIONS_DEFAULT_${OPSYS}_${OSREL:R}_${ARCH}} # XXX lang/rust currently builds only on these platforms OPTIONS_DEFAULT_DragonFly_4_x86_64= RUST OPTIONS_DEFAULT_FreeBSD_10_amd64= RUST OPTIONS_DEFAULT_FreeBSD_10_i386= RUST OPTIONS_DEFAULT_FreeBSD_11_amd64= RUST OPTIONS_DEFAULT_FreeBSD_11_i386= RUST OPTIONS_DEFAULT_FreeBSD_12_amd64= RUST OPTIONS_DEFAULT_FreeBSD_12_i386= RUST OPTIONS_SINGLE+= TOOLKIT OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 + +TEST_BROKEN= No rule to make target '../../../dist/bin/libnspr4.so', needed by \ + '../../../_tests/xpcshell/modules/libmar/tests/unit/libnspr4.so' .include "${.CURDIR}/../../www/firefox/Makefile.options" WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION} post-extract: @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \ -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|' \ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/${MOZILLA}.desktop post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/browser/app/nsBrowserApp.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${STAGEDIR}${PREFIX}/share/applications/ ${LN} -sf ${FIREFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${FIREFOX_ICON} .include Index: head/www/firefox/Makefile.options =================================================================== --- head/www/firefox/Makefile.options (revision 421530) +++ head/www/firefox/Makefile.options (revision 421531) @@ -1,31 +1,31 @@ # -*- makefile-bsdmake -*- OPTIONS_DEFINE+= BUNDLED_CAIRO CANBERRA DBUS DEBUG DTRACE FFMPEG GCONF GIO \ GNOMEUI GSTREAMER INTEGER_SAMPLES LIBPROXY LOGGING \ OPTIMIZED_CFLAGS PGO PROFILE TEST OPTIONS_DEFAULT+= DBUS DTRACE FFMPEG GIO GSTREAMER LOGGING OPTIMIZED_CFLAGS \ ${OPTIONS_MULTI_AUDIO} \ ${MACHINE_CPU:tu:MSOFTFP:S/SOFTFP/INTEGER_SAMPLES/} OPTIONS_MULTI+= AUDIO OPTIONS_MULTI_AUDIO= ALSA PULSEAUDIO # dragonfly, sparc64, riscv .if !exists(/usr/sbin/dtrace) OPTIONS_EXCLUDE+= DTRACE .endif -# dtrace(1) crashes during build -OPTIONS_EXCLUDE_FreeBSD_9_i386+= DTRACE -OPTIONS_EXCLUDE+= ${OPTIONS_EXCLUDE_${OPSYS}_${OSREL:R}_${ARCH}} +# dtrace(1) crashes during build or fails to allocate space for probe +OPTIONS_EXCLUDE_FreeBSD_9+= DTRACE +OPTIONS_EXCLUDE+= ${OPTIONS_EXCLUDE_${OPSYS}_${OSREL:R}} BUNDLED_CAIRO_DESC?= Use bundled fork of cairo-1.9.5 CANBERRA_DESC?= Sound theme alerts ENIGMAIL_DESC?= Enigmail extension GNOMEUI_DESC?= libgnomeui support module INTEGER_SAMPLES_DESC?= Integer audio sample format LIBPROXY_DESC?= Proxy support via libproxy LIGHTNING_DESC?= Calendar extension LOGGING_DESC?= Additional log messages RUST_DESC?= Build with components written in Rust language Index: head/www/firefox/distinfo =================================================================== --- head/www/firefox/distinfo (revision 421530) +++ head/www/firefox/distinfo (revision 421531) @@ -1,2 +1,3 @@ -SHA256 (firefox-47.0.1.source.tar.xz) = 5ac36c3481dde80ef2e36237badef6cb8ec5fe7e3b5ac1728839477de0cc034c -SIZE (firefox-47.0.1.source.tar.xz) = 188695532 +TIMESTAMP = 1473148535 +SHA256 (firefox-49.0.source.tar.xz) = feaded1735a270a0e66ea93262d28e210c6e348ee3af62d93da9d615ea9063b1 +SIZE (firefox-49.0.source.tar.xz) = 189545372 Index: head/www/firefox/files/patch-bug1285501 =================================================================== --- head/www/firefox/files/patch-bug1285501 (revision 421530) +++ head/www/firefox/files/patch-bug1285501 (nonexistent) @@ -1,22 +0,0 @@ -diff --git media/webrtc/trunk/build/filename_rules.gypi media/webrtc/trunk/build/filename_rules.gypi -index 844d5c5..7b16a15 100644 ---- media/webrtc/trunk/build/filename_rules.gypi -+++ media/webrtc/trunk/build/filename_rules.gypi -@@ -29,7 +29,7 @@ - # In case a file is not needed, it is going to be excluded later on. - # TODO(evan): the above is not correct; we shouldn't build _linux - # files on non-linux. -- ['OS!="linux" and OS!="openbsd" and OS!="freebsd" or >(nacl_untrusted_build)==1', { -+ ['OS!="linux" and OS!="solaris" and <(os_bsd)!=1 or >(nacl_untrusted_build)==1', { - 'sources/': [ - ['exclude', '_linux(_unittest)?\\.(h|cc)$'], - ['exclude', '(^|/)linux/'], -@@ -55,7 +55,7 @@ - ['exclude', '_nacl(_unittest)?\\.(h|cc)$'], - ], - }], -- ['OS!="linux" and OS!="openbsd" and OS!="freebsd" or >(nacl_untrusted_build)==1', { -+ ['OS!="linux" and OS!="solaris" and <(os_bsd)!=1 or >(nacl_untrusted_build)==1', { - 'sources/': [ - ['exclude', '_xdg(_unittest)?\\.(h|cc)$'], - ], Property changes on: head/www/firefox/files/patch-bug1285501 ___________________________________________________________________ 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: head/www/firefox/files/patch-bug1233275 =================================================================== --- head/www/firefox/files/patch-bug1233275 (revision 421530) +++ head/www/firefox/files/patch-bug1233275 (nonexistent) @@ -1,36 +0,0 @@ -# Copy environment for IPC using NSPR to avoid race - -diff --git a/ipc/chromium/src/base/process_util_bsd.cc b/ipc/chromium/src/base/process_util_bsd.cc ---- ipc/chromium/src/base/process_util_bsd.cc -+++ ipc/chromium/src/base/process_util_bsd.cc -@@ -12,10 +12,9 @@ - - #include - -+#include "nspr.h" - #include "base/eintr_wrapper.h" - --extern "C" char **environ __attribute__((__visibility__("default"))); -- - namespace base { - - void FreeEnvVarsArray(char* array[], int length) -@@ -66,6 +65,7 @@ bool LaunchApp(const std::vector= 6 is now itself a wrapper around cstdlib, which -circles back to our STL wrapper. - -But of the things our STL wrappers do, including mozalloc.h is not one -that is necessary for cstdlib. So skip including mozalloc.h in our -cstdlib wrapper. - -Additionally, some C++ sources (in media/mtransport) are including -headers in an extern "C" block, which end up including stdlib.h, which -ends up including cstdlib because really, this is all C++, and our -wrapper pre-includes for mozalloc.h, which fails because templates -don't work inside extern "C". So, don't pre-include when we're not -including mozalloc.h. - - -diff --git config/gcc-stl-wrapper.template.h config/gcc-stl-wrapper.template.h ---- config/gcc-stl-wrapper.template.h -+++ config/gcc-stl-wrapper.template.h -@@ -12,33 +12,40 @@ - // compiling ObjC. - #if defined(__EXCEPTIONS) && __EXCEPTIONS && !(__OBJC__ && __GNUC__ && XP_IOS) - # error "STL code can only be used with -fno-exceptions" - #endif - - // Silence "warning: #include_next is a GCC extension" - #pragma GCC system_header - -+// Don't include mozalloc for cstdlib. See bug 1245076. -+#ifndef moz_dont_include_mozalloc_for_cstdlib -+# define moz_dont_include_mozalloc_for_cstdlib -+#endif -+#ifndef moz_dont_include_mozalloc_for_${HEADER} - // mozalloc.h wants ; break the cycle by always explicitly - // including here. NB: this is a tad sneaky. Sez the gcc docs: - // - // `#include_next' does not distinguish between and "file" - // inclusion, nor does it check that the file you specify has the - // same name as the current file. It simply looks for the file - // named, starting with the directory in the search path after the - // one where the current file was found. --#include_next -+# include_next - - // See if we're in code that can use mozalloc. NB: this duplicates - // code in nscore.h because nscore.h pulls in prtypes.h, and chromium - // can't build with that being included before base/basictypes.h. --#if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) --# include "mozilla/mozalloc.h" --#else --# error "STL code can only be used with infallible ::operator new()" -+# if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) -+# include "mozilla/mozalloc.h" -+# else -+# error "STL code can only be used with infallible ::operator new()" -+# endif -+ - #endif - - #if defined(DEBUG) && !defined(_GLIBCXX_DEBUG) - // Enable checked iterators and other goodies - // - // FIXME/bug 551254: gcc's debug STL implementation requires -frtti. - // Figure out how to resolve this with -fno-rtti. Maybe build with - // -frtti in DEBUG builds? Property changes on: head/www/firefox/files/patch-bug1245076 ___________________________________________________________________ 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: head/www/firefox/files/patch-bug1269171 =================================================================== --- head/www/firefox/files/patch-bug1269171 (revision 421530) +++ head/www/firefox/files/patch-bug1269171 (nonexistent) @@ -1,258 +0,0 @@ - -# HG changeset patch -# User Mike Hommey -# Date 1463557039 -32400 -# Node ID 68da139d0866977c0ada86319fa94388f2255446 -# Parent a640e6fa8ab9977fb6c5bcf63dc4daca6699477b -Bug 1269171 - Change how mozalloc.h is hooked in STL wrappers. r=froydnj - -Since the introduction of the STL wrappers, they have included -mozalloc.h, and multiple times, we've hit header reentrancy problems, -and worked around them as best as we could. - -Taking a step back, all mozalloc.h does is: -- declare moz_* allocator functions. -- define inline implementations of various operator new/delete variants. - -The first only requires the functions to be declared before they are used, -so mozalloc.h only needs to be included before anything that would use -those functions. - -The second doesn't actually require a specific order, as long as the -declaration for those functions comes before their use, and they are -either declared in or implicitly by the C++ compiler. - -So all in all, it doesn't matter that mozalloc.h is included before the -wrapped STL headers. What matters is that it's included when STL headers -are included. So arrange things such that mozalloc.h is included after -the first wrapped STL header is fully preprocessed (and all its includes -have been included). - - -diff --git config/gcc-stl-wrapper.template.h config/gcc-stl-wrapper.template.h ---- config/gcc-stl-wrapper.template.h -+++ config/gcc-stl-wrapper.template.h -@@ -12,56 +12,54 @@ - // compiling ObjC. - #if defined(__EXCEPTIONS) && __EXCEPTIONS && !(__OBJC__ && __GNUC__ && XP_IOS) - # error "STL code can only be used with -fno-exceptions" - #endif - - // Silence "warning: #include_next is a GCC extension" - #pragma GCC system_header - --// Don't include mozalloc for cstdlib. See bug 1245076. --#ifndef moz_dont_include_mozalloc_for_cstdlib --# define moz_dont_include_mozalloc_for_cstdlib --#endif --#ifndef moz_dont_include_mozalloc_for_${HEADER} --// mozalloc.h wants ; break the cycle by always explicitly --// including here. NB: this is a tad sneaky. Sez the gcc docs: --// --// `#include_next' does not distinguish between and "file" --// inclusion, nor does it check that the file you specify has the --// same name as the current file. It simply looks for the file --// named, starting with the directory in the search path after the --// one where the current file was found. --# include_next -- --// See if we're in code that can use mozalloc. NB: this duplicates --// code in nscore.h because nscore.h pulls in prtypes.h, and chromium --// can't build with that being included before base/basictypes.h. --# if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) --# include "mozilla/mozalloc.h" --# else --# error "STL code can only be used with infallible ::operator new()" --# endif -- --#endif -- - #if defined(DEBUG) && !defined(_GLIBCXX_DEBUG) - // Enable checked iterators and other goodies - // - // FIXME/bug 551254: gcc's debug STL implementation requires -frtti. - // Figure out how to resolve this with -fno-rtti. Maybe build with - // -frtti in DEBUG builds? - // - // # define _GLIBCXX_DEBUG 1 - #endif - -+// Don't include mozalloc for cstdlib. See bug 1245076. -+#ifndef moz_dont_include_mozalloc_for_cstdlib -+# define moz_dont_include_mozalloc_for_cstdlib -+#endif -+ -+// Include mozalloc after the STL header and all other headers it includes -+// have been preprocessed. -+#if !defined(MOZ_INCLUDE_MOZALLOC_H) && \ -+ !defined(moz_dont_include_mozalloc_for_${HEADER}) -+# define MOZ_INCLUDE_MOZALLOC_H -+# define MOZ_INCLUDE_MOZALLOC_H_FROM_${HEADER} -+#endif -+ - #pragma GCC visibility push(default) - #include_next <${HEADER}> - #pragma GCC visibility pop - -+#ifdef MOZ_INCLUDE_MOZALLOC_H_FROM_${HEADER} -+// See if we're in code that can use mozalloc. NB: this duplicates -+// code in nscore.h because nscore.h pulls in prtypes.h, and chromium -+// can't build with that being included before base/basictypes.h. -+# if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) -+# include "mozilla/mozalloc.h" -+# else -+# error "STL code can only be used with infallible ::operator new()" -+# endif -+#endif -+ - // gcc calls a __throw_*() function from bits/functexcept.h when it - // wants to "throw an exception". functexcept exists nominally to - // support -fno-exceptions, but since we'll always use the system - // libstdc++, and it's compiled with exceptions, then in practice - // these __throw_*() functions will always throw exceptions (shades of - // -fshort-wchar). We don't want that and so define our own inlined - // __throw_*(). - #ifndef mozilla_throw_gcc_h -diff --git config/make-stl-wrappers.py config/make-stl-wrappers.py ---- config/make-stl-wrappers.py -+++ config/make-stl-wrappers.py -@@ -25,28 +25,26 @@ def header_path(header, compiler): - def is_comment(line): - return re.match(r'\s*#.*', line) - - def main(outdir, compiler, template_file, header_list_file): - if not os.path.isdir(outdir): - os.mkdir(outdir) - - template = open(template_file, 'r').read() -- path_to_new = header_path('new', compiler) - - for header in open(header_list_file, 'r'): - header = header.rstrip() - if 0 == len(header) or is_comment(header): - continue - - path = header_path(header, compiler) - with FileAvoidWrite(os.path.join(outdir, header)) as f: - f.write(string.Template(template).substitute(HEADER=header, -- HEADER_PATH=path, -- NEW_HEADER_PATH=path_to_new)) -+ HEADER_PATH=path)) - - - if __name__ == '__main__': - if 5 != len(sys.argv): - print("""Usage: - python {0} OUT_DIR ('msvc'|'gcc') TEMPLATE_FILE HEADER_LIST_FILE - """.format(sys.argv[0]), file=sys.stderr) - sys.exit(1) -diff --git config/msvc-stl-wrapper.template.h config/msvc-stl-wrapper.template.h ---- config/msvc-stl-wrapper.template.h -+++ config/msvc-stl-wrapper.template.h -@@ -3,45 +3,33 @@ - */ - /* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - #ifndef mozilla_${HEADER}_h - #define mozilla_${HEADER}_h - --#ifndef MOZ_HAVE_INCLUDED_ALLOC --#define MOZ_HAVE_INCLUDED_ALLOC -- - #if _HAS_EXCEPTIONS - # error "STL code can only be used with -fno-exceptions" - #endif - -+// Include mozalloc after the STL header and all other headers it includes -+// have been preprocessed. -+#if !defined(MOZ_INCLUDE_MOZALLOC_H) -+# define MOZ_INCLUDE_MOZALLOC_H -+# define MOZ_INCLUDE_MOZALLOC_H_FROM_${HEADER} -+#endif -+ - // Code built with !_HAS_EXCEPTIONS calls std::_Throw(), but the win2k - // CRT doesn't export std::_Throw(). So we define it. - #ifndef mozilla_Throw_h - # include "mozilla/throw_msvc.h" - #endif - --// Code might include before other wrapped headers, but --// includes and so we want to wrap it. But mozalloc.h --// wants also, so we break the cycle by always explicitly --// including here. --#include <${NEW_HEADER_PATH}> -- --// See if we're in code that can use mozalloc. NB: this duplicates --// code in nscore.h because nscore.h pulls in prtypes.h, and chromium --// can't build with that being included before base/basictypes.h. --#if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) --# include "mozilla/mozalloc.h" --#else --# error "STL code can only be used with infallible ::operator new()" --#endif --#endif /* MOZ_HAVE_INCLUDED_ALLOC */ -- - #ifdef _DEBUG - // From - // http://msdn.microsoft.com/en-us/library/aa985982%28VS.80%29.aspx - // and - // http://msdn.microsoft.com/en-us/library/aa985965%28VS.80%29.aspx - // there appear to be two types of STL container checking. The - // former is enabled by -D_DEBUG (which is implied by -MDd or -MTd), and - // looks to be full generation/mutation checked iterators as done by -@@ -70,9 +58,20 @@ - // but that's OK because we're not throwing them. - #pragma warning( push ) - #pragma warning( disable : 4275 4530 ) - - #include <${HEADER_PATH}> - - #pragma warning( pop ) - -+#ifdef MOZ_INCLUDE_MOZALLOC_H_FROM_${HEADER} -+// See if we're in code that can use mozalloc. NB: this duplicates -+// code in nscore.h because nscore.h pulls in prtypes.h, and chromium -+// can't build with that being included before base/basictypes.h. -+# if !defined(XPCOM_GLUE) && !defined(NS_NO_XPCOM) && !defined(MOZ_NO_MOZALLOC) -+# include "mozilla/mozalloc.h" -+# else -+# error "STL code can only be used with infallible ::operator new()" -+# endif -+#endif -+ - #endif // if mozilla_${HEADER}_h -diff --git memory/mozalloc/mozalloc.h memory/mozalloc/mozalloc.h ---- memory/mozalloc/mozalloc.h -+++ memory/mozalloc/mozalloc.h -@@ -7,20 +7,27 @@ - - #ifndef mozilla_mozalloc_h - #define mozilla_mozalloc_h - - /* - * https://bugzilla.mozilla.org/show_bug.cgi?id=427099 - */ - --#include --#include - #if defined(__cplusplus) - # include -+// Since libstdc++ 6, including the C headers (e.g. stdlib.h) instead of the -+// corresponding C++ header (e.g. cstdlib) can cause confusion in C++ code -+// using things defined there. Specifically, with stdlib.h, the use of abs() -+// in gfx/graphite2/src/inc/UtfCodec.h somehow ends up picking the wrong abs() -+# include -+# include -+#else -+# include -+# include - #endif - - #if defined(__cplusplus) - #include "mozilla/fallible.h" - #include "mozilla/TemplateLib.h" - #endif - #include "mozilla/Attributes.h" - #include "mozilla/Types.h" Property changes on: head/www/firefox/files/patch-bug1269171 ___________________________________________________________________ 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: head/www/firefox/files/patch-bug1013882 =================================================================== --- head/www/firefox/files/patch-bug1013882 (revision 421530) +++ head/www/firefox/files/patch-bug1013882 (revision 421531) @@ -1,69 +1,69 @@ diff --git b2g/installer/Makefile.in b2g/installer/Makefile.in index 754312a..c69904c 100644 --- b2g/installer/Makefile.in +++ b2g/installer/Makefile.in @@ -101,6 +101,10 @@ ifneq (,$(filter rtsp,$(NECKO_PROTOCOLS) DEFINES += -DMOZ_RTSP endif +ifdef MOZ_DEBUG +DEFINES += -DMOZ_DEBUG=1 +endif + DEFINES += -DMOZ_ICU_VERSION=$(MOZ_ICU_VERSION) - ifdef MOZ_NATIVE_ICU - DEFINES += -DMOZ_NATIVE_ICU + ifdef MOZ_SYSTEM_ICU + DEFINES += -DMOZ_SYSTEM_ICU diff --git b2g/installer/package-manifest.in b2g/installer/package-manifest.in index 17d433c..0416187 100644 --- b2g/installer/package-manifest.in +++ b2g/installer/package-manifest.in @@ -660,7 +660,7 @@ @RESPATH@/components/EngineeringModeAPI.js @RESPATH@/components/EngineeringModeService.js -#ifdef MOZ_DEBUG +#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG) @RESPATH@/components/TestInterfaceJS.js @RESPATH@/components/TestInterfaceJS.manifest #endif diff --git browser/installer/package-manifest.in browser/installer/package-manifest.in index b509fd4..195345c 100644 --- browser/installer/package-manifest.in +++ browser/installer/package-manifest.in @@ -608,7 +608,7 @@ @RESPATH@/components/MozKeyboard.js @RESPATH@/components/InputMethod.manifest -#ifdef MOZ_DEBUG +#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG) @RESPATH@/components/TestInterfaceJS.js @RESPATH@/components/TestInterfaceJS.manifest #endif diff --git mobile/android/installer/Makefile.in mobile/android/installer/Makefile.in index 96dceab..3528ad6 100644 --- mobile/android/installer/Makefile.in +++ mobile/android/installer/Makefile.in @@ -41,6 +41,10 @@ BINPATH = bin endif DEFINES += -DBINPATH=$(BINPATH) +ifdef MOZ_DEBUG +DEFINES += -DMOZ_DEBUG=1 +endif + ifdef ENABLE_MARIONETTE DEFINES += -DENABLE_MARIONETTE=1 endif diff --git mobile/android/installer/package-manifest.in mobile/android/installer/package-manifest.in index 994580b..cf142df 100644 --- mobile/android/installer/package-manifest.in +++ mobile/android/installer/package-manifest.in @@ -440,7 +440,7 @@ @BINPATH@/components/dom_webspeechsynth.xpt #endif -#ifdef MOZ_DEBUG +#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG) @BINPATH@/components/TestInterfaceJS.js @BINPATH@/components/TestInterfaceJS.manifest #endif Index: head/www/firefox/files/patch-bug1021761 =================================================================== --- head/www/firefox/files/patch-bug1021761 (revision 421530) +++ head/www/firefox/files/patch-bug1021761 (revision 421531) @@ -1,1110 +1,1122 @@ +diff --git build/moz.configure/old.configure build/moz.configure/old.configure +index b95dd2b..4cbefd5 100644 +--- build/moz.configure/old.configure ++++ 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 --- old-configure.in +++ 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|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 --disable-ogg --disable-wave --disable-webm.]) + 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 --- media/libcubeb/AUTHORS +++ 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 --- media/libcubeb/src/cubeb.c +++ 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 --- media/libcubeb/src/cubeb_alsa.c +++ 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) 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) { - 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) } } - 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) b[i] *= stm->volume; } } - wrote = snd_pcm_writei(stm->pcm, p, got); + wrote = WRAP(snd_pcm_writei)(stm->pcm, p, got); if (wrote == -EPIPE) { - 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; } - 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); 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) { /* 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); 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 +++ media/libcubeb/src/cubeb_oss.c @@ -0,0 +1,412 @@ +/* + * 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(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); + for (i=0; i<((unsigned long)got)*stream->params.channels; i++) { + buffer[i] = f_buffer[i]*32767.0; + } + } else { + got = run_data_callback(stream, buffer, + OSS_BUFFER_SIZE/stream->params.channels); + } + apply_volume(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, output_stream_params->channels); + SET(SNDCTL_DSP_SPEED, output_stream_params->rate); + switch (output_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 --- media/libcubeb/src/moz.build +++ 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/webrtc/signaling/test/common.build media/webrtc/signaling/test/common.build index 991f03f..3d99eb5 100644 --- media/webrtc/signaling/test/common.build +++ 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_NATIVE_JPEG']: + 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 --- toolkit/library/moz.build +++ toolkit/library/moz.build -@@ -234,8 +234,8 @@ if CONFIG['MOZ_NATIVE_LIBVPX']: +@@ -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: head/www/firefox/files/patch-bug1288587 =================================================================== --- head/www/firefox/files/patch-bug1288587 (nonexistent) +++ head/www/firefox/files/patch-bug1288587 (revision 421531) @@ -0,0 +1,67 @@ +diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure +index 855214a..1e91d51 100644 +--- build/moz.configure/init.configure ++++ build/moz.configure/init.configure +@@ -165,16 +165,17 @@ option(env='PYTHON', nargs=1, help='Python interpreter') + # ============================================================== + @depends('PYTHON', check_build_environment, mozconfig, '--help') + @imports('os') + @imports('sys') + @imports('subprocess') + @imports(_from='mozbuild.configure.util', _import='LineIO') + @imports(_from='mozbuild.virtualenv', _import='VirtualenvManager') + @imports(_from='mozbuild.virtualenv', _import='verify_python_version') ++@imports(_from='__builtin__', _import='KeyError') + @imports('distutils.sysconfig') + def virtualenv_python(env_python, build_env, mozconfig, help): + if help: + return + + python = env_python[0] if env_python else None + + # Ideally we'd rely on the mozconfig injection from mozconfig_options, +@@ -184,16 +185,22 @@ def virtualenv_python(env_python, build_env, mozconfig, help): + if 'PYTHON' in mozconfig['env']['added']: + python = mozconfig['env']['added']['PYTHON'] + elif 'PYTHON' in mozconfig['env']['modified']: + python = mozconfig['env']['modified']['PYTHON'][1] + elif 'PYTHON' in mozconfig['vars']['added']: + python = mozconfig['vars']['added']['PYTHON'] + elif 'PYTHON' in mozconfig['vars']['modified']: + python = mozconfig['vars']['modified']['PYTHON'][1] ++ for i in ('env', 'vars'): ++ for j in ('added', 'modified'): ++ try: ++ del mozconfig[i][j]['PYTHON'] ++ except KeyError: ++ pass + + with LineIO(lambda l: log.error(l)) as out: + verify_python_version(out) + topsrcdir, topobjdir = build_env.topsrcdir, build_env.topobjdir + if topobjdir.endswith('/js/src'): + topobjdir = topobjdir[:-7] + + with LineIO(lambda l: log.info(l)) as out: +@@ -219,17 +226,20 @@ def virtualenv_python(env_python, build_env, mozconfig, help): + log.info('Creating Python environment') + manager.build(python) + + python = normsep(manager.python_path) + + if python != normsep(sys.executable): + log.info('Reexecuting in the virtualenv') + if env_python: +- del os.environ['PYTHON'] ++ try: ++ del os.environ['PYTHON'] ++ except KeyError: ++ pass + # One would prefer to use os.execl, but that's completely borked on + # Windows. + sys.exit(subprocess.call([python] + sys.argv)) + + # We are now in the virtualenv + if not distutils.sysconfig.get_python_lib(): + die('Could not determine python site packages directory') + Property changes on: head/www/firefox/files/patch-bug1288587 ___________________________________________________________________ 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: head/www/firefox/files/patch-bug847568 =================================================================== --- head/www/firefox/files/patch-bug847568 (revision 421530) +++ head/www/firefox/files/patch-bug847568 (revision 421531) @@ -1,257 +1,270 @@ # Allow building against system-wide graphite2/harfbuzz. +diff --git build/moz.configure/old.configure build/moz.configure/old.configure +index 4cbefd5..42ab554 100644 +--- build/moz.configure/old.configure ++++ 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 --- config/Makefile.in +++ config/Makefile.in @@ -49,6 +49,8 @@ export:: $(export-preqs) - -DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \ - -DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \ - -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \ -+ -DMOZ_NATIVE_GRAPHITE2=$(MOZ_NATIVE_GRAPHITE2) \ -+ -DMOZ_NATIVE_HARFBUZZ=$(MOZ_NATIVE_HARFBUZZ) \ + -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 $(INSTALL) system_wrappers $(DIST) diff --git config/system-headers config/system-headers index 18e8703..bdc5f82 100644 --- config/system-headers +++ config/system-headers @@ -1344,3 +1344,11 @@ unicode/utypes.h #endif libutil.h unwind.h -+#if MOZ_NATIVE_GRAPHITE2==1 ++#if MOZ_SYSTEM_GRAPHITE2==1 +graphite2/Font.h +graphite2/Segment.h +#endif -+#if MOZ_NATIVE_HARFBUZZ==1 ++#if MOZ_SYSTEM_HARFBUZZ==1 +harfbuzz/hb-ot.h +harfbuzz/hb.h +#endif diff --git old-configure.in configure.in index ac38f40..87536b7 100644 --- old-configure.in +++ 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_NATIVE_HARFBUZZ=1, -+MOZ_NATIVE_HARFBUZZ=) ++MOZ_SYSTEM_HARFBUZZ=1, ++MOZ_SYSTEM_HARFBUZZ=) + -+if test -n "$MOZ_NATIVE_HARFBUZZ"; then -+ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 1.2.2) ++if test -n "$MOZ_SYSTEM_HARFBUZZ"; then ++ PKG_CHECK_MODULES(MOZ_HARFBUZZ, harfbuzz >= 1.2.6) +fi + -+AC_SUBST(MOZ_NATIVE_HARFBUZZ) ++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_NATIVE_GRAPHITE2=1, -+MOZ_NATIVE_GRAPHITE2=) ++MOZ_SYSTEM_GRAPHITE2=1, ++MOZ_SYSTEM_GRAPHITE2=) + -+if test -n "$MOZ_NATIVE_GRAPHITE2"; then ++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_NATIVE_GRAPHITE2) ++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 --- dom/base/moz.build +++ dom/base/moz.build @@ -397,6 +397,9 @@ if CONFIG['INTEL_ARCHITECTURE']: SOURCES += ['nsTextFragmentSSE2.cpp'] SOURCES['nsTextFragmentSSE2.cpp'].flags += CONFIG['SSE2_FLAGS'] -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + SOURCES['nsContentUtils.cpp'].flags += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + EXTRA_COMPONENTS += [ 'ConsoleAPI.manifest', 'ConsoleAPIStorage.js', diff --git gfx/graphite2/moz-gr-update.sh gfx/graphite2/moz-gr-update.sh index f3d76ea..a9e7fb6 100644 --- gfx/graphite2/moz-gr-update.sh +++ 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." >> #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 --- gfx/harfbuzz/README-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. + +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 --- gfx/moz.build +++ gfx/moz.build @@ -7,6 +7,12 @@ if CONFIG['MOZ_TREE_CAIRO']: DIRS += ['cairo'] -+if not CONFIG['MOZ_NATIVE_GRAPHITE2']: ++if not CONFIG['MOZ_SYSTEM_GRAPHITE2']: + DIRS += ['graphite2/src' ] + -+if not CONFIG['MOZ_NATIVE_HARFBUZZ']: ++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 --- gfx/skia/generate_mozbuild.py +++ gfx/skia/generate_mozbuild.py @@ -134,6 +134,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_ '-Wno-unused-private-field', ] -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] diff --git gfx/skia/moz.build gfx/skia/moz.build index 1d0c2f9..adb8941 100644 --- gfx/skia/moz.build +++ gfx/skia/moz.build @@ -752,6 +752,9 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_ '-Wno-unused-private-field', ] -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk', 'qt'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] diff --git gfx/thebes/moz.build gfx/thebes/moz.build index d5852fa..aeeab25 100644 --- gfx/thebes/moz.build +++ gfx/thebes/moz.build @@ -306,7 +306,13 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] -DEFINES['GRAPHITE2_STATIC'] = True -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + -+if CONFIG['MOZ_NATIVE_GRAPHITE2']: ++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 --- intl/unicharutil/util/moz.build +++ intl/unicharutil/util/moz.build @@ -44,4 +44,7 @@ if CONFIG['ENABLE_INTL_API']: LOCAL_INCLUDES += CONFIG['MOZ_ICU_INCLUDES'] USE_LIBS += ['icu'] -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS'] + DIST_INSTALL = True diff --git netwerk/dns/moz.build netwerk/dns/moz.build index 0b0717a..2e665c9 100644 --- netwerk/dns/moz.build +++ netwerk/dns/moz.build @@ -66,6 +66,9 @@ LOCAL_INCLUDES += [ '/netwerk/base', ] -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++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']] diff --git toolkit/library/moz.build toolkit/library/moz.build index 67f0db9..d42137a 100644 --- toolkit/library/moz.build +++ toolkit/library/moz.build -@@ -231,6 +231,12 @@ if CONFIG['MOZ_NATIVE_LIBVPX']: +@@ -231,6 +231,12 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']: if not CONFIG['MOZ_TREE_PIXMAN']: OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS'] -+if CONFIG['MOZ_NATIVE_GRAPHITE2']: ++if CONFIG['MOZ_SYSTEM_GRAPHITE2']: + OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS'] + -+if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++if CONFIG['MOZ_SYSTEM_HARFBUZZ']: + OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS'] + if CONFIG['MOZ_OSS']: OS_LIBS += CONFIG['MOZ_OSS_LIBS'] Index: head/www/firefox/files/patch-ijg-libjpeg =================================================================== --- head/www/firefox/files/patch-ijg-libjpeg (revision 421530) +++ head/www/firefox/files/patch-ijg-libjpeg (revision 421531) @@ -1,383 +1,383 @@ # Partially revert bug 791305 to allow building with system IJG jpeg library diff --git old-configure.in configure.in index f0aeb5d..1c01010 100644 --- old-configure.in +++ old-configure.in -@@ -4027,11 +4027,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then +@@ -4027,11 +4027,7 @@ if test "$MOZ_SYSTEM_JPEG" = 1; then #include ], [ #if JPEG_LIB_VERSION < $MOZJPEG #error "Insufficient JPEG library version ($MOZJPEG required)." - #endif - #ifndef JCS_EXTENSIONS - #error "libjpeg-turbo JCS_EXTENSIONS required" - #endif - ], + #endif ], - MOZ_NATIVE_JPEG=1, + MOZ_SYSTEM_JPEG=1, AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg])) fi diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp index 8fa8200..1d2a259 100644 --- image/decoders/nsJPEGDecoder.cpp +++ image/decoders/nsJPEGDecoder.cpp @@ -21,13 +21,28 @@ extern "C" { #include "iccjpeg.h" -} +#ifdef JCS_EXTENSIONS #if MOZ_BIG_ENDIAN #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB #else #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX #endif +#else +/* Colorspace conversion (copied from jpegint.h) */ +struct jpeg_color_deconverter { + JMETHOD(void, start_pass, (j_decompress_ptr cinfo)); + JMETHOD(void, color_convert, (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows)); +}; + +METHODDEF(void) +ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows); +#endif +} static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width); @@ -367,6 +382,7 @@ nsJPEGDecoder::WriteInternal(const char* case JCS_GRAYSCALE: case JCS_RGB: case JCS_YCbCr: +#ifdef JCS_EXTENSIONS // if we're not color managing we can decode directly to // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB if (mCMSMode != eCMSMode_All) { @@ -375,6 +391,9 @@ nsJPEGDecoder::WriteInternal(const char* } else { mInfo.out_color_space = JCS_RGB; } +#else + mInfo.out_color_space = JCS_RGB; +#endif break; case JCS_CMYK: case JCS_YCCK: @@ -448,6 +467,16 @@ nsJPEGDecoder::WriteInternal(const char* return; // I/O suspension } +#ifndef JCS_EXTENSIONS + /* Force to use our YCbCr to Packed RGB converter when possible */ + if (!mTransform && (mCMSMode != eCMSMode_All) && + mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) { + /* Special case for the most common case: transform from YCbCr direct into packed ARGB */ + mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/ + mInfo.cconvert->color_convert = ycc_rgb_convert_argb; + } +#endif + // If this is a progressive JPEG ... mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL; @@ -605,7 +633,11 @@ nsJPEGDecoder::OutputScanlines(bool* sus uint32_t* imageRow = ((uint32_t*)mImageData) + (mInfo.output_scanline * mInfo.output_width); +#ifdef JCS_EXTENSIONS if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) { +#else + if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) { +#endif // Special case: scanline will be directly converted into packed ARGB if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) { *suspend = true; // suspend @@ -920,6 +952,282 @@ term_source (j_decompress_ptr jd) } // namespace mozilla +#ifndef JCS_EXTENSIONS +/**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/ + +/* + * YCbCr is defined per CCIR 601-1, except that Cb and Cr are + * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5. + * The conversion equations to be implemented are therefore + * R = Y + 1.40200 * Cr + * G = Y - 0.34414 * Cb - 0.71414 * Cr + * B = Y + 1.77200 * Cb + * where Cb and Cr represent the incoming values less CENTERJSAMPLE. + * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.) + * + * To avoid floating-point arithmetic, we represent the fractional constants + * as integers scaled up by 2^16 (about 4 digits precision); we have to divide + * the products by 2^16, with appropriate rounding, to get the correct answer. + * Notice that Y, being an integral input, does not contribute any fraction + * so it need not participate in the rounding. + * + * For even more speed, we avoid doing any multiplications in the inner loop + * by precalculating the constants times Cb and Cr for all possible values. + * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table); + * for 12-bit samples it is still acceptable. It's not very reasonable for + * 16-bit samples, but if you want lossless storage you shouldn't be changing + * colorspace anyway. + * The Cr=>R and Cb=>B values can be rounded to integers in advance; the + * values for the G calculation are left scaled up, since we must add them + * together before rounding. + */ + +#define SCALEBITS 16 /* speediest right-shift on some machines */ + +/* Use static tables for color processing. */ +/* Four tables, each 256 entries of 4 bytes totals 4K which is not bad... */ + +const int Cr_r_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ + -0xb3, -0xb2, -0xb1, -0xaf, -0xae, -0xac, + -0xab, -0xaa, -0xa8, -0xa7, -0xa5, -0xa4, + -0xa3, -0xa1, -0xa0, -0x9e, -0x9d, -0x9c, + -0x9a, -0x99, -0x97, -0x96, -0x95, -0x93, + -0x92, -0x90, -0x8f, -0x8e, -0x8c, -0x8b, + -0x89, -0x88, -0x87, -0x85, -0x84, -0x82, + -0x81, -0x80, -0x7e, -0x7d, -0x7b, -0x7a, + -0x79, -0x77, -0x76, -0x74, -0x73, -0x72, + -0x70, -0x6f, -0x6d, -0x6c, -0x6b, -0x69, + -0x68, -0x66, -0x65, -0x64, -0x62, -0x61, + -0x5f, -0x5e, -0x5d, -0x5b, -0x5a, -0x58, + -0x57, -0x56, -0x54, -0x53, -0x51, -0x50, + -0x4f, -0x4d, -0x4c, -0x4a, -0x49, -0x48, + -0x46, -0x45, -0x43, -0x42, -0x40, -0x3f, + -0x3e, -0x3c, -0x3b, -0x39, -0x38, -0x37, + -0x35, -0x34, -0x32, -0x31, -0x30, -0x2e, + -0x2d, -0x2b, -0x2a, -0x29, -0x27, -0x26, + -0x24, -0x23, -0x22, -0x20, -0x1f, -0x1d, + -0x1c, -0x1b, -0x19, -0x18, -0x16, -0x15, + -0x14, -0x12, -0x11, -0x0f, -0x0e, -0x0d, + -0x0b, -0x0a, -0x08, -0x07, -0x06, -0x04, + -0x03, -0x01, 0x00, 0x01, 0x03, 0x04, + 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0d, + 0x0e, 0x0f, 0x11, 0x12, 0x14, 0x15, + 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1d, + 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, + 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e, + 0x30, 0x31, 0x32, 0x34, 0x35, 0x37, + 0x38, 0x39, 0x3b, 0x3c, 0x3e, 0x3f, + 0x40, 0x42, 0x43, 0x45, 0x46, 0x48, + 0x49, 0x4a, 0x4c, 0x4d, 0x4f, 0x50, + 0x51, 0x53, 0x54, 0x56, 0x57, 0x58, + 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61, + 0x62, 0x64, 0x65, 0x66, 0x68, 0x69, + 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x72, + 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a, + 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82, + 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b, + 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93, + 0x95, 0x96, 0x97, 0x99, 0x9a, 0x9c, + 0x9d, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4, + 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xac, + 0xae, 0xaf, 0xb1, 0xb2, + }; + +const int Cb_b_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ + -0xe3, -0xe1, -0xdf, -0xde, -0xdc, -0xda, + -0xd8, -0xd6, -0xd5, -0xd3, -0xd1, -0xcf, + -0xce, -0xcc, -0xca, -0xc8, -0xc6, -0xc5, + -0xc3, -0xc1, -0xbf, -0xbe, -0xbc, -0xba, + -0xb8, -0xb7, -0xb5, -0xb3, -0xb1, -0xaf, + -0xae, -0xac, -0xaa, -0xa8, -0xa7, -0xa5, + -0xa3, -0xa1, -0x9f, -0x9e, -0x9c, -0x9a, + -0x98, -0x97, -0x95, -0x93, -0x91, -0x90, + -0x8e, -0x8c, -0x8a, -0x88, -0x87, -0x85, + -0x83, -0x81, -0x80, -0x7e, -0x7c, -0x7a, + -0x78, -0x77, -0x75, -0x73, -0x71, -0x70, + -0x6e, -0x6c, -0x6a, -0x69, -0x67, -0x65, + -0x63, -0x61, -0x60, -0x5e, -0x5c, -0x5a, + -0x59, -0x57, -0x55, -0x53, -0x52, -0x50, + -0x4e, -0x4c, -0x4a, -0x49, -0x47, -0x45, + -0x43, -0x42, -0x40, -0x3e, -0x3c, -0x3a, + -0x39, -0x37, -0x35, -0x33, -0x32, -0x30, + -0x2e, -0x2c, -0x2b, -0x29, -0x27, -0x25, + -0x23, -0x22, -0x20, -0x1e, -0x1c, -0x1b, + -0x19, -0x17, -0x15, -0x13, -0x12, -0x10, + -0x0e, -0x0c, -0x0b, -0x09, -0x07, -0x05, + -0x04, -0x02, 0x00, 0x02, 0x04, 0x05, + 0x07, 0x09, 0x0b, 0x0c, 0x0e, 0x10, + 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b, + 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x25, + 0x27, 0x29, 0x2b, 0x2c, 0x2e, 0x30, + 0x32, 0x33, 0x35, 0x37, 0x39, 0x3a, + 0x3c, 0x3e, 0x40, 0x42, 0x43, 0x45, + 0x47, 0x49, 0x4a, 0x4c, 0x4e, 0x50, + 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a, + 0x5c, 0x5e, 0x60, 0x61, 0x63, 0x65, + 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x70, + 0x71, 0x73, 0x75, 0x77, 0x78, 0x7a, + 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x85, + 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90, + 0x91, 0x93, 0x95, 0x97, 0x98, 0x9a, + 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa5, + 0xa7, 0xa8, 0xaa, 0xac, 0xae, 0xaf, + 0xb1, 0xb3, 0xb5, 0xb7, 0xb8, 0xba, + 0xbc, 0xbe, 0xbf, 0xc1, 0xc3, 0xc5, + 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xcf, + 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda, + 0xdc, 0xde, 0xdf, 0xe1, + }; + +const int Cr_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ + 0x5b6900, 0x5ab22e, 0x59fb5c, 0x59448a, 0x588db8, 0x57d6e6, + 0x572014, 0x566942, 0x55b270, 0x54fb9e, 0x5444cc, 0x538dfa, + 0x52d728, 0x522056, 0x516984, 0x50b2b2, 0x4ffbe0, 0x4f450e, + 0x4e8e3c, 0x4dd76a, 0x4d2098, 0x4c69c6, 0x4bb2f4, 0x4afc22, + 0x4a4550, 0x498e7e, 0x48d7ac, 0x4820da, 0x476a08, 0x46b336, + 0x45fc64, 0x454592, 0x448ec0, 0x43d7ee, 0x43211c, 0x426a4a, + 0x41b378, 0x40fca6, 0x4045d4, 0x3f8f02, 0x3ed830, 0x3e215e, + 0x3d6a8c, 0x3cb3ba, 0x3bfce8, 0x3b4616, 0x3a8f44, 0x39d872, + 0x3921a0, 0x386ace, 0x37b3fc, 0x36fd2a, 0x364658, 0x358f86, + 0x34d8b4, 0x3421e2, 0x336b10, 0x32b43e, 0x31fd6c, 0x31469a, + 0x308fc8, 0x2fd8f6, 0x2f2224, 0x2e6b52, 0x2db480, 0x2cfdae, + 0x2c46dc, 0x2b900a, 0x2ad938, 0x2a2266, 0x296b94, 0x28b4c2, + 0x27fdf0, 0x27471e, 0x26904c, 0x25d97a, 0x2522a8, 0x246bd6, + 0x23b504, 0x22fe32, 0x224760, 0x21908e, 0x20d9bc, 0x2022ea, + 0x1f6c18, 0x1eb546, 0x1dfe74, 0x1d47a2, 0x1c90d0, 0x1bd9fe, + 0x1b232c, 0x1a6c5a, 0x19b588, 0x18feb6, 0x1847e4, 0x179112, + 0x16da40, 0x16236e, 0x156c9c, 0x14b5ca, 0x13fef8, 0x134826, + 0x129154, 0x11da82, 0x1123b0, 0x106cde, 0x0fb60c, 0x0eff3a, + 0x0e4868, 0x0d9196, 0x0cdac4, 0x0c23f2, 0x0b6d20, 0x0ab64e, + 0x09ff7c, 0x0948aa, 0x0891d8, 0x07db06, 0x072434, 0x066d62, + 0x05b690, 0x04ffbe, 0x0448ec, 0x03921a, 0x02db48, 0x022476, + 0x016da4, 0x00b6d2, 0x000000, -0x00b6d2, -0x016da4, -0x022476, + -0x02db48, -0x03921a, -0x0448ec, -0x04ffbe, -0x05b690, -0x066d62, + -0x072434, -0x07db06, -0x0891d8, -0x0948aa, -0x09ff7c, -0x0ab64e, + -0x0b6d20, -0x0c23f2, -0x0cdac4, -0x0d9196, -0x0e4868, -0x0eff3a, + -0x0fb60c, -0x106cde, -0x1123b0, -0x11da82, -0x129154, -0x134826, + -0x13fef8, -0x14b5ca, -0x156c9c, -0x16236e, -0x16da40, -0x179112, + -0x1847e4, -0x18feb6, -0x19b588, -0x1a6c5a, -0x1b232c, -0x1bd9fe, + -0x1c90d0, -0x1d47a2, -0x1dfe74, -0x1eb546, -0x1f6c18, -0x2022ea, + -0x20d9bc, -0x21908e, -0x224760, -0x22fe32, -0x23b504, -0x246bd6, + -0x2522a8, -0x25d97a, -0x26904c, -0x27471e, -0x27fdf0, -0x28b4c2, + -0x296b94, -0x2a2266, -0x2ad938, -0x2b900a, -0x2c46dc, -0x2cfdae, + -0x2db480, -0x2e6b52, -0x2f2224, -0x2fd8f6, -0x308fc8, -0x31469a, + -0x31fd6c, -0x32b43e, -0x336b10, -0x3421e2, -0x34d8b4, -0x358f86, + -0x364658, -0x36fd2a, -0x37b3fc, -0x386ace, -0x3921a0, -0x39d872, + -0x3a8f44, -0x3b4616, -0x3bfce8, -0x3cb3ba, -0x3d6a8c, -0x3e215e, + -0x3ed830, -0x3f8f02, -0x4045d4, -0x40fca6, -0x41b378, -0x426a4a, + -0x43211c, -0x43d7ee, -0x448ec0, -0x454592, -0x45fc64, -0x46b336, + -0x476a08, -0x4820da, -0x48d7ac, -0x498e7e, -0x4a4550, -0x4afc22, + -0x4bb2f4, -0x4c69c6, -0x4d2098, -0x4dd76a, -0x4e8e3c, -0x4f450e, + -0x4ffbe0, -0x50b2b2, -0x516984, -0x522056, -0x52d728, -0x538dfa, + -0x5444cc, -0x54fb9e, -0x55b270, -0x566942, -0x572014, -0x57d6e6, + -0x588db8, -0x59448a, -0x59fb5c, -0x5ab22e, + }; + +const int Cb_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={ + 0x2c8d00, 0x2c34e6, 0x2bdccc, 0x2b84b2, 0x2b2c98, 0x2ad47e, + 0x2a7c64, 0x2a244a, 0x29cc30, 0x297416, 0x291bfc, 0x28c3e2, + 0x286bc8, 0x2813ae, 0x27bb94, 0x27637a, 0x270b60, 0x26b346, + 0x265b2c, 0x260312, 0x25aaf8, 0x2552de, 0x24fac4, 0x24a2aa, + 0x244a90, 0x23f276, 0x239a5c, 0x234242, 0x22ea28, 0x22920e, + 0x2239f4, 0x21e1da, 0x2189c0, 0x2131a6, 0x20d98c, 0x208172, + 0x202958, 0x1fd13e, 0x1f7924, 0x1f210a, 0x1ec8f0, 0x1e70d6, + 0x1e18bc, 0x1dc0a2, 0x1d6888, 0x1d106e, 0x1cb854, 0x1c603a, + 0x1c0820, 0x1bb006, 0x1b57ec, 0x1affd2, 0x1aa7b8, 0x1a4f9e, + 0x19f784, 0x199f6a, 0x194750, 0x18ef36, 0x18971c, 0x183f02, + 0x17e6e8, 0x178ece, 0x1736b4, 0x16de9a, 0x168680, 0x162e66, + 0x15d64c, 0x157e32, 0x152618, 0x14cdfe, 0x1475e4, 0x141dca, + 0x13c5b0, 0x136d96, 0x13157c, 0x12bd62, 0x126548, 0x120d2e, + 0x11b514, 0x115cfa, 0x1104e0, 0x10acc6, 0x1054ac, 0x0ffc92, + 0x0fa478, 0x0f4c5e, 0x0ef444, 0x0e9c2a, 0x0e4410, 0x0debf6, + 0x0d93dc, 0x0d3bc2, 0x0ce3a8, 0x0c8b8e, 0x0c3374, 0x0bdb5a, + 0x0b8340, 0x0b2b26, 0x0ad30c, 0x0a7af2, 0x0a22d8, 0x09cabe, + 0x0972a4, 0x091a8a, 0x08c270, 0x086a56, 0x08123c, 0x07ba22, + 0x076208, 0x0709ee, 0x06b1d4, 0x0659ba, 0x0601a0, 0x05a986, + 0x05516c, 0x04f952, 0x04a138, 0x04491e, 0x03f104, 0x0398ea, + 0x0340d0, 0x02e8b6, 0x02909c, 0x023882, 0x01e068, 0x01884e, + 0x013034, 0x00d81a, 0x008000, 0x0027e6, -0x003034, -0x00884e, + -0x00e068, -0x013882, -0x01909c, -0x01e8b6, -0x0240d0, -0x0298ea, + -0x02f104, -0x03491e, -0x03a138, -0x03f952, -0x04516c, -0x04a986, + -0x0501a0, -0x0559ba, -0x05b1d4, -0x0609ee, -0x066208, -0x06ba22, + -0x07123c, -0x076a56, -0x07c270, -0x081a8a, -0x0872a4, -0x08cabe, + -0x0922d8, -0x097af2, -0x09d30c, -0x0a2b26, -0x0a8340, -0x0adb5a, + -0x0b3374, -0x0b8b8e, -0x0be3a8, -0x0c3bc2, -0x0c93dc, -0x0cebf6, + -0x0d4410, -0x0d9c2a, -0x0df444, -0x0e4c5e, -0x0ea478, -0x0efc92, + -0x0f54ac, -0x0facc6, -0x1004e0, -0x105cfa, -0x10b514, -0x110d2e, + -0x116548, -0x11bd62, -0x12157c, -0x126d96, -0x12c5b0, -0x131dca, + -0x1375e4, -0x13cdfe, -0x142618, -0x147e32, -0x14d64c, -0x152e66, + -0x158680, -0x15de9a, -0x1636b4, -0x168ece, -0x16e6e8, -0x173f02, + -0x17971c, -0x17ef36, -0x184750, -0x189f6a, -0x18f784, -0x194f9e, + -0x19a7b8, -0x19ffd2, -0x1a57ec, -0x1ab006, -0x1b0820, -0x1b603a, + -0x1bb854, -0x1c106e, -0x1c6888, -0x1cc0a2, -0x1d18bc, -0x1d70d6, + -0x1dc8f0, -0x1e210a, -0x1e7924, -0x1ed13e, -0x1f2958, -0x1f8172, + -0x1fd98c, -0x2031a6, -0x2089c0, -0x20e1da, -0x2139f4, -0x21920e, + -0x21ea28, -0x224242, -0x229a5c, -0x22f276, -0x234a90, -0x23a2aa, + -0x23fac4, -0x2452de, -0x24aaf8, -0x250312, -0x255b2c, -0x25b346, + -0x260b60, -0x26637a, -0x26bb94, -0x2713ae, -0x276bc8, -0x27c3e2, + -0x281bfc, -0x287416, -0x28cc30, -0x29244a, -0x297c64, -0x29d47e, + -0x2a2c98, -0x2a84b2, -0x2adccc, -0x2b34e6, + }; + + +/* We assume that right shift corresponds to signed division by 2 with + * rounding towards minus infinity. This is correct for typical "arithmetic + * shift" instructions that shift in copies of the sign bit. But some + * C compilers implement >> with an unsigned shift. For these machines you + * must define RIGHT_SHIFT_IS_UNSIGNED. + * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity. + * It is only applied with constant shift counts. SHIFT_TEMPS must be + * included in the variables of any routine using RIGHT_SHIFT. + */ + +#ifdef RIGHT_SHIFT_IS_UNSIGNED +#define SHIFT_TEMPS INT32 shift_temp; +#define RIGHT_SHIFT(x,shft) \ + ((shift_temp = (x)) < 0 ? \ + (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \ + (shift_temp >> (shft))) +#else +#define SHIFT_TEMPS +#define RIGHT_SHIFT(x,shft) ((x) >> (shft)) +#endif + + +METHODDEF(void) +ycc_rgb_convert_argb (j_decompress_ptr cinfo, + JSAMPIMAGE input_buf, JDIMENSION input_row, + JSAMPARRAY output_buf, int num_rows) +{ + JDIMENSION num_cols = cinfo->output_width; + JSAMPLE * range_limit = cinfo->sample_range_limit; + + SHIFT_TEMPS + + /* This is used if we don't have SSE2 */ + + while (--num_rows >= 0) { + JSAMPROW inptr0 = input_buf[0][input_row]; + JSAMPROW inptr1 = input_buf[1][input_row]; + JSAMPROW inptr2 = input_buf[2][input_row]; + input_row++; + uint32_t *outptr = (uint32_t *) *output_buf++; + for (JDIMENSION col = 0; col < num_cols; col++) { + int y = GETJSAMPLE(inptr0[col]); + int cb = GETJSAMPLE(inptr1[col]); + int cr = GETJSAMPLE(inptr2[col]); + JSAMPLE * range_limit_y = range_limit + y; + /* Range-limiting is essential due to noise introduced by DCT losses. */ + outptr[col] = 0xFF000000 | + ( range_limit_y[Cr_r_tab[cr]] << 16 ) | + ( range_limit_y[((int) RIGHT_SHIFT(Cb_g_tab[cb] + Cr_g_tab[cr], SCALEBITS))] << 8 ) | + ( range_limit_y[Cb_b_tab[cb]] ); + } + } +} +#endif + + ///*************** Inverted CMYK -> RGB conversion ************************* /// Input is (Inverted) CMYK stored as 4 bytes per pixel. /// Output is RGB stored as 3 bytes per pixel. Index: head/www/firefox/files/patch-modules-libpref-init-all.js =================================================================== --- head/www/firefox/files/patch-modules-libpref-init-all.js (revision 421530) +++ head/www/firefox/files/patch-modules-libpref-init-all.js (revision 421531) @@ -1,15 +1,14 @@ ---- modules/libpref/init/all.js.orig 2015-08-06 22:39:34 UTC +--- modules/libpref/init/all.js.orig 2016-07-25 20:22:05 UTC +++ modules/libpref/init/all.js -@@ -4052,7 +4052,12 @@ pref("layers.max-active", -1); +@@ -4453,6 +4453,11 @@ pref("layers.max-active", -1); + // if you change the tile size. pref("layers.tiles.adjust", true); - // Set the default values, and then override per-platform as needed -+#ifdef MOZ_TREE_CAIRO - pref("layers.offmainthreadcomposition.enabled", true); -+#else ++#ifndef MOZ_TREE_CAIRO +// Disable for system cairo on suspicion of causing random crashes -+pref("layers.offmainthreadcomposition.enabled", false); ++pref("layers.offmainthreadcomposition.force-disabled", true); +#endif ++ // Compositor target frame rate. NOTE: If vsync is enabled the compositor // frame rate will still be capped. // -1 -> default (match layout.frame_rate or 60 FPS) Index: head/www/firefox/files/patch-z-bug517422 =================================================================== --- head/www/firefox/files/patch-z-bug517422 (revision 421530) +++ head/www/firefox/files/patch-z-bug517422 (revision 421531) @@ -1,446 +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 +--- build/moz.configure/old.configure ++++ 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 --- config/Makefile.in +++ config/Makefile.in @@ -77,6 +77,11 @@ export:: $(export-preqs) - -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \ - -DMOZ_NATIVE_GRAPHITE2=$(MOZ_NATIVE_GRAPHITE2) \ - -DMOZ_NATIVE_HARFBUZZ=$(MOZ_NATIVE_HARFBUZZ) \ -+ -DMOZ_NATIVE_OGG=$(MOZ_NATIVE_OGG) \ -+ -DMOZ_NATIVE_THEORA=$(MOZ_NATIVE_THEORA) \ -+ -DMOZ_NATIVE_VORBIS=$(MOZ_NATIVE_VORBIS) \ -+ -DMOZ_NATIVE_TREMOR=$(MOZ_NATIVE_TREMOR) \ -+ -DMOZ_NATIVE_SOUNDTOUCH=$(MOZ_NATIVE_SOUNDTOUCH) \ + -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 $(INSTALL) system_wrappers $(DIST) diff --git config/external/moz.build config/external/moz.build index f67c5c7..eb909ce 100644 --- config/external/moz.build +++ 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_NATIVE_OGG']: ++if not CONFIG['MOZ_SYSTEM_OGG']: + external_dirs += ['media/libogg'] + -+if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_NATIVE_VORBIS']: ++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_NATIVE_TREMOR']: ++if CONFIG['MOZ_TREMOR'] and not CONFIG['MOZ_SYSTEM_TREMOR']: external_dirs += ['media/libtremor'] -+if not CONFIG['MOZ_NATIVE_THEORA']: ++if not CONFIG['MOZ_SYSTEM_THEORA']: + external_dirs += ['media/libtheora'] + -+if not CONFIG['MOZ_NATIVE_SOUNDTOUCH']: ++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 --- config/system-headers +++ config/system-headers @@ -1364,3 +1363,17 @@ graphite2/Segment.h harfbuzz/hb-ot.h harfbuzz/hb.h #endif -+#if MOZ_NATIVE_OGG==1 ++#if MOZ_SYSTEM_OGG==1 +ogg/ogg.h +ogg/os_types.h +#endif -+#if MOZ_NATIVE_THEORA==1 ++#if MOZ_SYSTEM_THEORA==1 +theora/theoradec.h +#endif -+#if MOZ_NATIVE_VORBIS==1 ++#if MOZ_SYSTEM_VORBIS==1 +vorbis/codec.h +vorbis/vorbisenc.h +#endif -+#if MOZ_NATIVE_TREMOR==1 ++#if MOZ_SYSTEM_TREMOR==1 +tremor/ivorbiscodec.h +#endif diff --git old-configure.in configure.in index 87db361..7947626 100644 --- old-configure.in +++ 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_NATIVE_OGG=1, -+MOZ_NATIVE_OGG=) ++MOZ_SYSTEM_OGG=1, ++MOZ_SYSTEM_OGG=) + -+if test -n "$MOZ_NATIVE_OGG"; then ++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_NATIVE_OGG) ++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_NATIVE_VORBIS=1, -+MOZ_NATIVE_VORBIS=) ++MOZ_SYSTEM_VORBIS=1, ++MOZ_SYSTEM_VORBIS=) + -+if test -n "$MOZ_NATIVE_VORBIS"; then ++if test -n "$MOZ_SYSTEM_VORBIS"; then + PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5) +fi + -+AC_SUBST(MOZ_NATIVE_VORBIS) ++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_NATIVE_TREMOR=1, -+MOZ_NATIVE_TREMOR=) ++MOZ_SYSTEM_TREMOR=1, ++MOZ_SYSTEM_TREMOR=) + -+if test -n "$MOZ_NATIVE_TREMOR"; then ++if test -n "$MOZ_SYSTEM_TREMOR"; then + PKG_CHECK_MODULES(MOZ_TREMOR, vorbisidec >= 1.2.1) +fi + -+AC_SUBST(MOZ_NATIVE_TREMOR) ++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_NATIVE_THEORA=1, -+MOZ_NATIVE_THEORA=) ++MOZ_SYSTEM_THEORA=1, ++MOZ_SYSTEM_THEORA=) + -+if test -n "$MOZ_NATIVE_THEORA"; then ++if test -n "$MOZ_SYSTEM_THEORA"; then + PKG_CHECK_MODULES(MOZ_THEORA, theora >= 1.2) +fi + -+AC_SUBST(MOZ_NATIVE_THEORA) ++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_NATIVE_SOUNDTOUCH=1, -+MOZ_NATIVE_SOUNDTOUCH=) ++MOZ_SYSTEM_SOUNDTOUCH=1, ++MOZ_SYSTEM_SOUNDTOUCH=) + -+if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then ++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_NATIVE_SOUNDTOUCH"; then -+ AC_DEFINE(MOZ_NATIVE_SOUNDTOUCH) ++if test -n "$MOZ_SYSTEM_SOUNDTOUCH"; then ++ AC_DEFINE(MOZ_SYSTEM_SOUNDTOUCH) +fi -+AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) ++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 --- dom/media/AudioStream.cpp +++ dom/media/AudioStream.cpp -@@ -129,7 +129,9 @@ AudioStream::AudioStream() +@@ -125,7 +125,9 @@ AudioStream::AudioStream(DataSource& aSo + , mOutRate(0) + , mChannels(0) , mOutChannels(0) - , mWritten(0) - , mAudioClock(this) -+#ifndef MOZ_NATIVE_SOUNDTOUCH ++#ifndef MOZ_SYSTEM_SOUNDTOUCH , mTimeStretcher(nullptr) +#endif , mDumpFile(nullptr) - , mBytesPerFrame(0) , mState(INITIALIZED) + , mDataSource(aSource) @@ -152,9 +154,11 @@ AudioStream::~AudioStream() if (mDumpFile) { fclose(mDumpFile); } -+#ifndef MOZ_NATIVE_SOUNDTOUCH ++#ifndef MOZ_SYSTEM_SOUNDTOUCH if (mTimeStretcher) { soundtouch::destroySoundTouchObj(mTimeStretcher); } +#endif } size_t @@ -177,7 +181,11 @@ nsresult AudioStream::EnsureTimeStretcherInitializedUnlocked() { mMonitor.AssertCurrentThreadOwns(); if (!mTimeStretcher) { -+#ifdef MOZ_NATIVE_SOUNDTOUCH ++#ifdef MOZ_SYSTEM_SOUNDTOUCH + mTimeStretcher = new soundtouch::SoundTouch(); +#else mTimeStretcher = soundtouch::createSoundTouchObj(); +#endif mTimeStretcher->setSampleRate(mInRate); mTimeStretcher->setChannels(mOutChannels); mTimeStretcher->setPitch(1.0); diff --git dom/media/AudioStream.h dom/media/AudioStream.h index a552e3e..02b80b1 100644 --- dom/media/AudioStream.h +++ dom/media/AudioStream.h @@ -15,7 +15,11 @@ #include "mozilla/RefPtr.h" #include "mozilla/UniquePtr.h" #include "CubebUtils.h" -+#ifdef MOZ_NATIVE_SOUNDTOUCH ++#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_NATIVE_SOUNDTOUCH ++#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 --- dom/media/moz.build +++ dom/media/moz.build @@ -300,6 +300,21 @@ if CONFIG['MOZ_WEBRTC']: DEFINES['MOZILLA_INTERNAL_API'] = True -+if CONFIG['MOZ_NATIVE_OGG']: ++if CONFIG['MOZ_SYSTEM_OGG']: + CXXFLAGS += CONFIG['MOZ_OGG_CFLAGS'] + -+if CONFIG['MOZ_NATIVE_THEORA']: ++if CONFIG['MOZ_SYSTEM_THEORA']: + CXXFLAGS += CONFIG['MOZ_THEORA_CFLAGS'] + -+if CONFIG['MOZ_NATIVE_VORBIS']: ++if CONFIG['MOZ_SYSTEM_VORBIS']: + CXXFLAGS += CONFIG['MOZ_VORBIS_CFLAGS'] + -+if CONFIG['MOZ_NATIVE_TREMOR']: ++if CONFIG['MOZ_SYSTEM_TREMOR']: + CXXFLAGS += CONFIG['MOZ_TREMOR_CFLAGS'] + -+if CONFIG['MOZ_NATIVE_SOUNDTOUCH']: ++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 --- media/libogg/README_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 --- media/libsoundtouch/README_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 --- media/libsoundtouch/src/soundtouch_perms.h +++ media/libsoundtouch/src/soundtouch_perms.h @@ -12,7 +12,9 @@ #pragma GCC visibility push(default) #include "SoundTouch.h" -+#ifndef MOZ_NATIVE_SOUNDTOUCH ++#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 --- media/libtheora/README_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 --- media/libtheora/moz.build +++ 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_NATIVE_OGG']: ++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 --- media/libtremor/README_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 --- media/libtremor/moz.build +++ media/libtremor/moz.build @@ -6,3 +6,5 @@ DIRS += ['include/tremor', 'lib'] -+if CONFIG['MOZ_NATIVE_OGG']: ++if CONFIG['MOZ_SYSTEM_OGG']: + CFLAGS += CONFIG['MOZ_OGG_CFLAGS'] diff --git media/libvorbis/README_MOZILLA media/libvorbis/README_MOZILLA index 7c7454c..55baedd 100644 --- media/libvorbis/README_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 --- media/libvorbis/moz.build +++ 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_NATIVE_OGG']: ++if CONFIG['MOZ_SYSTEM_OGG']: + CFLAGS += CONFIG['MOZ_OGG_CFLAGS'] diff --git toolkit/library/moz.build toolkit/library/moz.build index d42137a..695e75a8 100644 --- toolkit/library/moz.build +++ toolkit/library/moz.build -@@ -178,6 +178,21 @@ if CONFIG['MOZ_NATIVE_PNG']: - if CONFIG['MOZ_NATIVE_HUNSPELL']: +@@ -178,6 +178,21 @@ if CONFIG['MOZ_SYSTEM_PNG']: + if CONFIG['MOZ_SYSTEM_HUNSPELL']: OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS'] -+if CONFIG['MOZ_NATIVE_OGG']: ++if CONFIG['MOZ_SYSTEM_OGG']: + OS_LIBS += CONFIG['MOZ_OGG_LIBS'] + -+if CONFIG['MOZ_NATIVE_THEORA']: ++if CONFIG['MOZ_SYSTEM_THEORA']: + OS_LIBS += CONFIG['MOZ_THEORA_LIBS'] + -+if CONFIG['MOZ_NATIVE_VORBIS']: ++if CONFIG['MOZ_SYSTEM_VORBIS']: + OS_LIBS += CONFIG['MOZ_VORBIS_LIBS'] + -+if CONFIG['MOZ_NATIVE_TREMOR']: ++if CONFIG['MOZ_SYSTEM_TREMOR']: + OS_LIBS += CONFIG['MOZ_TREMOR_LIBS'] + -+if CONFIG['MOZ_NATIVE_SOUNDTOUCH']: ++if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: + OS_LIBS += CONFIG['MOZ_SOUNDTOUCH_LIBS'] + - if CONFIG['MOZ_NATIVE_LIBEVENT']: + 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 --- xpcom/build/XPCOMInit.cpp +++ 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: head/www/firefox-esr/Makefile =================================================================== --- head/www/firefox-esr/Makefile (revision 421530) +++ head/www/firefox-esr/Makefile (revision 421531) @@ -1,79 +1,80 @@ # Created by: Alan Eldridge # $FreeBSD$ PORTNAME= firefox DISTVERSION= 45.4.0 DISTVERSIONSUFFIX=esr.source +PORTREVISION= 1 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source \ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}esr-candidates/build1/source PKGNAMESUFFIX= -esr MAINTAINER= gecko@FreeBSD.org COMMENT= Web browser based on the browser portion of Mozilla BUILD_DEPENDS= nspr>=4.12:devel/nspr \ nss>=3.21.1:security/nss \ libevent2>=2.0.21_2:devel/libevent2 \ soundtouch>=1.9.0:audio/soundtouch \ harfbuzz>=1.1.0:print/harfbuzz \ graphite2>=1.3.6:graphics/graphite2 \ png>=1.6.19:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ sqlite3>=3.9.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 LIB_DEPENDS= libv4l2.so:multimedia/libv4l USE_GECKO= gecko CPE_PRODUCT= ${PORTNAME}_esr CONFLICTS_INSTALL= firefox-[0-9]* MOZ_PKGCONFIG_FILES= # empty USE_MOZILLA= # empty MOZILLA_NAME= Firefox USE_GL= gl USES= tar:xz FIREFOX_ICON= ${MOZILLA}.png FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \ --enable-application=browser \ --enable-official-branding OPTIONS_EXCLUDE= GSTREAMER LOGGING OPTIONS_DEFINE= RUST OPTIONS_DEFAULT= BUNDLED_CAIRO GTK2 OPTIONS_SINGLE+= TOOLKIT OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 .include "${.CURDIR}/../../www/firefox/Makefile.options" WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION}esr post-extract: @${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \ -e 's|@MOZILLA_NAME@|${MOZILLA_NAME}|' \ <${FILESDIR}/firefox.desktop.in >${WRKDIR}/${MOZILLA}.desktop post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/browser/app/nsBrowserApp.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) post-install: ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${STAGEDIR}${PREFIX}/share/applications/ ${LN} -sf ${FIREFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${FIREFOX_ICON} .include Index: head/www/firefox-i18n/Makefile =================================================================== --- head/www/firefox-i18n/Makefile (revision 421530) +++ head/www/firefox-i18n/Makefile (revision 421531) @@ -1,89 +1,89 @@ # Created by: Andrew Pantyukhin # $FreeBSD$ PORTNAME= firefox-i18n -PORTVERSION= 47.0.1 +PORTVERSION= 49.0 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \ - MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi + MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build2/linux-i686/xpi PKGNAMEPREFIX= DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/} DIST_SUBDIR= xpi/${DISTNAME} MAINTAINER= gecko@FreeBSD.org COMMENT= Localized interface for Firefox EXTRACT_DEPENDS= zip:archivers/zip -USES= zip:infozip gecko:firefox,47,build +USES= zip:infozip gecko:firefox,49,build USE_XPI= firefox NO_ARCH= yes USE_SUBMAKE= yes WDIR= langpack-*@firefox.mozilla.org XPI_DISTNAMES= ${FIREFOX_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" FIREFOX_I18N_?= ${FIREFOX_I18N} .for dist in ${XPI_DISTNAMES} XPI_ID_${dist}= langpack-${dist}@firefox.mozilla.org .endfor pre-everything:: @${ECHO_CMD} @${ECHO_CMD} "Please define FIREFOX_I18N_ALL to install all languages." @${ECHO_CMD} do-extract: @${MKDIR} ${WRKSRC} @for lang in ${FIREFOX_I18N_}; do \ if ! (${UNZIP_CMD} -qo ${_DISTDIR}/$$lang.xpi -d ${WRKSRC}/langpack-$$lang@firefox.mozilla.org);\ then \ exit 1; \ fi; \ cd ${WRKSRC}/langpack-$$lang@firefox.mozilla.org/; \ ${FIND} -H -s * ! -type d | \ ${SED} -e "s|^|lib/xpi/langpack-$$lang@firefox.mozilla.org/|" >> ${PLISTF}; \ done ${CAT} ${PLISTF} | ${SORT} >> ${PLIST} do-install: @${MKDIR} ${STAGEDIR}${XPI_LIBDIR} cd ${WRKSRC}; ${PAX} -rw . ${STAGEDIR}${XPI_LIBDIR} ${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${WDIR}/ @for e in ${STAGEDIR}${XPI_LIBDIR}/${WDIR}; do \ for _dir in ${XPI_LINKFARMS} ; do \ ${LN} -sf $${_e##*/} ${STAGEDIR}$$_dir/ ${_Q} ; \ done \ done @${ECHO_CMD} '@exec ${INSTALL} -d ${XPI_SLDIRS_ALL:S,^${PREFIX},%D,}' ${_A} @${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} -f $$_dir/${WDIR} ; }' ${_A} post-patch: ${FIND} ${WRKSRC} -name install.rdf -print0 | \ ${XARGS} -0L1 ${REINPLACE_CMD} -i '' -e '/ Index: head/www/firefox-i18n/distinfo =================================================================== --- head/www/firefox-i18n/distinfo (revision 421530) +++ head/www/firefox-i18n/distinfo (revision 421531) @@ -1,180 +1,181 @@ -SHA256 (xpi/firefox-i18n-47.0.1/ach.xpi) = 45bc4e91e4e6adf7242aee948158b5afee17c4770dfa5dccc7355d85e531aef8 -SIZE (xpi/firefox-i18n-47.0.1/ach.xpi) = 425998 -SHA256 (xpi/firefox-i18n-47.0.1/af.xpi) = a1e279483c5344db24a4ccfc2c38e8b6efcb424825fd85bc07d16d3277e0e7d8 -SIZE (xpi/firefox-i18n-47.0.1/af.xpi) = 441515 -SHA256 (xpi/firefox-i18n-47.0.1/an.xpi) = 40c1b71ce8fba6a16cd8b3d1ddfaef2fc6cf15502cd0aa567c3d5f3bee698447 -SIZE (xpi/firefox-i18n-47.0.1/an.xpi) = 453260 -SHA256 (xpi/firefox-i18n-47.0.1/ar.xpi) = ce4907b3c63db0f81386d8177f51fefa6713e74a0960eda49178027a61cc2abc -SIZE (xpi/firefox-i18n-47.0.1/ar.xpi) = 478502 -SHA256 (xpi/firefox-i18n-47.0.1/as.xpi) = 14057de2c80c22337dbb1ed8809a966919645f1dc2a8da42e907c570a969c917 -SIZE (xpi/firefox-i18n-47.0.1/as.xpi) = 484619 -SHA256 (xpi/firefox-i18n-47.0.1/ast.xpi) = e58e044b10c9c7d299866bd2d710d35ce56d43bbe6427c0029ad86bcfd69c4c6 -SIZE (xpi/firefox-i18n-47.0.1/ast.xpi) = 422168 -SHA256 (xpi/firefox-i18n-47.0.1/az.xpi) = 8b60d632ed4271a42d03345f5b6bbd68bf09b4b98263e6281d79e604488e5e39 -SIZE (xpi/firefox-i18n-47.0.1/az.xpi) = 453802 -SHA256 (xpi/firefox-i18n-47.0.1/be.xpi) = 05c89d49ec5c593c5ae98d22b0e435c5f1fb4c6ac97938721d2277f5210c91b7 -SIZE (xpi/firefox-i18n-47.0.1/be.xpi) = 445105 -SHA256 (xpi/firefox-i18n-47.0.1/bg.xpi) = c3b8b4969bb809eba2a0a3d5a940682dd77c2707acb2a9d80231e9237dfaab13 -SIZE (xpi/firefox-i18n-47.0.1/bg.xpi) = 490776 -SHA256 (xpi/firefox-i18n-47.0.1/bn-BD.xpi) = cc6a61c51a212d29251e43938940524ac3859ca2675e56a4cf97f58cee55b5ef -SIZE (xpi/firefox-i18n-47.0.1/bn-BD.xpi) = 509738 -SHA256 (xpi/firefox-i18n-47.0.1/bn-IN.xpi) = 2f174dcf71804700c17326e5192ed80c43c19c603877a5e571feba1df7a51558 -SIZE (xpi/firefox-i18n-47.0.1/bn-IN.xpi) = 515482 -SHA256 (xpi/firefox-i18n-47.0.1/br.xpi) = 91978b6bea28c3ef2cbd41d75afcb1fe25fc506f9ca5a3caa3b23ccfdefaee0c -SIZE (xpi/firefox-i18n-47.0.1/br.xpi) = 430467 -SHA256 (xpi/firefox-i18n-47.0.1/bs.xpi) = 09732c9fa433178638fcf44abdb65b4bb81f846deb3a3cd10bbfde3ba594da14 -SIZE (xpi/firefox-i18n-47.0.1/bs.xpi) = 447152 -SHA256 (xpi/firefox-i18n-47.0.1/ca.xpi) = d6f1cbf852d55dc8d5b47f642cd4ac4c889df0662da620d4370077bbad5771c8 -SIZE (xpi/firefox-i18n-47.0.1/ca.xpi) = 438340 -SHA256 (xpi/firefox-i18n-47.0.1/cs.xpi) = 432e0f194cc6513ea9c998ba09032b646a55e5cada4de3512b88436d63622363 -SIZE (xpi/firefox-i18n-47.0.1/cs.xpi) = 438404 -SHA256 (xpi/firefox-i18n-47.0.1/cy.xpi) = 02f69f9ae0c62ce88a747974a357b28622b5b5c162818b12a91a5b5e9dbea419 -SIZE (xpi/firefox-i18n-47.0.1/cy.xpi) = 433790 -SHA256 (xpi/firefox-i18n-47.0.1/da.xpi) = d645b416e27c0376195bf9c8620f77ff9a33dfdd2703b4f02e0d021b411ad54a -SIZE (xpi/firefox-i18n-47.0.1/da.xpi) = 424569 -SHA256 (xpi/firefox-i18n-47.0.1/de.xpi) = 611080e81b13ac5cfa0cc84ccaacd91f2c102884e36558af73d7d71fad18db0c -SIZE (xpi/firefox-i18n-47.0.1/de.xpi) = 440551 -SHA256 (xpi/firefox-i18n-47.0.1/dsb.xpi) = be5dd0e172d05143333fd093e4916bdc8f858c0c82e7a4ad8d526baf288b15bb -SIZE (xpi/firefox-i18n-47.0.1/dsb.xpi) = 458254 -SHA256 (xpi/firefox-i18n-47.0.1/el.xpi) = 5abae91c3dca06d4f9f4ed683f9e1db33461b53442beb37297fe7b0a10fbd055 -SIZE (xpi/firefox-i18n-47.0.1/el.xpi) = 470596 -SHA256 (xpi/firefox-i18n-47.0.1/en-GB.xpi) = 9c15f22d32aeeb2d3f7c7defd6394eb3b07973eb68c96e8cb9add5131ceb695c -SIZE (xpi/firefox-i18n-47.0.1/en-GB.xpi) = 418329 -SHA256 (xpi/firefox-i18n-47.0.1/en-US.xpi) = e5e37ec169bc609219a721dd43fedf06193f14917f36ea04ba5ae36680ca532c -SIZE (xpi/firefox-i18n-47.0.1/en-US.xpi) = 426931 -SHA256 (xpi/firefox-i18n-47.0.1/en-ZA.xpi) = 6f51495b1d534226e3c35c87a8dfc2432d44ba57d0aeb46a08e83c799444dc32 -SIZE (xpi/firefox-i18n-47.0.1/en-ZA.xpi) = 407835 -SHA256 (xpi/firefox-i18n-47.0.1/eo.xpi) = dfeba075649beee35415a80858973cb442a6808b602fea9a0110350f1262bab7 -SIZE (xpi/firefox-i18n-47.0.1/eo.xpi) = 434240 -SHA256 (xpi/firefox-i18n-47.0.1/es-AR.xpi) = 76f17a70c23298bc722de3660529f5fe8fa456914cdf719f864fa000433f2f0c -SIZE (xpi/firefox-i18n-47.0.1/es-AR.xpi) = 435267 -SHA256 (xpi/firefox-i18n-47.0.1/es-CL.xpi) = 5cd683e2a3d3b5763835af82618135a120f448e07eadd20083a38075fa13aec1 -SIZE (xpi/firefox-i18n-47.0.1/es-CL.xpi) = 372784 -SHA256 (xpi/firefox-i18n-47.0.1/es-ES.xpi) = ff1d09566fd7e78bc374c5c83bed768aa87392e49a16e89eab09f3f6eed67e54 -SIZE (xpi/firefox-i18n-47.0.1/es-ES.xpi) = 348231 -SHA256 (xpi/firefox-i18n-47.0.1/es-MX.xpi) = aa2f4868cef504ba087a33cc395e00ddabf2d765491a51f0048ee704a585ac49 -SIZE (xpi/firefox-i18n-47.0.1/es-MX.xpi) = 445766 -SHA256 (xpi/firefox-i18n-47.0.1/et.xpi) = 11a3d3441bef1876736cf828c1c042af607ef426db14185d7cb37cd7b84d32a7 -SIZE (xpi/firefox-i18n-47.0.1/et.xpi) = 434961 -SHA256 (xpi/firefox-i18n-47.0.1/eu.xpi) = 3e66452b8cd01159c0305e863c2ad6bf95a9c95d881381715e49800a54df88c2 -SIZE (xpi/firefox-i18n-47.0.1/eu.xpi) = 435865 -SHA256 (xpi/firefox-i18n-47.0.1/fa.xpi) = ec6ea46b9674719227bb76f6150172aa36e18cacda99e16ad070454592f4ea64 -SIZE (xpi/firefox-i18n-47.0.1/fa.xpi) = 486498 -SHA256 (xpi/firefox-i18n-47.0.1/ff.xpi) = 702f066fc3974ccfa9185daeb14430910bf1a2adae82588f9fcbe4261079021b -SIZE (xpi/firefox-i18n-47.0.1/ff.xpi) = 443579 -SHA256 (xpi/firefox-i18n-47.0.1/fi.xpi) = ed47d8ca5bfecabcc22c8f568e076fa772a49f125b992eedae1b026580e47591 -SIZE (xpi/firefox-i18n-47.0.1/fi.xpi) = 429551 -SHA256 (xpi/firefox-i18n-47.0.1/fr.xpi) = e8bdc9eada416f728ccdcd46e4d69b0ff743d04e0662c44539be98f223203bc4 -SIZE (xpi/firefox-i18n-47.0.1/fr.xpi) = 450329 -SHA256 (xpi/firefox-i18n-47.0.1/fy-NL.xpi) = 8270d9be627108fa1e6e2e936a55f2ab7a1d36230ea875c261ea69106fce868d -SIZE (xpi/firefox-i18n-47.0.1/fy-NL.xpi) = 442464 -SHA256 (xpi/firefox-i18n-47.0.1/ga-IE.xpi) = 94b6744107662d06991e86355deb37dfe310e65b3dd394e40bc055d4ab6d2501 -SIZE (xpi/firefox-i18n-47.0.1/ga-IE.xpi) = 454693 -SHA256 (xpi/firefox-i18n-47.0.1/gd.xpi) = 2f93cbafc5548a00907c608eb2193a662e0f72dbe6ed3c4c276601a3f629a9ed -SIZE (xpi/firefox-i18n-47.0.1/gd.xpi) = 443138 -SHA256 (xpi/firefox-i18n-47.0.1/gl.xpi) = 8b5b5621bc744e8d21dc84bce2668a52f483858997eb9ad4d15fe8dc16dd371d -SIZE (xpi/firefox-i18n-47.0.1/gl.xpi) = 438909 -SHA256 (xpi/firefox-i18n-47.0.1/gn.xpi) = a8b6effa4189ea1816f89658d7c62ffd3d5cb4ce57e664f9c5dd4377952255b7 -SIZE (xpi/firefox-i18n-47.0.1/gn.xpi) = 464961 -SHA256 (xpi/firefox-i18n-47.0.1/gu-IN.xpi) = 86a5495a14202d68d095cc66c1865daca059a47767c8cf82abb24f38adaec4bb -SIZE (xpi/firefox-i18n-47.0.1/gu-IN.xpi) = 472819 -SHA256 (xpi/firefox-i18n-47.0.1/he.xpi) = 1131961ba5993d28929fc38602a1ce02761c75488b507540c69d7f7caba039f9 -SIZE (xpi/firefox-i18n-47.0.1/he.xpi) = 449445 -SHA256 (xpi/firefox-i18n-47.0.1/hi-IN.xpi) = d4318c5efba739b519f7c9f5c302dc98ebda40abaa46f3f5dd9d78ec184dabe8 -SIZE (xpi/firefox-i18n-47.0.1/hi-IN.xpi) = 489305 -SHA256 (xpi/firefox-i18n-47.0.1/hr.xpi) = e56f5877d6f66773e44b32cc3ca12d14da6d3c986c312787827145a6a1db834e -SIZE (xpi/firefox-i18n-47.0.1/hr.xpi) = 443336 -SHA256 (xpi/firefox-i18n-47.0.1/hsb.xpi) = 2515e205390983fd32e0102f0a105896953913f170ed83e3cc167934d7c0020f -SIZE (xpi/firefox-i18n-47.0.1/hsb.xpi) = 455861 -SHA256 (xpi/firefox-i18n-47.0.1/hu.xpi) = 604068b6f604d505dc6e51a05ff18e857d6b30eadf24c8652683331331bb7185 -SIZE (xpi/firefox-i18n-47.0.1/hu.xpi) = 448454 -SHA256 (xpi/firefox-i18n-47.0.1/hy-AM.xpi) = 115e4f497c799d1bd431c43876d03c0cdbb953c259fa9c2c5f5f5a90fac69e88 -SIZE (xpi/firefox-i18n-47.0.1/hy-AM.xpi) = 494271 -SHA256 (xpi/firefox-i18n-47.0.1/id.xpi) = 358340a6ca043e6daf5fe8d01ba047d9e7f4ff67203f5ab6f75851f14c4ff328 -SIZE (xpi/firefox-i18n-47.0.1/id.xpi) = 420863 -SHA256 (xpi/firefox-i18n-47.0.1/is.xpi) = fc41a1a97c58a2c5f1014685880068d1c5a4290b80bc0ab572992bbfd005d724 -SIZE (xpi/firefox-i18n-47.0.1/is.xpi) = 437344 -SHA256 (xpi/firefox-i18n-47.0.1/it.xpi) = 312edd360fbf24ffdf8a3000dd31fe434806635d94056a11338d4b0e4756017c -SIZE (xpi/firefox-i18n-47.0.1/it.xpi) = 342328 -SHA256 (xpi/firefox-i18n-47.0.1/ja.xpi) = bc89e620c8f445d4be02f6521c3fa51eb39bdada8a1b14ef3f2f2ca46cede849 -SIZE (xpi/firefox-i18n-47.0.1/ja.xpi) = 485006 -SHA256 (xpi/firefox-i18n-47.0.1/kk.xpi) = 3330a11aa4a7a6585ac1ef41c0f3f5da1005082ddbc8dd4b5e4568cd4bca345f -SIZE (xpi/firefox-i18n-47.0.1/kk.xpi) = 491494 -SHA256 (xpi/firefox-i18n-47.0.1/km.xpi) = dc94fbe0fa6ace0f4425f6776a29a23d7e24e75fd16a9c9ae341eee032736c6a -SIZE (xpi/firefox-i18n-47.0.1/km.xpi) = 507775 -SHA256 (xpi/firefox-i18n-47.0.1/kn.xpi) = 82a3cbd086c17e14eb867f40d24ac4f25d96f93c7414f4f8357cc4e06903a84b -SIZE (xpi/firefox-i18n-47.0.1/kn.xpi) = 512033 -SHA256 (xpi/firefox-i18n-47.0.1/ko.xpi) = cbdb8b25554a37603ed4474896b7d054dea6a2fd9bf87d4154f4b50126ed8109 -SIZE (xpi/firefox-i18n-47.0.1/ko.xpi) = 457472 -SHA256 (xpi/firefox-i18n-47.0.1/lij.xpi) = 9933031b52d5e7b8a50a63e8a7d761a990b0d87fae0c5c1ef4bddbab59bfc2ba -SIZE (xpi/firefox-i18n-47.0.1/lij.xpi) = 391959 -SHA256 (xpi/firefox-i18n-47.0.1/lt.xpi) = 449d8cf318c277d242b3fdb224e9b72a50975e69f31f041c8b047ff29a795990 -SIZE (xpi/firefox-i18n-47.0.1/lt.xpi) = 449058 -SHA256 (xpi/firefox-i18n-47.0.1/lv.xpi) = f6d990ac44675f0ebfb3f98e3c85e7bdcd0c3b657a2d4c0bfa99071e6eedc101 -SIZE (xpi/firefox-i18n-47.0.1/lv.xpi) = 442457 -SHA256 (xpi/firefox-i18n-47.0.1/mai.xpi) = 6aa5a42e3022cf58e6b016ab7b788eb23e67625e1905a340aad703be3bfc622c -SIZE (xpi/firefox-i18n-47.0.1/mai.xpi) = 494895 -SHA256 (xpi/firefox-i18n-47.0.1/mk.xpi) = 8a9521bf7962a03e8ad268ac59d3c20d9ab0ec13c2e0137d7d327917da185b80 -SIZE (xpi/firefox-i18n-47.0.1/mk.xpi) = 476189 -SHA256 (xpi/firefox-i18n-47.0.1/ml.xpi) = d864a9265b23dd871521a19b600d5deb1b44fef4b394613a53152dc1d4c45cd6 -SIZE (xpi/firefox-i18n-47.0.1/ml.xpi) = 524949 -SHA256 (xpi/firefox-i18n-47.0.1/mr.xpi) = a2ae1a5fbcecf7b7af2e9a6e590e496733ae1ea7030828d5d39c946a2c803dac -SIZE (xpi/firefox-i18n-47.0.1/mr.xpi) = 497587 -SHA256 (xpi/firefox-i18n-47.0.1/ms.xpi) = e72517c0cf40317cfc337ee33b43c23e7cd8e44c9e0584c6f777f3ca880383ae -SIZE (xpi/firefox-i18n-47.0.1/ms.xpi) = 443220 -SHA256 (xpi/firefox-i18n-47.0.1/nb-NO.xpi) = da0f4738e673ce3a7cb7935383945d58fd9f5050ae2086dcfbec43014e4fe5d2 -SIZE (xpi/firefox-i18n-47.0.1/nb-NO.xpi) = 429971 -SHA256 (xpi/firefox-i18n-47.0.1/nl.xpi) = 2eb190d4b6140d13f077e774e11a13bd48250c8cf1198058dbba696bbc77bb28 -SIZE (xpi/firefox-i18n-47.0.1/nl.xpi) = 429576 -SHA256 (xpi/firefox-i18n-47.0.1/nn-NO.xpi) = fd18bc2166d4a03147cce6ed5e3d4fa959d99dfbdbb0048ff7162370fecf8fa0 -SIZE (xpi/firefox-i18n-47.0.1/nn-NO.xpi) = 425797 -SHA256 (xpi/firefox-i18n-47.0.1/or.xpi) = d474a56eba467485488e9d181e981ff12dea18f57a48b397df4affb7c0ff855e -SIZE (xpi/firefox-i18n-47.0.1/or.xpi) = 497590 -SHA256 (xpi/firefox-i18n-47.0.1/pa-IN.xpi) = ed2907e16280b53c6b16bcb79579ce00e838fa179790160a0463e2579fc52047 -SIZE (xpi/firefox-i18n-47.0.1/pa-IN.xpi) = 492398 -SHA256 (xpi/firefox-i18n-47.0.1/pl.xpi) = 8d6c67251bceae0d3b92463b9ffe8b29c27c8bbb7e7d5ab8bf7077c4e9c17491 -SIZE (xpi/firefox-i18n-47.0.1/pl.xpi) = 371971 -SHA256 (xpi/firefox-i18n-47.0.1/pt-BR.xpi) = e7386ef912551b1daf7b8afbf8189aab579fc241ed085c98d68c16a870471fd5 -SIZE (xpi/firefox-i18n-47.0.1/pt-BR.xpi) = 443876 -SHA256 (xpi/firefox-i18n-47.0.1/pt-PT.xpi) = 3dfb14c2bc860af07da733e457e6f9128dfe3701795b8bfe2a233aa3992fcd0a -SIZE (xpi/firefox-i18n-47.0.1/pt-PT.xpi) = 431644 -SHA256 (xpi/firefox-i18n-47.0.1/rm.xpi) = 32cc50d8b16f978adc25e7d43fb807c93fbcc2d201b85f8191e6ad17fbfc35bf -SIZE (xpi/firefox-i18n-47.0.1/rm.xpi) = 431929 -SHA256 (xpi/firefox-i18n-47.0.1/ro.xpi) = 4be70d42a513abd6697e114161aa768d136d72274a7b252c2c337fa260685289 -SIZE (xpi/firefox-i18n-47.0.1/ro.xpi) = 445166 -SHA256 (xpi/firefox-i18n-47.0.1/ru.xpi) = 818dace0bb3e748a336db9fc9db456b2430e8bcbebec7770bfaa36cfde321bc2 -SIZE (xpi/firefox-i18n-47.0.1/ru.xpi) = 392468 -SHA256 (xpi/firefox-i18n-47.0.1/si.xpi) = a2786e505817c65394b7bfa492ef7b0d6719651b8428bf7cf27357387dc13e7e -SIZE (xpi/firefox-i18n-47.0.1/si.xpi) = 488802 -SHA256 (xpi/firefox-i18n-47.0.1/sk.xpi) = cce9362fbfa295f3de6893150fd0a2d51ffc9718d7383dfc24188cae86a5e418 -SIZE (xpi/firefox-i18n-47.0.1/sk.xpi) = 452877 -SHA256 (xpi/firefox-i18n-47.0.1/sl.xpi) = f198bb1db5e412a3bcb28a8f24144ceff3e827632884a6fe59bd744195757088 -SIZE (xpi/firefox-i18n-47.0.1/sl.xpi) = 429763 -SHA256 (xpi/firefox-i18n-47.0.1/son.xpi) = 493fc303a80b6fa76ab274e005897870333d6a84da63b4152040bf663420a03e -SIZE (xpi/firefox-i18n-47.0.1/son.xpi) = 441955 -SHA256 (xpi/firefox-i18n-47.0.1/sq.xpi) = 96a7e3c877f8fa5b5bb3be6f1e6892a276db4158a348b8400e3a6368ba82e61f -SIZE (xpi/firefox-i18n-47.0.1/sq.xpi) = 446757 -SHA256 (xpi/firefox-i18n-47.0.1/sr.xpi) = bf740e40de6018df798ac065e53041fde5459a990b5041e1bd7528307360d46a -SIZE (xpi/firefox-i18n-47.0.1/sr.xpi) = 462409 -SHA256 (xpi/firefox-i18n-47.0.1/sv-SE.xpi) = ec52f16c0f56cdcbf0a517fa69327fcaeb0aa0cf75557af7f0c9e8038d6c0407 -SIZE (xpi/firefox-i18n-47.0.1/sv-SE.xpi) = 438739 -SHA256 (xpi/firefox-i18n-47.0.1/ta.xpi) = 15eafeadbc45709e6f08c53b44397eb01c87e316ceca2035eacc3ee23b12de7d -SIZE (xpi/firefox-i18n-47.0.1/ta.xpi) = 485395 -SHA256 (xpi/firefox-i18n-47.0.1/te.xpi) = 6c10823ada3e63bc08bd2e241506ce0550b3b8ea344d5b5ef8ea0cf8435ced04 -SIZE (xpi/firefox-i18n-47.0.1/te.xpi) = 516411 -SHA256 (xpi/firefox-i18n-47.0.1/th.xpi) = a2c784f4adae0c951955f83ea6aeb5e2aae328eea94dd103f43427d308e47e67 -SIZE (xpi/firefox-i18n-47.0.1/th.xpi) = 492437 -SHA256 (xpi/firefox-i18n-47.0.1/tr.xpi) = dc8c04ef72855048b942219125a6114583b36932f9c23e2d7b4aad07c20babda -SIZE (xpi/firefox-i18n-47.0.1/tr.xpi) = 438667 -SHA256 (xpi/firefox-i18n-47.0.1/uk.xpi) = bb4c29beb636edbacc9e8b8a054ba5a2c6ddbbf4475e4ef2ac00efa8275bddc1 -SIZE (xpi/firefox-i18n-47.0.1/uk.xpi) = 487554 -SHA256 (xpi/firefox-i18n-47.0.1/uz.xpi) = e93a2dd6c3415cff51e53804b6f10f1d09c6d7196841c9ca8581125cee2b550b -SIZE (xpi/firefox-i18n-47.0.1/uz.xpi) = 446245 -SHA256 (xpi/firefox-i18n-47.0.1/vi.xpi) = 115cb4ffaabae35343a086664d6014e30a311e522010c3b55ccbc7394e8e6b90 -SIZE (xpi/firefox-i18n-47.0.1/vi.xpi) = 454209 -SHA256 (xpi/firefox-i18n-47.0.1/xh.xpi) = 5142bc34da8e31ec27dc89e255a3a6e6357f5f02dcda1739ad875b15396f75c1 -SIZE (xpi/firefox-i18n-47.0.1/xh.xpi) = 435194 -SHA256 (xpi/firefox-i18n-47.0.1/zh-CN.xpi) = d5da058ad1b0a5dbb09575637a81865364ac8b2ee6eaf924889c1765e29a01bc -SIZE (xpi/firefox-i18n-47.0.1/zh-CN.xpi) = 459553 -SHA256 (xpi/firefox-i18n-47.0.1/zh-TW.xpi) = fb986d5692cd7ab0567912929907744f92b53143b48976ad3949d15027660f4e -SIZE (xpi/firefox-i18n-47.0.1/zh-TW.xpi) = 467825 +TIMESTAMP = 1473148535 +SHA256 (xpi/firefox-i18n-49.0/ach.xpi) = a055d3ea99eaa81622dfddbb1ebfa633d7727f873da6f097a29c45ba60c887ca +SIZE (xpi/firefox-i18n-49.0/ach.xpi) = 429281 +SHA256 (xpi/firefox-i18n-49.0/af.xpi) = 8276c7e1584bb05d7a52a96bad122e97c0e5d47addd69fa4dcd781513758654e +SIZE (xpi/firefox-i18n-49.0/af.xpi) = 438121 +SHA256 (xpi/firefox-i18n-49.0/an.xpi) = 18f91834bdf82d99a35c3615b2f212f425f1ffee980861c9a5ac143c3d64a44d +SIZE (xpi/firefox-i18n-49.0/an.xpi) = 446086 +SHA256 (xpi/firefox-i18n-49.0/ar.xpi) = d257985b87a16f22ce3fa4547cc64823e3a597d3257d8030c5467434c26283c6 +SIZE (xpi/firefox-i18n-49.0/ar.xpi) = 473955 +SHA256 (xpi/firefox-i18n-49.0/as.xpi) = 20279a1e96b517010bbdcc1f53e8da7522a7ce7a77353b7cd05457c6ee5fc1f8 +SIZE (xpi/firefox-i18n-49.0/as.xpi) = 487353 +SHA256 (xpi/firefox-i18n-49.0/ast.xpi) = 4ee419fa0660c1ce125d4e8c43762ca0356456f793a1da62f5f330a8919a711d +SIZE (xpi/firefox-i18n-49.0/ast.xpi) = 461422 +SHA256 (xpi/firefox-i18n-49.0/az.xpi) = c367b1a5c1b60f33473325ca0fb77dd7c4b5eaff63ea29d873511de9f094d781 +SIZE (xpi/firefox-i18n-49.0/az.xpi) = 455828 +SHA256 (xpi/firefox-i18n-49.0/be.xpi) = d41263ee0feadf39935a0c80903b2774b56d9117393cd299583838f6fd58e0c1 +SIZE (xpi/firefox-i18n-49.0/be.xpi) = 457911 +SHA256 (xpi/firefox-i18n-49.0/bg.xpi) = 2aff7630fe389dd48a8d0e68c6fa4806aec5fc4b6d760fff978cbe2e9ddf5bd6 +SIZE (xpi/firefox-i18n-49.0/bg.xpi) = 485361 +SHA256 (xpi/firefox-i18n-49.0/bn-BD.xpi) = 8b22da03725d6b889bcab67f5fdc92f85fa9c331b9a88b395e7de4c9131ee14a +SIZE (xpi/firefox-i18n-49.0/bn-BD.xpi) = 511110 +SHA256 (xpi/firefox-i18n-49.0/bn-IN.xpi) = f0d128f08e36819372d269408cef85587234c2cae739c3e15c9edf0d3e11eae5 +SIZE (xpi/firefox-i18n-49.0/bn-IN.xpi) = 508046 +SHA256 (xpi/firefox-i18n-49.0/br.xpi) = 2d17b214774a5bc9872f2e628aef50781331933c641e0e72ac8d7eb8a26cb326 +SIZE (xpi/firefox-i18n-49.0/br.xpi) = 432776 +SHA256 (xpi/firefox-i18n-49.0/bs.xpi) = 35eed1c0135575e49d4d5af36f86cbdb660da4c300fde2ced05db1d63d95453b +SIZE (xpi/firefox-i18n-49.0/bs.xpi) = 442135 +SHA256 (xpi/firefox-i18n-49.0/ca.xpi) = 59d4c8249312a1d79f3ecca11523b9abed4023a84ed666aab1365e0b2d164261 +SIZE (xpi/firefox-i18n-49.0/ca.xpi) = 442607 +SHA256 (xpi/firefox-i18n-49.0/cs.xpi) = 450c1eb6c34af705b22d171a0483fd8e847fb40062e3dcf822f3e4db3e423972 +SIZE (xpi/firefox-i18n-49.0/cs.xpi) = 439658 +SHA256 (xpi/firefox-i18n-49.0/cy.xpi) = 3f72e646d51af08c1898662e3c57af872ed99a0210662fe48db91f4275ae2f90 +SIZE (xpi/firefox-i18n-49.0/cy.xpi) = 435867 +SHA256 (xpi/firefox-i18n-49.0/da.xpi) = dad06db8f7b0b253001ca6041146acb03dcc857c6e8a5259001e67dda4170908 +SIZE (xpi/firefox-i18n-49.0/da.xpi) = 425945 +SHA256 (xpi/firefox-i18n-49.0/de.xpi) = c7de9ddccb83903b0feb2122ec6aefbeee89a9a6bd0e6148f17ac24dabbc9fed +SIZE (xpi/firefox-i18n-49.0/de.xpi) = 441916 +SHA256 (xpi/firefox-i18n-49.0/dsb.xpi) = 040e499646f57440526b91d15ca3859586433341089c3186e50b63eacf252de3 +SIZE (xpi/firefox-i18n-49.0/dsb.xpi) = 459990 +SHA256 (xpi/firefox-i18n-49.0/el.xpi) = 8bafacb3fdd32070d045397c5605bf67ec3e726573952b3424f367460fa9ec40 +SIZE (xpi/firefox-i18n-49.0/el.xpi) = 506678 +SHA256 (xpi/firefox-i18n-49.0/en-GB.xpi) = 9bbde23343491c723a73217da3ef7f53574580d9ac12997c2d754a5b8c33993b +SIZE (xpi/firefox-i18n-49.0/en-GB.xpi) = 421948 +SHA256 (xpi/firefox-i18n-49.0/en-US.xpi) = 00ebdec8303b53debc4f2102e2b4c456e5f647426be354eb833c6fbc9d47f188 +SIZE (xpi/firefox-i18n-49.0/en-US.xpi) = 429578 +SHA256 (xpi/firefox-i18n-49.0/en-ZA.xpi) = 2465656bd1116c12e47253385464b7500f6056c7faf8252386832c89cd83cb12 +SIZE (xpi/firefox-i18n-49.0/en-ZA.xpi) = 410563 +SHA256 (xpi/firefox-i18n-49.0/eo.xpi) = 9fea6e4e9496c017f52dbe2afc9c96c9cf0c7fd2f7428388c8621e38de1ae694 +SIZE (xpi/firefox-i18n-49.0/eo.xpi) = 438612 +SHA256 (xpi/firefox-i18n-49.0/es-AR.xpi) = 7e401463d87ce8073e5a0784fd52474560bfa4cd8d7ce24c466854d3c4e601a4 +SIZE (xpi/firefox-i18n-49.0/es-AR.xpi) = 440335 +SHA256 (xpi/firefox-i18n-49.0/es-CL.xpi) = 88b0e36cef41f84703dbf834f92b076ce3624996fd6d73b48546100131e8f175 +SIZE (xpi/firefox-i18n-49.0/es-CL.xpi) = 441653 +SHA256 (xpi/firefox-i18n-49.0/es-ES.xpi) = 95408c71b561663b4952ef079e9e7754e4f1e10fd625eb38fe80641ad425aecf +SIZE (xpi/firefox-i18n-49.0/es-ES.xpi) = 347224 +SHA256 (xpi/firefox-i18n-49.0/es-MX.xpi) = 01982bafdf2d5efdd1f0ffc0e94bf96a6a858c1cb05ab84a110deedf566da8dc +SIZE (xpi/firefox-i18n-49.0/es-MX.xpi) = 447124 +SHA256 (xpi/firefox-i18n-49.0/et.xpi) = 3382c65300403ca2fd11b4862cf077a3caea7c21dedb78075e1a057b0fb3ebf7 +SIZE (xpi/firefox-i18n-49.0/et.xpi) = 426405 +SHA256 (xpi/firefox-i18n-49.0/eu.xpi) = 0f0782c38ac74f9dcdd43a64a27f0b6d3d89232e9fd907fd680d717b5efcf9d3 +SIZE (xpi/firefox-i18n-49.0/eu.xpi) = 439741 +SHA256 (xpi/firefox-i18n-49.0/fa.xpi) = a5382f4f8b4e66de993245cb3caa6310b769f721920cc8d2c4fea38d0c141850 +SIZE (xpi/firefox-i18n-49.0/fa.xpi) = 489884 +SHA256 (xpi/firefox-i18n-49.0/ff.xpi) = 2c5bfd1e397f6a9e04609e51c1a80d98463646847bace47e63f24e18dae7b138 +SIZE (xpi/firefox-i18n-49.0/ff.xpi) = 451262 +SHA256 (xpi/firefox-i18n-49.0/fi.xpi) = b067901b0186f7830c1cf4f0f4dd1f889271ed602da3f5aedef143af8529fc37 +SIZE (xpi/firefox-i18n-49.0/fi.xpi) = 430568 +SHA256 (xpi/firefox-i18n-49.0/fr.xpi) = 1223408b0d7e8d7ccfbb5e8fb5c46b343fdbf7d1ddc35378161600659bcbd932 +SIZE (xpi/firefox-i18n-49.0/fr.xpi) = 451718 +SHA256 (xpi/firefox-i18n-49.0/fy-NL.xpi) = 42d2691944e4d880a6a5513eaf8aabc529546abca9f43edfe4df9106c67f0420 +SIZE (xpi/firefox-i18n-49.0/fy-NL.xpi) = 443874 +SHA256 (xpi/firefox-i18n-49.0/ga-IE.xpi) = 70e375afc1a508e2d3b734d1b70f15089633820f110689ca92039422061c0960 +SIZE (xpi/firefox-i18n-49.0/ga-IE.xpi) = 457586 +SHA256 (xpi/firefox-i18n-49.0/gd.xpi) = 60abcd3288be743dcd94ccc351af5bdcf8383606aae5e7d135953bc17255641d +SIZE (xpi/firefox-i18n-49.0/gd.xpi) = 444957 +SHA256 (xpi/firefox-i18n-49.0/gl.xpi) = 9e73c4287f63ed9040ed1d09d35f87d3e9a590483bf701af1b6416c91db31665 +SIZE (xpi/firefox-i18n-49.0/gl.xpi) = 448066 +SHA256 (xpi/firefox-i18n-49.0/gn.xpi) = 9777aa1fca22dc87a8d2674ed1dd6a5a4150fd4d19b386f9999e250782b54fa2 +SIZE (xpi/firefox-i18n-49.0/gn.xpi) = 457573 +SHA256 (xpi/firefox-i18n-49.0/gu-IN.xpi) = 5d86e2da7e992f631dd0ae4f69a1e24dd60ae1045623fcf15d5a529352287202 +SIZE (xpi/firefox-i18n-49.0/gu-IN.xpi) = 491792 +SHA256 (xpi/firefox-i18n-49.0/he.xpi) = ae29bfd00fb1895a40e711956367938df399123ac8f3404a528c55acb285dbee +SIZE (xpi/firefox-i18n-49.0/he.xpi) = 460376 +SHA256 (xpi/firefox-i18n-49.0/hi-IN.xpi) = 238736c4020c896619cdd9fe159267a85c021e3d14d0c8b7f6db106e57c4c538 +SIZE (xpi/firefox-i18n-49.0/hi-IN.xpi) = 504513 +SHA256 (xpi/firefox-i18n-49.0/hr.xpi) = a584848452be3e96ec7d9971abdca27f652a5ae2f1283bcfcaeee110fe02d5ce +SIZE (xpi/firefox-i18n-49.0/hr.xpi) = 447984 +SHA256 (xpi/firefox-i18n-49.0/hsb.xpi) = b72532c3c1ce3a001d468c601f8e056b360487a7cda83801bc85a26380b52d3a +SIZE (xpi/firefox-i18n-49.0/hsb.xpi) = 457757 +SHA256 (xpi/firefox-i18n-49.0/hu.xpi) = fc2d8cd3d4e2c4958b2f817321f0f1f72c21305a1f63a61fb871415ea50b56be +SIZE (xpi/firefox-i18n-49.0/hu.xpi) = 450546 +SHA256 (xpi/firefox-i18n-49.0/hy-AM.xpi) = 5eb80a22db196fb1fcbad0ef2a182fe2bdb2c67cd27872c790a6b6bde1f7bad0 +SIZE (xpi/firefox-i18n-49.0/hy-AM.xpi) = 495833 +SHA256 (xpi/firefox-i18n-49.0/id.xpi) = b074c8fbce1ccdbc4230fd02aa7242839c47aa05d1eff65b2d2d6f7d4df5c7e5 +SIZE (xpi/firefox-i18n-49.0/id.xpi) = 423401 +SHA256 (xpi/firefox-i18n-49.0/is.xpi) = ea11e1c07edc5ec732825026d19dbd8824a7d027f0714a7043d28f4b08085a14 +SIZE (xpi/firefox-i18n-49.0/is.xpi) = 439753 +SHA256 (xpi/firefox-i18n-49.0/it.xpi) = c03c21291bb939b266a5364362c68606881b442d9b5e666d98c75f291d151957 +SIZE (xpi/firefox-i18n-49.0/it.xpi) = 339263 +SHA256 (xpi/firefox-i18n-49.0/ja.xpi) = 166b704cb0cd351c0273126da1985a66adf9ae1b6d090153523e439c6f2386fc +SIZE (xpi/firefox-i18n-49.0/ja.xpi) = 486516 +SHA256 (xpi/firefox-i18n-49.0/kk.xpi) = 7958060108398ccffada4b0c3cfa729a4215d35460468273146b2e1ccd33c559 +SIZE (xpi/firefox-i18n-49.0/kk.xpi) = 494255 +SHA256 (xpi/firefox-i18n-49.0/km.xpi) = 231a03b3e006e2be59a1fa750920773f007be4e9eb11b73713276e4225bf770c +SIZE (xpi/firefox-i18n-49.0/km.xpi) = 522103 +SHA256 (xpi/firefox-i18n-49.0/kn.xpi) = 309f7a0c41f3b00f1f057696c393792fe2f6503548b78b1b9d3b2b152af93e63 +SIZE (xpi/firefox-i18n-49.0/kn.xpi) = 518780 +SHA256 (xpi/firefox-i18n-49.0/ko.xpi) = b0e840264f89df71e2054b8ff69814773f20cb0578c2a1ea4ae22b343081dd24 +SIZE (xpi/firefox-i18n-49.0/ko.xpi) = 460894 +SHA256 (xpi/firefox-i18n-49.0/lij.xpi) = 1cc35f6df390a54f1b7f54c4b5dddd5d416256e4bb70170a2e8e2be028226095 +SIZE (xpi/firefox-i18n-49.0/lij.xpi) = 396168 +SHA256 (xpi/firefox-i18n-49.0/lt.xpi) = 1258bcd19553e55f7dc2883ac2bb34fbbeba126b20c11cf26149104d664d59c3 +SIZE (xpi/firefox-i18n-49.0/lt.xpi) = 453364 +SHA256 (xpi/firefox-i18n-49.0/lv.xpi) = 4ee7a942cfae3ed3ead7c53eab944cc62a97982e14cca27f80132afad6bee197 +SIZE (xpi/firefox-i18n-49.0/lv.xpi) = 445321 +SHA256 (xpi/firefox-i18n-49.0/mai.xpi) = eb890f44e854be962a24b1f4b8ede2b7f96682dbacc886c3e0f5ee595901c0b6 +SIZE (xpi/firefox-i18n-49.0/mai.xpi) = 502477 +SHA256 (xpi/firefox-i18n-49.0/mk.xpi) = 4501b96508586661fb5dc6995ea6fc0db92a10f0865d72c6c7ea2cab5061649e +SIZE (xpi/firefox-i18n-49.0/mk.xpi) = 500510 +SHA256 (xpi/firefox-i18n-49.0/ml.xpi) = 3749b6a3a7ca683dca2b7bd86b66977d38bb8ce1ecbe13173bf671982086aede +SIZE (xpi/firefox-i18n-49.0/ml.xpi) = 519594 +SHA256 (xpi/firefox-i18n-49.0/mr.xpi) = d6580e2eba53ee39ae37f88e77afeebae87f3664b507cbedca21d92289f279cd +SIZE (xpi/firefox-i18n-49.0/mr.xpi) = 501072 +SHA256 (xpi/firefox-i18n-49.0/ms.xpi) = d0b55659f7911c78a62a0f33369b29bb8363fbe1382b34d46e9c93041286c14b +SIZE (xpi/firefox-i18n-49.0/ms.xpi) = 441440 +SHA256 (xpi/firefox-i18n-49.0/nb-NO.xpi) = 2616b7425fe4914f69055577ae1836737e2a37fec50b786106028d2d6f820257 +SIZE (xpi/firefox-i18n-49.0/nb-NO.xpi) = 433584 +SHA256 (xpi/firefox-i18n-49.0/nl.xpi) = e7dca01248fbbe82ddeda4b4706f290801d76085e9cb60da45946dd8973ea681 +SIZE (xpi/firefox-i18n-49.0/nl.xpi) = 431241 +SHA256 (xpi/firefox-i18n-49.0/nn-NO.xpi) = ea1d4b8804a09ab421ea343fd1afa81af90163bfbb09feef046ef3cc4e9ebea7 +SIZE (xpi/firefox-i18n-49.0/nn-NO.xpi) = 427584 +SHA256 (xpi/firefox-i18n-49.0/or.xpi) = d872ff462ffc4b7c3c5bdf50da558b0c75dfdc8fb5bcf08de4c3df036279ebf0 +SIZE (xpi/firefox-i18n-49.0/or.xpi) = 499453 +SHA256 (xpi/firefox-i18n-49.0/pa-IN.xpi) = b31faaf8bb81837b084161dc6deab0135824dee7621b91e2a778638e34234ed0 +SIZE (xpi/firefox-i18n-49.0/pa-IN.xpi) = 479085 +SHA256 (xpi/firefox-i18n-49.0/pl.xpi) = a7a129caa15233fe4b85727515d79a2e8a184afcb9940b491482f4ffd23cfc04 +SIZE (xpi/firefox-i18n-49.0/pl.xpi) = 362533 +SHA256 (xpi/firefox-i18n-49.0/pt-BR.xpi) = e75e8fbb3b2d60ca4b459cd531e89914d70f2bee42eabee9e2425a272b1f624c +SIZE (xpi/firefox-i18n-49.0/pt-BR.xpi) = 446484 +SHA256 (xpi/firefox-i18n-49.0/pt-PT.xpi) = 77c4f4468c59222096eea30091792d9f0feb9fa425ef245e8d20a860a12b8a2c +SIZE (xpi/firefox-i18n-49.0/pt-PT.xpi) = 433685 +SHA256 (xpi/firefox-i18n-49.0/rm.xpi) = 34f5d339ecffc9a059fe08fd9c11c1487b3c9d3480610c4e85c9091b7fb2f187 +SIZE (xpi/firefox-i18n-49.0/rm.xpi) = 439645 +SHA256 (xpi/firefox-i18n-49.0/ro.xpi) = 1b438bacc0ae40c19e8b7e1f1a0f03667c708e38e50db992d7ede5aefa224ebd +SIZE (xpi/firefox-i18n-49.0/ro.xpi) = 449558 +SHA256 (xpi/firefox-i18n-49.0/ru.xpi) = 0efd15d38d73ff52b372150b62c499915e9918e6040485bd17396314c1d58d6c +SIZE (xpi/firefox-i18n-49.0/ru.xpi) = 391743 +SHA256 (xpi/firefox-i18n-49.0/si.xpi) = 050dad507263de4c43f1ead1c45d22891eccc22fdc50e7849e9838d97220aa5e +SIZE (xpi/firefox-i18n-49.0/si.xpi) = 494150 +SHA256 (xpi/firefox-i18n-49.0/sk.xpi) = 06725c23a23d847b11c6094f20cc69afe68dec266676d3cea840b08446cc86dc +SIZE (xpi/firefox-i18n-49.0/sk.xpi) = 454549 +SHA256 (xpi/firefox-i18n-49.0/sl.xpi) = 466ce533193f90964207d406c470591e5d8e818e46de48864586a4a9a4075787 +SIZE (xpi/firefox-i18n-49.0/sl.xpi) = 430479 +SHA256 (xpi/firefox-i18n-49.0/son.xpi) = ae036066978340cd8eeca8d49aae5dba8afca4eb76c8b7a19d0af54fe3d85e58 +SIZE (xpi/firefox-i18n-49.0/son.xpi) = 437033 +SHA256 (xpi/firefox-i18n-49.0/sq.xpi) = 4cd7eb1f2fecfbcc23421c834d2fdbd0459c324900dea4d57dc38eed451ce1d6 +SIZE (xpi/firefox-i18n-49.0/sq.xpi) = 455388 +SHA256 (xpi/firefox-i18n-49.0/sr.xpi) = 6f017079d428836515918c7f32a2c1acc9a07cc67e9afc510488d7ae6ddf9030 +SIZE (xpi/firefox-i18n-49.0/sr.xpi) = 463882 +SHA256 (xpi/firefox-i18n-49.0/sv-SE.xpi) = 76dcd84ba983e48d081faae04df35febad163c639d409000bad39d7758e344ee +SIZE (xpi/firefox-i18n-49.0/sv-SE.xpi) = 440491 +SHA256 (xpi/firefox-i18n-49.0/ta.xpi) = fcca052aa7d33a03293ea0d52b6e8d2c444453290cd57431b51aaa16595f1ed3 +SIZE (xpi/firefox-i18n-49.0/ta.xpi) = 492433 +SHA256 (xpi/firefox-i18n-49.0/te.xpi) = 3ba228585b296e6d1a6013e49e345ed994dd5a8f375cfa92a84666a5b359e1ae +SIZE (xpi/firefox-i18n-49.0/te.xpi) = 518144 +SHA256 (xpi/firefox-i18n-49.0/th.xpi) = 073aa811e64076be6c8f9d886cdc7fd93c6b2a66f24607f6dd03652a90343553 +SIZE (xpi/firefox-i18n-49.0/th.xpi) = 489004 +SHA256 (xpi/firefox-i18n-49.0/tr.xpi) = 9b1cd82e2ca1617086aabaf8c9c722d24b7794ee5f2588c1002f51b3901ed14c +SIZE (xpi/firefox-i18n-49.0/tr.xpi) = 440855 +SHA256 (xpi/firefox-i18n-49.0/uk.xpi) = 4417c9b248b1d02170accaa0ba3014eb2765cba7aaf388ddca3696c54ee21019 +SIZE (xpi/firefox-i18n-49.0/uk.xpi) = 491356 +SHA256 (xpi/firefox-i18n-49.0/uz.xpi) = 029cda87e923ddca6ee8cca6264146aa802946b5a3b0dc0a9dc85d0ed3a2e88c +SIZE (xpi/firefox-i18n-49.0/uz.xpi) = 448464 +SHA256 (xpi/firefox-i18n-49.0/vi.xpi) = 85edf9733bd538268c74519b1aba4bcf79d3cd1983cc256f22565d0521b8eb8b +SIZE (xpi/firefox-i18n-49.0/vi.xpi) = 448047 +SHA256 (xpi/firefox-i18n-49.0/xh.xpi) = a6844d3412f58347a22e3ae0b242aee6b2dcbd504a949c064c83398a40e47c7c +SIZE (xpi/firefox-i18n-49.0/xh.xpi) = 439945 +SHA256 (xpi/firefox-i18n-49.0/zh-CN.xpi) = 1f5648cecfeb15503a320cf0c765b097ce220d01f17e4153032ef99fac3f6cf5 +SIZE (xpi/firefox-i18n-49.0/zh-CN.xpi) = 466752 +SHA256 (xpi/firefox-i18n-49.0/zh-TW.xpi) = efe84a997c57c394d1cc1067a1d63fd77719f015e8eb42bfa9fe8225250e8ddc +SIZE (xpi/firefox-i18n-49.0/zh-TW.xpi) = 469469 Index: head/www/libxul/Makefile =================================================================== --- head/www/libxul/Makefile (revision 421530) +++ head/www/libxul/Makefile (revision 421531) @@ -1,77 +1,78 @@ # Created by: Michael Johnson # $FreeBSD$ PORTNAME= libxul DISTVERSION= 45.4.0 +PORTREVISION= 1 CATEGORIES?= www devel MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source \ MOZILLA/firefox/candidates/${DISTVERSION}esr-candidates/build2/source DISTNAME= firefox-${DISTVERSION}esr.source MAINTAINER?= gecko@FreeBSD.org COMMENT?= Mozilla runtime package that can be used to bootstrap XUL+XPCOM apps BUILD_DEPENDS= nspr>=4.12:devel/nspr \ nss>=3.21.1:security/nss \ libevent2>=2.0.21_2:devel/libevent2 \ soundtouch>=1.9.0:audio/soundtouch \ harfbuzz>=1.1.0:print/harfbuzz \ graphite2>=1.3.6:graphics/graphite2 \ png>=1.6.19:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ sqlite3>=3.9.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 LIB_DEPENDS= libv4l2.so:multimedia/libv4l WRKSRC:= ${WRKDIR}/firefox-${DISTVERSION}esr CONFLICTS_INSTALL= libxul-1.9.* USE_GL= gl USES= pathfix tar:xz MAKE_ENV= SKIP_GRE_REGISTRATION=1 mozappdir=${PREFIX}/lib/${MOZILLA} LDFLAGS+= -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH} USE_LDCONFIG= ${PREFIX}/lib/${MOZILLA} MOZ_OPTIONS?= --enable-application=xulrunner USE_GECKO= gecko CPE_PRODUCT= firefox_esr MOZILLA_EXEC_NAME=xulrunner USE_MOZILLA= # empty MOZILLA_PLIST_DIRS= bin include lib share/idl libdata MOZ_PKGCONFIG_FILES= libxul-embedding libxul mozilla-js \ mozilla-plugin OPTIONS_EXCLUDE= GSTREAMER LOGGING OPTIONS_DEFINE= RUST OPTIONS_DEFAULT= BUNDLED_CAIRO GTK2 OPTIONS_SINGLE+= TOOLKIT OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 .include "${.CURDIR}/../../www/firefox/Makefile.options" .if ${USE_MOZILLA:M-nss} MOZ_PKGCONFIG_FILES+= mozilla-nss .endif post-patch: @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/xulrunner/stub/nsXULStub.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) post-build: @${REINPLACE_CMD} -e "s|\(Libs:.*\)\($$\)|\1 -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH}\2| ; \ s|%sdkdir%|%sdkdir%/sdk|g ; \ s|%%MOZ_LIBDIR%%|${PREFIX}/lib/${MOZILLA}|g" \ ${WRKSRC}/xulrunner/installer/*.pc.in || ${TRUE} .include Index: head/www/seamonkey/Makefile =================================================================== --- head/www/seamonkey/Makefile (revision 421530) +++ head/www/seamonkey/Makefile (revision 421531) @@ -1,184 +1,184 @@ # Created by: eivind/dima/jseger # $FreeBSD$ PORTNAME= seamonkey DISTVERSION= 2.39 MOZILLA_VER= 42 # above + 3 -PORTREVISION= 10 +PORTREVISION= 11 CATEGORIES?= www mail news editors irc ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/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.10.10:devel/nspr \ nss>=3.19.4:security/nss \ libevent2>=2.0.21_2:devel/libevent2 \ soundtouch>=1.8.0:audio/soundtouch \ harfbuzz>=0.9.42:print/harfbuzz \ graphite2>=1.2.4:graphics/graphite2 \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.3.0:multimedia/libvpx \ sqlite3>=3.8.9: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 # opus>=1.1:audio/opus \ LIB_DEPENDS= libv4l2.so:multimedia/libv4l EM_VERSION= 1.9.1 L_VERSION= 4.4 SSP_UNSAFE= yes USE_GECKO= gecko USE_GL= gl USES= tar:xz MOZ_PIS_SCRIPTS= moz_pis_S50cleanhome MOZ_EXTENSIONS= default MOZ_OPTIONS+= --program-transform-name='s/seamonkey/${MOZILLA}/' \ --enable-application=suite USE_MOZILLA= -opus MOZ_PKGCONFIG_FILES= NOT_FOR_ARCHS= ia64 OPTIONS_EXCLUDE=LOGGING OPTIONS_DEFINE= CHATZILLA COMPOSER ENIGMAIL LDAP LIGHTNING MAILNEWS OPTIONS_DEFAULT=CANBERRA CHATZILLA COMPOSER ENIGMAIL LDAP LIGHTNING MAILNEWS CHATZILLA_DESC?=Chatzilla IRC module COMPOSER_DESC?= HTML Composer module LDAP_DESC?= LDAP support for Mailnews MAILNEWS_DESC?= Mail and News modules .include "${.CURDIR}/../../www/firefox/Makefile.options" .include .if ${PORT_OPTIONS:MCHATZILLA} MOZ_EXTENSIONS:= ${MOZ_EXTENSIONS},irc .endif .include WRKSRC:= ${WRKDIR}/${PORTNAME}-${DISTVERSION} MOZSRC:= ${WRKSRC}/mozilla XPI_LIBDIR= ${PREFIX}/lib/xpi .if ! ${PORT_OPTIONS:MMAILNEWS} MOZ_OPTIONS+= --disable-ldap --disable-mailnews .else # mail and news desired, but not LDAP .if ! ${PORT_OPTIONS:MLDAP} MOZ_OPTIONS+= --disable-ldap --enable-mailnews .else MOZ_OPTIONS+= --enable-ldap --enable-mailnews .endif .if ${PORT_OPTIONS:MENIGMAIL} MASTER_SITES+= https://www.enigmail.net/download/source/:enigmail DISTFILES+= ${EM_DISTFILE}:enigmail RUN_DEPENDS+= gpg2:security/gnupg EM_DISTNAME= enigmail-${EM_VERSION} EM_DISTFILE= ${EM_DISTNAME}.tar.gz EM_XPI_FILE= ${WRKSRC}/mailnews/extensions/enigmail/build/${EM_DISTNAME}.xpi EM_ORIG_ID= {847b3a00-7ab1-11d4-8f02-006008948af5} EM_ID= ${PORTNAME}@mozilla-enigmail.org EM_ID_RFILES= ${XPI_LIBDIR}/${EM_ID}/install.rdf \ ${XPI_LIBDIR}/${EM_ID}/components/enigmail.js \ ${XPI_LIBDIR}/${EM_ID}/modules/app.jsm .endif .endif .if ! ${PORT_OPTIONS:MCOMPOSER} MOZ_OPTIONS+= --disable-composer .endif .if ${PORT_OPTIONS:MLIGHTNING} MOZ_OPTIONS+= --enable-calendar MOZ_MK_OPTIONS+= MOZ_CO_PROJECT=calendar LIGHTNING_DIR= share/lightning XPI_FILE= ${MOZ_OBJDIR}/dist/xpi-stage/lightning-${L_VERSION}.en-US.${OPSYS:tl}${OSREL}-${ARCH:S/amd64/x86_64/}.xpi XPI_ORIG_ID= {e2fda1a4-762b-4020-b5ad-a41df1933103} XPI_ID= lightning@seamonkey.mozilla.org .else MOZ_OPTIONS+= --disable-calendar .endif .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} post-extract: @${TAR} -xf ${_DISTDIR}/${EM_DISTFILE} \ -C ${WRKSRC}/mailnews/extensions .endif post-patch: @${REINPLACE_CMD} -e '/MOZPNG/s/=[0-9]*/=10511/' \ ${MOZSRC}/configure.in ${WRKSRC}/configure.in @${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 .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} @${REINPLACE_CMD} -e 's,/usr/bin/perl,${PERL},' \ ${WRKSRC}/mailnews/extensions/enigmail/util/fixlang.pl \ ${WRKSRC}/mailnews/extensions/enigmail/util/make-lang-xpi.pl @${REINPLACE_CMD} -e '/^xpi/s/$$/ all/' \ -e '/^all/s/ xpi//' \ -e '/^XPI_MODULE_VERS/s/= .*/= ${EM_VERSION}/' \ ${WRKSRC}/mailnews/extensions/enigmail/Makefile @${REINPLACE_CMD} -e '/em:version/s,>[^<]*<,>${EM_VERSION}<,' \ -e '/em:maxVersion/s/pre//' \ ${WRKSRC}/mailnews/extensions/enigmail/package/install.rdf .endif 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) .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} post-configure: cd ${WRKSRC}/mailnews/extensions/enigmail/ && \ ${SETENV} ${CONFIGURE_ENV} ${MAKE_ENV} ./configure .endif .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} post-build: ${DO_MAKE_BUILD:N-j*:S,${MAKEFILE},Makefile,} all xpi \ -C ${WRKSRC}/mailnews/extensions/enigmail .endif 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 .if ${PORT_OPTIONS:MLIGHTNING} @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/seamonkey @(cd ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) @${REINPLACE_CMD} -i "" "s/${XPI_ORIG_ID}/${XPI_ID}/" ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}/install.rdf @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/seamonkey 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${XPI_ID} ${LOCALBASE}/lib/seamonkey/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/seamonkey/extensions/${XPI_ID}' >> ${TMPPLIST} .endif .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} @(cd ${STAGEDIR}${XPI_LIBDIR}/${EM_ID}; ${TAR} -xf ${EM_XPI_FILE}) @${REINPLACE_CMD} -i "" "s/${EM_ORIG_ID}/${EM_ID}/" ${EM_ID_RFILES:S/^/${STAGEDIR}/g} @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/${PORTNAME}/extensions/${EM_ID}' >> ${TMPPLIST} .endif .include Index: head/www/seamonkey/files/patch-bug1234033 =================================================================== --- head/www/seamonkey/files/patch-bug1234033 (nonexistent) +++ head/www/seamonkey/files/patch-bug1234033 (revision 421531) @@ -0,0 +1,13 @@ +diff --git toolkit/mozapps/update/updater/updater.cpp toolkit/mozapps/update/updater/updater.cpp +index bb0834c..6ef82a1 100644 +--- mozilla/toolkit/mozapps/update/updater/updater.cpp ++++ mozilla/toolkit/mozapps/update/updater/updater.cpp +@@ -157,7 +157,7 @@ BOOL PathGetSiblingFilePath(LPWSTR destinationBuffer, + // declare it here to avoid including that entire header file. + #define BZ2_CRC32TABLE_UNDECLARED + +-#if MOZ_IS_GCC ++#if MOZ_IS_GCC || defined(__clang__) + extern "C" __attribute__((visibility("default"))) unsigned int BZ2_crc32Table[256]; + #undef BZ2_CRC32TABLE_UNDECLARED + #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) Property changes on: head/www/seamonkey/files/patch-bug1234033 ___________________________________________________________________ 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