You are not logged in.

#1 2014-08-06 19:55:04

jonnybarnes
Member
From: Manchester, UK
Registered: 2011-05-11
Posts: 135
Website

Trying to compile firefox nightly

I was hoping to do the equivalent of what heftig did for aurora and compile firefox nightly into its own package. First things first is getting the source code to succesfully compile at all before worrying about how its packaged. Here's my PKGBUILD:

# $Id$
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Nightly: Jonny Barnes <jonny@jonnybarnes.uk>

pkgname=firefox-nightly
pkgver=34.0a1+20140806+gf822655
pkgrel=1
pkgdesc="Nightly version of the popular Firefox web browser"
arch=('i686' 'x86_64')
license=('MPL' 'GPL' 'LGPL')
url="http://www.mozilla.com/en-US/firefox/channel/"
depends=('gtk3' 'gtk2' 'mozilla-common' 'libxt' 'startup-notification' 'mime-types'
         'dbus-glib' 'alsa-lib' 'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('unzip' 'zip' 'diffutils' 'python2' 'yasm' 'mesa' 'imake'
             'xorg-server-xvfb' 'libpulse' 'gst-plugins-base-libs'
             'inetutils' 'autoconf2.13' 'git')
optdepends=('networkmanager: Location detection via available WiFi networks'
            'gst-plugins-good: h.264 video'
            'gst-libav: h.264 video')
install=firefox-nightly.install
options=('!emptydirs' '!makeflags' '!strip')
source=(git+https://github.com/mozilla/gecko-dev
        mozconfig firefox-nightly.desktop vendor.js
        firefox-install-dir.patch)
sha256sums=('SKIP'
            'dba05c2f04f8f086f9f08d9b962f7324ea6354ff7524ad806f743167314054eb'
            '46c2de250e708295e43c87b5118cda1be2417f854c997ef54d4b92291b73416d'
            '9907a80763e6a0f239bcc5634dbfbc2de8842ee76e84b5d2ad7a26f06e1242a6'
            '1305f33fa009021679f9da1ee3ac13fb4f299e036e402c45a804189031f39e22')

# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM

pkgver() {
  cd gecko-dev
  echo $(cat browser/config/version.txt)+$(date +%Y%m%d)+g$(git rev-parse --short HEAD)
}

prepare() {
  cd gecko-dev

  cp ../mozconfig .mozconfig
  ## patch -Np1 -i ../firefox-install-dir.patch

  echo -n "$_google_api_key" >google-api-key
  echo "ac_add_options --with-google-api-keyfile=\"$PWD/google-api-key\"" >>.mozconfig

  # easiest to just delete this folder and recreate, not doing so causes an error when the ln command is run
  if [[ -d "$srcdir/path" ]]; then
    rm -rf "$srcdir/path"
  fi
  mkdir "$srcdir/path"

  # WebRTC build tries to execute "python" and expects Python 2
  ln -s /usr/bin/python2 "$srcdir/path/python"

  # Use gold, as Mozilla can use some of its features, such as safe ICF
  ln -s /usr/bin/ld.gold "$srcdir/path/ld"

  if [[ $_multilib == 1 ]]; then
    # Multilib i686
    echo "ac_add_options --target=i686-pc-linux-gnu" >>.mozconfig
  else
    # Only works when not cross-compiling
    echo "ac_add_options --enable-dmd" >>.mozconfig
  fi

  # Name it Firefox Nightly
  sed -i '/^MOZ_APP_BASENAME=/s/Firefox/Firefox Nightly/' \
    browser/confvars.sh

  # Point all the URLs back to firefox, not firefox nightly
  #sed -i 's/%APP%/firefox/g' \
  #  browser/app/profile/firefox.js
}

build() {
  cd gecko-dev

  # _FORTIFY_SOURCE causes configure failures
  export CFLAGS="$CFLAGS $CPPFLAGS"
  unset CPPFLAGS

  export PATH="$srcdir/path:$PATH"
  export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/firefox-nightly"
  export PYTHON="/usr/bin/python2"

  # Do PGO
  xvfb-run -a -s "-extension GLX -screen 0 1280x1024x24" \
    make -f client.mk build MOZ_PGO=1
}

package() {
  cd gecko-dev
  make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install

  install -Dm644 ../vendor.js "$pkgdir/usr/lib/firefox-nightly/browser/defaults/preferences/vendor.js"

  for i in 16 32 48; do
      install -Dm644 browser/branding/nightly/default$i.png \
        "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/firefox-nightly.png"
  done
  install -Dm644 browser/branding/nightly/content/icon64.png \
    "$pkgdir/usr/share/icons/hicolor/64x64/apps/firefox-nightly.png"
  install -Dm644 browser/branding/nightly/mozicon128.png \
    "$pkgdir/usr/share/icons/hicolor/128x128/apps/firefox-nightly.png"
  install -Dm644 browser/branding/nightly/content/about-logo.png \
    "$pkgdir/usr/share/icons/hicolor/192x192/apps/firefox-nightly.png"
  install -Dm644 browser/branding/nightly/content/about-logo@2x.png \
    "$pkgdir/usr/share/icons/hicolor/384x384/apps/firefox-nightly.png"

  install -Dm644 ../firefox-nightly.desktop \
    "$pkgdir/usr/share/applications/firefox-nightly.desktop"

  # Use system-provided dictionaries
  rm -rf "$pkgdir"/usr/lib/firefox-nightly/{dictionaries,hyphenation}
  ln -s /usr/share/hunspell "$pkgdir/usr/lib/firefox-nightly/dictionaries"
  ln -s /usr/share/hyphen "$pkgdir/usr/lib/firefox-nightly/hyphenation"

  #workaround for now
  #https://bugzilla.mozilla.org/show_bug.cgi?id=658850
  ln -sf firefox-nightly "$pkgdir/usr/lib/firefox-nightly/firefox-nightly-bin"
}

and here's my mozconfig:

. $topsrcdir/browser/config/mozconfig

ac_add_options --prefix=/usr
ac_add_options --libdir=/usr/lib

ac_add_options --with-branding=browser/branding/nightly
ac_add_options --enable-update-channel=nightly

# System libraries
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-system-cairo

# Features
ac_add_options --enable-startup-notification
ac_add_options --enable-gstreamer=1.0

ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-installer
ac_add_options --disable-tests

# For Nightly
ac_add_options --enable-profiling

# Compiling
ac_add_options --enable-optimize="-O2"

# Keep symbols
STRIP_FLAGS="--strip-debug"

# PGO
mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run'

# 4-core CPU
mk_add_options MOZ_MAKE_FLAGS=-j4

# vim:set ft=sh:

Then I always get this error:

cp -p  ../../dist/bin/-bin
cp: missing destination file operand after ‘../../dist/bin/-bin’
Try 'cp --help' for more information.
Makefile:65: recipe for target 'libs' failed
make[6]: *** [libs] Error 1
make[6]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu/browser/app'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/recurse.mk:92: recipe for target 'browser/app/libs' failed
make[5]: *** [browser/app/libs] Error 2
make[5]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/recurse.mk:42: recipe for target 'libs' failed
make[4]: *** [libs] Error 2
make[4]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/rules.mk:548: recipe for target 'default' failed
make[3]: *** [default] Error 2
make[3]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/client.mk:386: recipe for target 'realbuild' failed
make[2]: *** [realbuild] Error 2
make[2]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/client.mk:221: recipe for target 'profiledbuild' failed
make[1]: *** [profiledbuild] Error 2
make[1]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev'
client.mk:168: recipe for target 'build' failed
make: *** [build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

Anyone any idea what's going wrong?

Offline

#2 2014-08-06 21:01:35

karol
Archivist
Registered: 2009-05-06
Posts: 25,440

Re: Trying to compile firefox nightly

Have you tried using https://aur.archlinux.org/packages/firefox-nightly/ ? Oooops, this aur package is precompiled.

Last edited by karol (2014-08-06 21:03:25)

Offline

#3 2014-08-07 00:19:04

kbrosnan
Member
Registered: 2010-08-18
Posts: 8

Re: Trying to compile firefox nightly

GTK3 builds are experimental and can break at any time. There are Mozilla builds at http://ftp.mozilla.org/pub/mozilla.org/ … t/?C=S;O=D and you can see the state of the official build tree at https://treeherder.mozilla.org/ui/#/jobs?repo=elm

The most important bit for an external build is the first B in each line, Green means that the builds were created and past build tests. Orange means that there were test failures, this may or may not result in build failures for external builders. A red B shows build failures and likely any GTK3 build based off that changeset will fail.

There was a red build failure over the weekend I would suggest re-pulling to the latest code and clearing your object directory. I had a GTK3 successful build on F20 earlier today. If helpful I can get the GCC and .mozconfig data.

Offline

#4 2014-08-08 11:14:58

jonnybarnes
Member
From: Manchester, UK
Registered: 2011-05-11
Posts: 135
Website

Re: Trying to compile firefox nightly

So I've deleted the obj* directory, and edited out the gkt3 and cairo lines in mozconfig and I get the exact same error. Here it is with the previous couple of lines included. Do you know whats wrong?

make[6]: Entering directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu/browser/app'
rm -f '../../dist/bin/browser/defaults/preferences/firefox.js'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu/_virtualenv/bin/python -m mozbuild.action.preprocessor --depend .deps/firefox.js.pp  -DFIREFOX_ICO='"../../dist/branding/firefox.ico"' -DDOCUMENT_ICO='"../../dist/branding/document.ico"' -DNEWWINDOW_ICO='"../../dist/branding/newwindow.ico"' -DNEWTAB_ICO='"../../dist/branding/newtab.ico"' -DPBMODE_ICO='"../../dist/branding/pbmode.ico"'  -DAPP_VERSION='34.0a1' -DXPCOM_GLUE -DMOZ_GLUE_IN_PROGRAM -DAB_CD=en-US -DNO_NSPR_10_SUPPORT -DHAVE_X86_AVX2='1' -DHAVE_64BIT_BUILD='1' -DMOZ_ENABLE_PROFILER_SPS='1' -DMOZ_PROFILING='1' -DMOZILLA_VERSION='"34.0a1"' -DMOZILLA_VERSION_U='34.0a1' -DMOZILLA_UAVERSION='"34.0"' -DXP_LINUX='1' -DD_INO='d_ino' -DMOZ_DEBUG_SYMBOLS='1' -DSTDC_HEADERS='1' -DHAVE_SSIZE_T='1' -DHAVE_ST_BLKSIZE='1' -DHAVE_SIGINFO_T='1' -DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE='1' -DHAVE_VISIBILITY_ATTRIBUTE='1' -DHAVE_DIRENT_H='1' -DHAVE_GETOPT_H='1' -DHAVE_SYS_BITYPES_H='1' -DHAVE_MEMORY_H='1' -DHAVE_UNISTD_H='1' -DHAVE_GNU_LIBC_VERSION_H='1' -DHAVE_NL_TYPES_H='1' -DHAVE_MALLOC_H='1' -DHAVE_X11_XKBLIB_H='1' -DHAVE_CPUID_H='1' -DHAVE_SYS_QUOTA_H='1' -DHAVE_SYS_SYSMACROS_H='1' -DHAVE_LINUX_QUOTA_H='1' -DHAVE_LINUX_IF_ADDR_H='1' -DHAVE_LINUX_RTNETLINK_H='1' -DHAVE_SYS_TYPES_H='1' -DHAVE_NETINET_IN_H='1' -DHAVE_BYTESWAP_H='1' -DHAVE_SYS_CDEFS_H='1' -DHAVE_DLOPEN='1' -DHAVE_DLADDR='1' -DHAVE_MEMMEM='1' -DFUNCPROTO='15' -DHAVE_LIBXSS='1' -D_REENTRANT='1' -DHAVE_STAT64='1' -DHAVE_LSTAT64='1' -DHAVE_TRUNCATE64='1' -DHAVE_LOCALTIME_R='1' -DHAVE_CLOCK_MONOTONIC='1' -DHAVE_RES_NINIT='1' -DHAVE_LANGINFO_CODESET='1' -DVA_COPY='va_copy' -DHAVE_VA_COPY='1' -DHAVE_VA_LIST_AS_ARRAY='1' -DHAVE_THREAD_TLS_KEYWORD='1' -DMALLOC_H='<malloc.h>' -DHAVE_STRNDUP='1' -DHAVE_POSIX_MEMALIGN='1' -DHAVE_MEMALIGN='1' -DHAVE_VALLOC='1' -DHAVE_MALLOC_USABLE_SIZE='1' -DHAVE_I18N_LC_MESSAGES='1' -DHAVE_LOCALECONV='1' -DTARGET_XPCOM_ABI='"x86_64-gcc3"' -DNS_ATTR_MALLOC='__attribute__((malloc))' -DNS_WARN_UNUSED_RESULT='__attribute__((warn_unused_result))' -DNIGHTLY_BUILD='1' -DMOZ_UPDATE_CHANNEL='default' -DEARLY_BETA_OR_EARLIER='1' -DMOZ_PHOENIX='1' -DMOZ_BUILD_APP='browser' -DMOZ_X11='1' -DMOZ_WIDGET_GTK2='1' -DMOZ_WIDGET_GTK='2' -DMOZ_PDF_PRINTING='1' -DMOZ_ENABLE_XREMOTE='1' -DMOZ_INSTRUMENT_EVENT_LOOP='1' -DMOZ_ENABLE_STARTUP_NOTIFICATION='1' -DNS_PRINTING='1' -DNS_PRINT_PREVIEW='1' -DMOZ_DISTRIBUTION_ID='"org.mozilla"' -DMOZ_ENABLE_GIO='1' -DMOZ_ENABLE_GCONF='1' -DMOZ_ENABLE_DBUS='1' -DACCESSIBILITY='1' -DMOZ_WEBRTC='1' -DMOZ_WEBRTC_ASSERT_ALWAYS='1' -DMOZ_WEBRTC_SIGNALING='1' -DMOZ_PEERCONNECTION='1' -DMOZ_SCTP='1' -DMOZ_SRTP='1' -DMOZ_SAMPLE_TYPE_FLOAT32='1' -DMOZ_WEBSPEECH='1' -DMOZ_RAW='1' -DATTRIBUTE_ALIGNED_MAX='64' -DMOZ_WEBM='1' -DMOZ_FFMPEG='1' -DMOZ_FMP4='1' -DMOZ_EME='1' -DMOZ_MEDIA_NAVIGATOR='1' -DMOZ_VPX='1' -DMOZ_VPX_ERROR_CONCEALMENT='1' -DVPX_X86_ASM='1' -DMOZ_WAVE='1' -DMOZ_VORBIS='1' -DMOZ_OPUS='1' -DMOZ_WEBM_ENCODER='1' -DMOZ_GSTREAMER='1' -DGST_API_VERSION='"1.0"' -DENABLE_SYSTEM_EXTENSION_DIRS='1' -DMOZ_WEBGL='1' -DMOZ_WEBGL_CONFORMANT='1' -DMOZ_GAMEPAD='1' -DMOZ_CRASHREPORTER_ENABLE_PERCENT='100' -DLIBJPEG_TURBO_X64_ASM='1' -DMOZ_WEBAPP_RUNTIME='1' -DMOZ_GMP_SANDBOX='1' -DMOZ_FEEDS='1' -DMOZ_SAFE_BROWSING='1' -DMOZ_URL_CLASSIFIER='1' -DGL_PROVIDER_GLX='1' -DMOZ_LOGGING='1' -DMOZ_DMD='1' -DMOZ_MEMORY='1' -DMOZ_MEMORY_LINUX='1' -DJSGC_INCREMENTAL='1' -DJSGC_USE_EXACT_ROOTING='1' -DJSGC_GENERATIONAL='1' -DMOZ_PAY='1' -DMOZ_ACTIVITIES='1' -DHAVE___CXA_DEMANGLE='1' -DMOZ_DEMANGLE_SYMBOLS='1' -DHAVE__UNWIND_BACKTRACE='1' -DJS_DEFAULT_JITREPORT_GRANULARITY='3' -DMOZ_OMNIJAR='1' -DMOZ_USER_DIR='".mozilla"' -DHAVE_FT_BITMAP_SIZE_Y_PPEM='1' -DHAVE_FT_GLYPHSLOT_EMBOLDEN='1' -DHAVE_FT_LOAD_SFNT_TABLE='1' -DHAVE_FONTCONFIG_FCFREETYPE_H='1' -DMOZ_TREE_PIXMAN='1' -DHAVE_STDINT_H='1' -DHAVE_INTTYPES_H='1' -DMOZ_TREE_CAIRO='1' -DMOZ_ENABLE_SKIA='1' -DUSE_SKIA='1' -DUSE_SKIA_GPU='1' -DMOZ_XUL='1' -DMOZ_PROFILELOCKING='1' -DENABLE_MARIONETTE='1' -DBUILD_CTYPES='1' -DMOZ_PLACES='1' -DMOZ_SOCIAL='1' -DMOZ_SERVICES_COMMON='1' -DMOZ_SERVICES_CRYPTO='1' -DMOZ_SERVICES_HEALTHREPORT='1' -DMOZ_SERVICES_METRICS='1' -DMOZ_SERVICES_SYNC='1' -DMOZ_JSDOWNLOADS='1' -DMOZ_MACBUNDLE_ID='org.mozilla.nightly' -DMOZ_B2G_VERSION='"1.0.0"' -DMOZ_B2G_OS_NAME='""' -DMOZ_APP_UA_NAME='""' -DMOZ_APP_UA_VERSION='"34.0a1"' -DFIREFOX_VERSION='34.0a1' -DMOZ_TELEMETRY_DISPLAY_REV='2' -DMOZ_DATA_REPORTING='1' -DMOZ_DLL_SUFFIX='".so"' -DHAVE_POSIX_FADVISE='1' -DHAVE_POSIX_FALLOCATE='1' -DXP_UNIX='1' -DMOZ_ACCESSIBILITY_ATK='1' -DATK_MAJOR_VERSION='2' -DATK_MINOR_VERSION='12' -DATK_REV_VERSION='0' -DA11Y_LOG='1' -DEXPOSE_INTL_API='1' -DENABLE_INTL_API='1' -DU_STATIC_IMPLEMENTATION='1' -DU_USING_ICU_NAMESPACE='0' -DMOZ_STATIC_JS='1' -DNDEBUG -DTRIMMED '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/browser/app/profile/firefox.js' -o '../../dist/bin/browser/defaults/preferences/firefox.js'
cp -p  ../../dist/bin/-bin
cp: missing destination file operand after ‘../../dist/bin/-bin’
Try 'cp --help' for more information.
Makefile:64: recipe for target 'libs' failed
make[6]: *** [libs] Error 1
make[6]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu/browser/app'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/recurse.mk:92: recipe for target 'browser/app/libs' failed
make[5]: *** [browser/app/libs] Error 2
make[5]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/recurse.mk:42: recipe for target 'libs' failed
make[4]: *** [libs] Error 2
make[4]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/config/rules.mk:547: recipe for target 'default' failed
make[3]: *** [default] Error 2
make[3]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/obj-x86_64-unknown-linux-gnu'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/client.mk:386: recipe for target 'realbuild' failed
make[2]: *** [realbuild] Error 2
make[2]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev'
/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev/client.mk:221: recipe for target 'profiledbuild' failed
make[1]: *** [profiledbuild] Error 2
make[1]: Leaving directory '/mnt/storage/archive/firefox-nightly-arch/src/gecko-dev'
client.mk:168: recipe for target 'build' failed
make: *** [build] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

Offline

Board footer

Powered by FluxBB