LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 06-27-2019, 01:50 PM   #16
bassmadrigal
LQ Guru
 
Registered: Nov 2003
Location: West Jordan, UT, USA
Distribution: Slackware
Posts: 6,082

Rep: Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750Reputation: 3750

Quote:
Originally Posted by TheRealGrogan View Post
Yes, I chose the word sabotage and I mean it. It's no skin off their asses to --enable-alsa yet they disable it, and try to default you into disabling it. That's what they do when they want to try to force a change on everyone, but they'd get too much backlash if they removed the option entirely.
I've mentioned this elsewhere on the forum, but they probably made it not default because it is not maintained anymore and they can't be sure it will work.

I hardly think sabotage is the right word. Do you really think they're in cahoots with RedHat/pulseaudio and are trying to force it everywhere? If so, why do you even bother using a Mozilla product if they're willing to "sabotage" their product?

The reality is pure alsa systems are few and far between. They decided to have their development efforts focused elsewhere and chose to not maintain a feature few are using. Since it is not maintained, they chose to not have it be a default compile option. That's likely all there is to it and not some conspiracy theory of them trying to force everyone to use pulseaudio (if that was the case, they would've purposefully gone and completely excised anything alsa related out of Firefox and only forks would be able to have it back).

If we switch this to a different project, are mplayer developers sabotaging gmplayer since they don't have the gui enabled by default and you have to pass --enable-gui to ./configure?
 
1 members found this post helpful.
Old 06-27-2019, 02:52 PM   #17
TheRealGrogan
Member
 
Registered: Oct 2010
Location: Ontario, Canada
Distribution: Slackware, Manjaro (for gaming)
Posts: 75

Rep: Reputation: 37
I didn't say they were in cahoots with Redhat, those are your words. Forcing a change, and in a minor release, whether for developer convenience or ideology is the same end result to me, it still wasted my time.

Pure ALSA systems are rare indeed (though I still have a few older boxes), but people who disable pulseaudio for various reasons and still want audio in their browser aren't.

I don't care what they do with their own shipped binaries, I don't use them, moreover, I don't use anybody's binaries for things like web browsers. I get better results compiling and optimizing them for my system. This is true for GUI "feel" as well as browser benchmark tests. That's the main reason I use Firefox, because I can maintain it myself, my way and at this time I can still use the extensions I want. (Chromium is ridiculous in various ways and is only getting more so... and with Webrender now, Firefox performance is close enough to it)

The comparison to mplayer/gmplayer is apples and oranges. I don't do --enable-gui anyway, as I use SMPlayer as a front end, but I don't remember that ever being enabled by default. What I do remember is them making that easier in recent years, by not requiring you to configure a font for the OSD and subtitles.

Last edited by TheRealGrogan; 06-27-2019 at 03:00 PM.
 
Old 06-27-2019, 03:15 PM   #18
ZhaoLin1457
Member
 
Registered: Jan 2018
Posts: 289

Rep: Reputation: 250Reputation: 250Reputation: 250
I read somewhere that the migration of the modern browsers like Firefox or Chrome to PulseAudio isn't caused by ideological reasons but rather by pragmatism.

Apparently, how a modern browser like Firefox needs both audio outputs and inputs, the direct usage of ALSA imply including in browser a complicated audio mixer which should do even more complicated guesses to find out where's the output or the active microphone or audio input. And that's a terrible waste of time for programmers, with vary mileage results.

The solution is obviously even for a non-programmer: to use a dedicated sound server from system instead, just like PulseAudio is. And it is widely available.

Certainly has no meaning for a browser the audio latency so many times invoked by the pure ALSA ideologists, then I think that the usage of PulseAudio is a wise choice.

Last edited by ZhaoLin1457; 06-27-2019 at 03:34 PM.
 
3 members found this post helpful.
Old 06-27-2019, 03:31 PM   #19
Didier Spaier
LQ Addict
 
Registered: Nov 2008
Location: Paris, France
Distribution: Slint64-14.2.1.2 on Lenovo Thinkpad W520
Posts: 8,887

Rep: Reputation: Disabled
Quote:
Originally Posted by garpu View Post
Problem with just using the pre-compiled version of Firefox is that it doesn't build or default to ALSA, unless you build it yourself. So if you're not using pulse, there won't be any sound.
Unless you start it like that:
Code:
apulse firefox
package compatible Slackware64-14.2
md5checksum
source
 
1 members found this post helpful.
Old 06-27-2019, 04:57 PM   #20
ChuangTzu
Senior Member
 
Registered: May 2015
Location: Where ever needed
Distribution: Slackware/Salix while testing others
Posts: 1,342

Rep: Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251Reputation: 1251
Quote:
Originally Posted by LuckyCyborg View Post
I have the habit to build and use the latest stable Firefox, using The Little Beast, my "overpowered" main box driven by an AM1 CPU named Athlon x4 5350, with TDP of 25W.

In my humble opinion, what they do (at least for slackware-current), staying on Firefox ESR releases is a mistake. The Firefox ESR is not for home users but for organizations and businesses, as Mozilla claims here: https://www.mozilla.org/en-US/firefox/organizations/



Excuse me? For a distribution which makes a pride from not shipping PAM and Kerberos, sinking from starters any use of it on businesses, organizations and schools, why they would ship an Enterprise Software like Firefox ESR?

If myself I can build casually the latest Firefox with a 25W CPU, then for their Ryzen or i9 driven build boxes is matter of minutes.
Oh for the love of curry...
Cyborg, it's not Slackwares fault, that is the fault of Mozilla. ESR should be their regular stable release and the other one should be labeled current or experimental etc... For those wanting a stable Firefox that's the ESR version.
 
1 members found this post helpful.
Old 06-27-2019, 06:06 PM   #21
enorbet
Senior Member
 
Registered: Jun 2003
Location: Virginia
Distribution: Slackware = Main OpSys for decades while testing others to keep up
Posts: 2,263

Rep: Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283
Quote:
Originally Posted by bassmadrigal View Post
I've mentioned this elsewhere on the forum, but they probably made it not default because it is not maintained anymore and they can't be sure it will work.

I hardly think sabotage is the right word. Do you really think they're in cahoots with RedHat/pulseaudio and are trying to force it everywhere? If so, why do you even bother using a Mozilla product if they're willing to "sabotage" their product?

The reality is pure alsa systems are few and far between. They decided to have their development efforts focused elsewhere and chose to not maintain a feature few are using. Since it is not maintained, they chose to not have it be a default compile option. That's likely all there is to it and not some conspiracy theory of them trying to force everyone to use pulseaudio (if that was the case, they would've purposefully gone and completely excised anything alsa related out of Firefox and only forks would be able to have it back).

If we switch this to a different project, are mplayer developers sabotaging gmplayer since they don't have the gui enabled by default and you have to pass --enable-gui to ./configure?
Hello once again, bassmadrigal
I chose to quote yours because I'm pretty sure you know I appreciate and respect you and your posts as well as that this is a pet peeve of mine along with these other folks. Can you please explain what you mean by ALSA "is not maintained anymore"? If that's true then isn't Pulseaudio built on a house of cards? AFAIK if one removes all files labelled ALSA, pulseaudio is a ship without an engine, dead in the water. I know audio isn't very important to many and to few as important as it is to me but if Linux suddenly had NO sound I think it's a safe bet we'd lose a user or three and I'd be among the first. I also know that it is conceivable that OSS, ESD, Arts, or some app/daemon could be re-purposed but AFAIK Pulse is NOT a standalone audio device. It is that ship that requires an engine, or maybe more accurately an officer on that ship. Not so?

AFAIK, ALSA is still being used by FireFox, it just now operates through a mediator go-between. Does such a precedent result in The Bazaar evolving into a Bureaucracy if not a small Cathedral?

Last edited by enorbet; 06-28-2019 at 09:09 AM.
 
Old 06-27-2019, 09:58 PM   #22
TheRealGrogan
Member
 
Registered: Oct 2010
Location: Ontario, Canada
Distribution: Slackware, Manjaro (for gaming)
Posts: 75

Rep: Reputation: 37
Yes, pulseaudio is a front end to ALSA drivers (i.e. kernel modules), but applications talk to pulseseaudio, which has its own linked modules for handling audio input and output. So deprecating ALSA support in an application like Firefox, just removes the interface to the ALSA libraries and the need to implement those controls in the application. It's already there though, turning it off (at this time) is just a dick move.

Do a ldd /usr/bin/pulseaudio and it will be clear.

(Doesn't mean I'd be happy with having only that as a choice)

Last edited by TheRealGrogan; 06-27-2019 at 10:03 PM.
 
Old 06-27-2019, 10:08 PM   #23
frankbell
LQ Guru
 
Registered: Jan 2006
Location: Virginia, USA
Distribution: Slackware, Ubuntu MATE, Mageia, and whatever VMs I happen to be playing with
Posts: 15,082
Blog Entries: 25

Rep: Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263Reputation: 4263
Gag me with a spoon.

I do not count myself as a fan of the creator of Pulseaudio, but Pulse itself works quite nicely.

It's time to stop tilting at this windmill.
 
1 members found this post helpful.
Old 06-28-2019, 12:27 AM   #24
elcore
Member
 
Registered: Sep 2014
Distribution: Slackware
Posts: 605

Rep: Reputation: Disabled
There should be a backup solution so that it prefers pulse but falls back to alsa when pulse not available, it's probably up to distributor.
Other than that, it may be possible to run a system without pulseaudio, and still have firefox run by manually placing a libpulse.so in firefox dir.
Or as a last resort run 'wine firefox.exe' which evidently does not require pulse. I'd expect wine to have less dependencies than native firefox anyway.
 
Old 06-28-2019, 12:45 AM   #25
ehartman
Member
 
Registered: Jul 2007
Location: Delft, The Netherlands
Distribution: Slackware
Posts: 720

Rep: Reputation: 341Reputation: 341Reputation: 341Reputation: 341
Quote:
Originally Posted by enorbet View Post
Can you please explain what you mean by ALSA "is not maintained anymore"?
He probably means: the alsa-using CODE in firefox isn't maintained anymore.
If the firefox developers really would want to prevent you using it they would have removed that code altogether, but as alsa itself progresses, the alsa code in firefox will get obsolete.
 
2 members found this post helpful.
Old 06-28-2019, 09:20 AM   #26
enorbet
Senior Member
 
Registered: Jun 2003
Location: Virginia
Distribution: Slackware = Main OpSys for decades while testing others to keep up
Posts: 2,263

Rep: Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283Reputation: 2283
Quote:
Originally Posted by frankbell View Post
Gag me with a spoon.

I do not count myself as a fan of the creator of Pulseaudio, but Pulse itself works quite nicely.

It's time to stop tilting at this windmill.
Geez frankbell! That's a tad inconsiderate. Surely you know by now with all the various posts on this subject that it has little if anything to do with Lennart Voldemort but it does have to do with function that presents some people and use cases with serious problems. I'm actually glad Pulse works nicely for you and so many but that's no reason to shutout the rest of us for whom it fails the cost/benefit analysis.

"It all depends on whose ox is gored", right? If you find self-driving cars "work quite nicely" for you then everyone should have to use them, eh?
 
2 members found this post helpful.
Old 06-29-2019, 02:01 AM   #27
rpedrica
Member
 
Registered: Nov 2008
Location: Cape Town
Distribution: Slackware64 -current
Posts: 248

Rep: Reputation: 41
Does anyone here actually have a build script for firefox latest (67)? The build script in -current breaks ...
 
Old 06-29-2019, 04:57 AM   #28
LuckyCyborg
Member
 
Registered: Mar 2010
Posts: 456

Rep: Reputation: 254Reputation: 254Reputation: 254
Quote:
Originally Posted by rpedrica View Post
Does anyone here actually have a build script for firefox latest (67)? The build script in -current breaks ...
The script breaks because some patches does not apply, all you need is to comment them out - anyway I quoted the entire script used by me for building the Firefox 67.0.x.

Also, you will need some dependencies: nodejs and cbindgen, like was explained there: https://www.linuxquestions.org/quest...9/#post5954459
Quote:
Originally Posted by ponce View Post
https://www.linuxquestions.org/quest...1/#post5900444

https://github.com/eqrion/cbindgen/releases

you can copy the generated cbindgen binary somewhere in your path.

note that you will need to install also nodejs to build firefox

https://slackbuilds.org/repository/1...opment/nodejs/
Code:
#!/bin/bash

# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018  Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Thanks to the folks at the Mozilla Foundation for permission to
# distribute this, and for all the great work!  :-)

cd $(dirname $0) ; CWD=$(pwd)

PKGNAM=mozilla-firefox
VERSION=$(basename $(ls firefox-*.tar.?z | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)
RELEASEVER=$(echo $VERSION | cut -f 1 -d r | cut -f 1 -d b | cut -f 1 -d e)
BUILD=${BUILD:-1}

# Specify this variable for a localized build.
# For example, to build a version of Firefox with Italian support, run
# the build script like this:
#
# MOZLOCALIZE=it ./mozilla-firefox.SlackBuild
#
MOZLOCALIZE=${MOZLOCALIZE:-}

# Without LANG=C, building the Python environment may fail with:
# "UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 36: ordinal not in range(128)"
LANG=C

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) export ARCH=i686 ;;
    arm*) export ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) export ARCH=$( uname -m ) ;;
  esac
fi

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  if [ -z $MOZLOCALIZE ]; then
    echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
  else
    echo "$PKGNAM-$VERSION-$ARCH-${BUILD}_$MOZLOCALIZE.txz"
  fi
  exit 0
fi

# Firefox has been requiring more and more memory, especially while linking
# libxul. If it fails to build natively on x86 32-bit, it can be useful to
# attempt the build using an x86_64 kernel and a 32-bit userspace. Detect this
# situation and set the ARCH to i686. Later in the script we'll add some
# options to the .mozconfig so that the compile will do the right thing.
if [ "$(uname -m)" = "x86_64" -a "$(file -L /usr/bin/gcc | grep 80386 | grep 32-bit)" != "" ]; then
  COMPILE_X86_UNDER_X86_64=true
  ARCH=i686
fi

# Choose a compiler (gcc/g++ or clang/clang++):
export CC=${CC:-gcc}
export CXX=${CXX:-g++}

# Keep memory usage as low as possible when linking:
SLKLDFLAGS=" -Wl,--as-needed -Wl,--no-keep-memory -Wl,--stats"
export LDFLAGS="$SLKLDFLAGS"
export MOZ_LINK_FLAGS="$SLKLDFLAGS"

# Put Rust objects on a diet to keep the linker from running into memory
# issues (especially on 32-bit):
export RUSTFLAGS="-Cdebuginfo=0"

# Use PGO?  Doubles the time and drive space requirements for the build,
# but should provide a performance increase.  How much depends on which
# benchmarks you believe, but I've typically seen around 2.5%.  I've also
# seen some which say it can be negligably (a fraction of a percent) slower
# with this enganged.  The anecdotal reports usually say there's a noticable
# improvement in overall responsiveness.  Seems like a good bet if you have
# the time and your system is able to handle it.  Set the variable to
# anything else prior to the build to compile Firefox in less time (but
# without the possible benefits of Profile-Guided Optimization).
#
# NOTE:  The 23.0 release fails to compile with a GLib assert error if PGO
# is enabled, so it is being disabled by default.  I can't say I ever noticed
# a lot of difference with this anyway (other than a much, much longer compile
# time.  But pass PGO=yes to the SlackBuild if you want to try it.
#if [ "$ARCH" = "x86_64" ]; then
#  PGO=${PGO:-yes}
#else
#  # 32-bit systems have problems compiling with PGO, as the per-process
#  # memory requirements are too large.  Possibly compiling with a 64-bit
#  # kernel could be a workaround for this, but for now we will default to
#  # using PGO only for x86_64.
#  PGO=${PGO:-no}
#fi
#
# PGO is disabled by default:
PGO=${PGO:-no}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-Os"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-Os"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
elif [ "$ARCH" = "arm" ]; then
  SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "armel" ]; then
  SLKCFLAGS="-O2 -march=armv4t"
  LIBDIRSUFFIX=""
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

TMP=${TMP:-/tmp}
PKG=$TMP/package-mozilla-firefox

# If there is a private Google API key available at compile time, use
# it to enable support for Google Safe Browsing. For Slackware builds,
# we use a private key issued for the Slackware project. If you are
# rebuilding and need this support, or you are producing your own
# distribution, you may obtain your own Google API key at no charge by
# following these instructions:
# https://bugzilla.mozilla.org/show_bug.cgi?id=1377987#c0
if [ -r /root/google-api-key ]; then
  GOOGLE_API_KEY="--with-google-safebrowsing-api-keyfile=/root/google-api-key"
fi

# If not specified, figure out if this is a beta or a release
MOZVERS=${MOZVERS:-release}
if echo $VERSION | grep -q b ; then MOZVERS=beta ; fi

NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}

rm -rf $PKG
mkdir -p $TMP $PKG/usr/lib${LIBDIRSUFFIX}

# We need to use the incredibly ancient autoconf-2.13 for this  :/
( cd $CWD/autoconf ; ./autoconf.build )
PATH=$TMP/autoconf-tmp/usr/bin:$PATH

cd $TMP
rm -rf firefox-$RELEASEVER
# Unpack this in a subdirectory to prevent changing permissions on /tmp:
rm -rf firefox-unpack
mkdir firefox-unpack
cd firefox-unpack
tar xvf $CWD/firefox-$VERSION.source.tar.?z || exit 1
mv * ..
cd ..
rm -rf firefox-unpack
cd firefox-$RELEASEVER || exit 1

# Prevent failures building gkrust by suppressing useless warnings:
sed -i.allow-warnings -e '/#!\[deny(warnings)\]/a #![allow(unused_imports)]' \
  servo/components/style/lib.rs

# Retain GTK+ v2 scrolling behavior:
#zcat $CWD/ff.ui.scrollToClick.diff.gz | patch -p1 --verbose || exit 1

# Fetch localization, if requested
# https://bugzilla.mozilla.org/show_bug.cgi?id=1256955
if [ ! -z $MOZLOCALIZE ]; then
  LOC_URL="http://ftp.mozilla.org/pub/firefox/candidates/$RELEASEVER-candidates/build1/l10n_changesets.txt"
  LOC_COMMIT=$(wget -q -O - $LOC_URL | grep ^$MOZLOCALIZE | cut -d\  -f2)
  hg clone https://hg.mozilla.org/l10n-central/$MOZLOCALIZE -r $LOC_COMMIT
fi

# Patch mimeTypes.rdf
# Uncomment this if you want to use the patch; otherwise, we overwrite the
# mimeTypes.rdf inside the package directory later
# zcat $CWD/mozilla-firefox-mimeTypes-fix.diff.gz | patch -p1 || exit 1

chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

# Our building options, in a configure-like display ;)
OPTIONS="\
  --enable-official-branding \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --with-system-zlib \
  --enable-alsa \
  --enable-application=browser \
  --enable-default-toolkit=cairo-gtk3 \
  --enable-linker=gold \
  --enable-startup-notification \
  $GOOGLE_API_KEY \
  --enable-strip \
  --enable-cpp-rtti \
  --enable-accessibility \
  --disable-crashreporter \
  --disable-debug-symbols \
  --disable-debug \
  --disable-optimize"
# Complains about missing APNG support in Slackware's libpng:
# --with-system-png \
# This option breaks mozilla-12.0:
# --enable-system-cairo \
# NOTE:  It probably reduces bugs to use the bundled library versions,
# so in general we will not --enable-system-libraries.
# But since system zlib has been used for a long time and isn't a moving
# target, we'll leave that one as-is.
if [ ! -z $MOZLOCALIZE ]; then
  OPTIONS=$OPTIONS" \
  --enable-ui-locale=$MOZLOCALIZE
  --with-l10n-base=.."
  # There are no dictionaries in localized builds
  sed -i \
    -e "/@BINPATH@\/dictionaries\/\*/d" \
    -e "/@RESPATH@\/dictionaries\/\*/d" \
    browser/installer/package-manifest.in || exit 1
fi

export MOZILLA_OFFICIAL="1"
export BUILD_OFFICIAL="1"
export MOZ_PHOENIX="1"
export MOZ_PACKAGE_JSSHELL="1"
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS -fno-delete-null-pointer-checks"
export MOZ_MAKE_FLAGS="$NUMJOBS"

# Clear some variables that could break the build
unset DBUS_SESSION_BUS_ADDRESS ORBIT_SOCKETDIR SESSION_MANAGER \
  XDG_SESSION_COOKIE XAUTHORITY MAKEFLAGS

# Assemble our .mozconfig, we use this method for building, seems
# needed for PGO.
echo ". \$topsrcdir/browser/config/mozconfig" > .mozconfig

# Mozilla devs enforce using an objdir for building
# https://developer.mozilla.org/en/Configuring_Build_Options#Building_with_an_objdir
mkdir obj
echo "mk_add_options MOZ_OBJDIR=$(pwd)/obj" >> .mozconfig

if [ "$MOZLOCALIZE" ]; then
  echo "mk_add_options MOZ_CO_LOCALES=\"$MOZLOCALIZE\"" >> .mozconfig
fi

# Tell .mozconfig about the selected compiler:
echo "export CC=\"${CC}\"" >> .mozconfig
echo "export CXX=\"${CXX}\"" >> .mozconfig

if [ "$COMPILE_X86_UNDER_X86_64" = "true" ]; then
  # Compile for i686 under an x86_64 kernel:
  echo "ac_add_options --host=i686-pc-linux-gnu" >> .mozconfig
  echo "ac_add_options --target=i686-pc-linux-gnu" >> .mozconfig
fi

# Add the $OPTIONS above to .mozconfig:
for option in $OPTIONS; do echo "ac_add_options $option" >> .mozconfig; done

# https://developer.mozilla.org/en-US/docs/Building_with_Profile-Guided_Optimization
# Thanks to ArchLinux and Gentoo for the additional hints.
if [ "$PGO" = "yes" ]; then
  # Do a PGO build, double time and disk space but worth it.
  export MOZ_PGO=1
  echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> .mozconfig
  export DISPLAY=:99
  # Launch Xvfb to let the profile scripts run in a X session.
  # Ugly note: if the build breaks you may want to do a "killall Xvfb".
  Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY &
  dbus-launch --exit-with-session ./mach build || exit 1
  kill $! || true
else
  # Do a normal build
  echo "ac_add_options --disable-tests" >> .mozconfig
  ./mach build || exit 1
fi

./mach buildsymbols || exit 1
DESTDIR=$PKG ./mach install || exit 1

# We don't need these (just symlinks anyway):
rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/firefox-devel-$RELEASEVER

# Nor these:
rm -rf $PKG/usr/include

( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER
  #mv defaults/profile/mimeTypes.rdf defaults/profile/mimeTypes.rdf.orig || exit 1
  if [ -d defaults/profile ]; then
    zcat $CWD/mimeTypes.rdf > defaults/profile/mimeTypes.rdf || exit 1
  fi
  # OK, this patch is useless on 7.x.  We'll float without it and see what happens.
  # Perhaps it won't make a difference or should be worked around elsewhere.
  #zcat $CWD/firefox.moz_plugin_path.diff.gz \
  #  | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \
  #  | patch -p1 --verbose --backup --suffix=.orig || exit 1
  # Clean up if the above patch was successful:
  #rm -f firefox.orig
) || exit

mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
mkdir -p $PKG/usr/share/applications
cat $CWD/mozilla-firefox.desktop > $PKG/usr/share/applications/mozilla-firefox.desktop

# These files/directories are usually created if Firefox is run as root,
# which on many systems might (and possibly should) be never.  Therefore, if we
# don't see them we'll put stubs in place to prevent startup errors.
( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER
  if [ -d extensions/talkback\@mozilla.org ]; then
    if [ ! -r extensions/talkback\@mozilla.org/chrome.manifest ]; then
      echo > extensions/talkback\@mozilla.org/chrome.manifest
    fi
  fi
  if [ ! -d updates ]; then
    mkdir -p updates/0
  fi
)

# Need some default icons in the right place:
for i in 16 22 24 32 48 256; do
  install -m 0644 -D browser/branding/official/default${i}.png \
    $PKG/usr/share/icons/hicolor/${i}x${i}/apps/firefox.png
done
mkdir -p $PKG/usr/share/pixmaps
( cd $PKG/usr/share/pixmaps ; ln -sf /usr/share/icons/hicolor/256x256/apps/firefox.png . )
mkdir -p $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default
install -m 644 browser/branding/official/default16.png \
  $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/icons/
install -m 644 browser/branding/official/default16.png \
  $PKG/usr/lib$LIBDIRSUFFIX/firefox-$RELEASEVER/chrome/icons/default/

# Copy over the LICENSE
install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$RELEASEVER/

mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
if [ -z $MOZLOCALIZE ]; then
  /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-$BUILD.txz
else
  /sbin/makepkg -l y -c n $TMP/mozilla-firefox-$VERSION-$ARCH-${BUILD}_$MOZLOCALIZE.txz
fi
Finally, be warned that from my own experience, you need at least 8GB RAM for the build to succeed.

Last edited by LuckyCyborg; 06-29-2019 at 06:59 AM.
 
2 members found this post helpful.
Old 06-29-2019, 02:06 PM   #29
rpedrica
Member
 
Registered: Nov 2008
Location: Cape Town
Distribution: Slackware64 -current
Posts: 248

Rep: Reputation: 41
Thanks @LuckyCyborg I've noticed that in either case (using Mozilla provided archive or latest-firefox packaged script), Firefox 67.0.x is asking to start a new profile and won't use the existing one. Any idea on how to maintain your existing profile?
 
Old 06-29-2019, 03:09 PM   #30
ZhaoLin1457
Member
 
Registered: Jan 2018
Posts: 289

Rep: Reputation: 250Reputation: 250Reputation: 250
Quote:
Originally Posted by rpedrica View Post
Thanks @LuckyCyborg I've noticed that in either case (using Mozilla provided archive or latest-firefox packaged script), Firefox 67.0.x is asking to start a new profile and won't use the existing one. Any idea on how to maintain your existing profile?
That happens because the built binary (which you refer in the both cases) have a build date older than the ESR from -current.

I noticed that somehow the Firefox stores its built date and asks for a new profile if you try to "upgrade" to a version built previously, even in itself that version is greater.

BTW, @LuckyCyborg explanations are about building the Firefox from sources, which I guess is safe to consider as not be spoiled by that issue, because a successful build will be newer than the ESR from -current or whatever binary published by Mozilla.

Last edited by ZhaoLin1457; 06-29-2019 at 09:45 PM.
 
1 members found this post helpful.
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
LXer: LibreOffice 6.1 Now Available, Facebook Open-Sourcing Fizz, Firefox Advance Is Latest Test Pilot Experiment, Dart 2.0 Stable Released LXer Syndicated Linux News 0 08-09-2018 01:20 AM
[SOLVED] Slackware 14.2 and latest stable Mesa giomat Slackware 11 02-12-2018 07:40 PM
What is more stable: Slackware or Debian Stable ? Xeratul Slackware 100 11-14-2015 10:07 PM
Ubuntu "9.04" EeePC 1000H latest Firefox latest Flash unreliable DalePace Linux - Laptop and Netbook 1 08-23-2009 02:02 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 12:42 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration