Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[rpm] Improve the RPM spec file for gecko 38.
  • Loading branch information
tworaz committed Sep 1, 2015
1 parent dbaa395 commit a620548
Show file tree
Hide file tree
Showing 2 changed files with 108 additions and 59 deletions.
6 changes: 2 additions & 4 deletions embedding/embedlite/config/mozconfig.merqtxulrunner
Expand Up @@ -5,15 +5,14 @@ export MOZ_DEBUG_SYMBOLS=1
export MOZILLA_OFFICIAL=1

mk_add_options PROFILE_GEN_SCRIPT=@TOPSRCDIR@/build/profile_pageloader.pl
mk_add_options MOZ_MAKE_FLAGS="-j8"
mk_add_options MOZ_OBJDIR="@TOPSRCDIR@/obj-build-mer-qt-xr"

export CXXFLAGS="$CXXFLAGS -DUSE_ANDROID_OMTC_HACKS=1 "

ac_add_options --prefix=/usr

ac_add_options --with-system-jpeg

ac_add_options --without-x
ac_add_options --with-gl-provider=EGL

ac_add_options --enable-application=xulrunner
Expand All @@ -31,6 +30,7 @@ ac_add_options --disable-dbus
ac_add_options --disable-updater
ac_add_options --disable-gamepad
ac_add_options --disable-printing
ac_add_options --disable-crashreporter

# disabling for now, since the build fails...
ac_add_options --enable-webrtc
Expand All @@ -40,6 +40,4 @@ ac_add_options --disable-dbus
ac_add_options --disable-necko-wifi
ac_add_options --disable-elf-hack
ac_add_options --disable-fmp4

ac_add_options --disable-accessibility
ac_add_options --without-x
161 changes: 106 additions & 55 deletions rpm/xulrunner-qt5.spec
@@ -1,4 +1,23 @@
%define greversion 31.0a1
%define greversion 38.0.5
%global mozappdir %{_libdir}/%{name}-%{greversion}
%global mozappdirdev %{_libdir}/%{name}-devel-%{greversion}

# Private/bundled libs the final package should not provide or depend on.
%global privlibs libfreebl3
%global privlibs %{privlibs}|libmozalloc
%global privlibs %{privlibs}|libmozsqlite3
%global privlibs %{privlibs}|libnspr4
%global privlibs %{privlibs}|libnss3
%global privlibs %{privlibs}|libnssdbm3
%global privlibs %{privlibs}|libnssutil3
%global privlibs %{privlibs}|libplc4
%global privlibs %{privlibs}|libplds4
%global privlibs %{privlibs}|libsmime3
%global privlibs %{privlibs}|libsoftokn3
%global privlibs %{privlibs}|libssl3

%global __provides_exclude ^(%{privlibs})\\.so
%global __requires_exclude ^(%{privlibs})\\.so

Name: xulrunner-qt5
Summary: XUL runner
Expand All @@ -12,13 +31,12 @@ BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(gstreamer-0.10)
BuildRequires: pkgconfig(gstreamer-app-0.10)
BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
%ifarch armv7hl armv7tnhl
BuildRequires: pkgconfig(libresourceqt5)
%endif
BuildRequires: pkgconfig(libproxy-1.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-app-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
BuildRequires: pkgconfig(Qt5Positioning)
BuildRequires: qt5-qttools
BuildRequires: qt5-default
Expand All @@ -34,6 +52,9 @@ BuildRequires: libjpeg-turbo-devel
BuildRequires: yasm
%endif
BuildRequires: fdupes
# See below on why the system version of this library is used
Requires: nss-ckbi >= 3.16.6
Requires: gstreamer1.0-plugins-good

%description
Mozilla XUL runner
Expand All @@ -55,61 +76,91 @@ Summary: Misc files for xulrunner
%description misc
Tests and misc files for xulrunner.

# Build output directory.
%define BUILD_DIR "$PWD"/obj-build-mer-qt-xr
# EmbedLite config used to configure the engine.
%define BASE_CONFIG "$PWD"/embedding/embedlite/config/mozconfig.merqtxulrunner

%prep
%setup -q -n %{name}-%{version}

%build
export DONT_POPULATE_VIRTUALENV=1
export PYTHONPATH=$PWD/python:$PWD/config:$PWD/build:$PWD/xpcom/typelib/xpt/tools:$PWD/dom/bindings:$PWD/dom/bindings/parser:$PWD/other-licenses/ply:$PWD/media/webrtc/trunk/tools/gyp/pylib/
for i in $(find $PWD/python $PWD/testing/mozbase -mindepth 1 -maxdepth 1 -type d); do
export PYTHONPATH+=:$i
mkdir -p "%BUILD_DIR"
cp -rf "%BASE_CONFIG" "%BUILD_DIR"/mozconfig

%ifarch %ix86
PYTHONPATH="$PWD"/python:"$PWD"/config:"$PWD"/build:"$PWD"/xpcom/typelib/xpt/tools
PYTHONPATH+=:"$PWD"/dom/bindings:$PWD/dom/bindings/parser
PYTHONPATH+=:"$PWD"/other-licenses/ply:$PWD/media/webrtc/trunk/tools/gyp/pylib
PYTHONPATH+=:"$PWD"/testing/taskcluster
PYTHONPATH+=:"$PWD"/testing/web-platform
PYTHONPATH+=:"$PWD"/testing/web-platform/harness
PYTHONPATH+=:"$PWD"/layout/tools/reftest
PYTHONPATH+=:"$PWD"/dom/bindings
for i in $(find "$PWD"/python "$PWD"/testing/mozbase -mindepth 1 -maxdepth 1 -type d); do
PYTHONPATH+=:"$i:$i/lib"
done
export SBOX_REDIRECT_FORCE=/usr/bin/python
# hack for when not using virtualenv
ln -sf $PWD/obj-build-mer-qt-xr/config.status $PWD/build/config.status
echo "export DONT_POPULATE_VIRTUALENV=1" > "%BUILD_DIR"/rpm-shared.env
echo "export PYTHONPATH=$PYTHONPATH" >> "%BUILD_DIR"/rpm-shared.env
echo "export SBOX_REDIRECT_FORCE=/usr/bin/python" >> "%BUILD_DIR"/rpm-shared.env
%endif
echo "export MOZCONFIG=%BUILD_DIR/mozconfig" >> "%BUILD_DIR"/rpm-shared.env

cp -rf embedding/embedlite/config/mozconfig.merqtxulrunner mozconfig
%build
source "%BUILD_DIR"/rpm-shared.env
# hack for when not using virtualenv
ln -sf "%BUILD_DIR"/config.status $PWD/build/config.status

printf "#\n# Added by xulrunner-qt.spec:\n#" >> "$MOZCONFIG"
%ifarch %arm
echo "ac_add_options --with-arm-kuser" >> mozconfig
echo "ac_add_options --with-float-abi=toolchain-default" >> mozconfig
echo "ac_add_options --with-arm-kuser" >> "$MOZCONFIG"
echo "ac_add_options --with-float-abi=toolchain-default" >> "$MOZCONFIG"
# No need for this, this should be managed by toolchain
echo "ac_add_options --with-thumb=toolchain-default" >> mozconfig
echo "ac_add_options --with-thumb=toolchain-default" >> "$MOZCONFIG"
%endif
echo "mk_add_options MOZ_MAKE_FLAGS='-j%jobs'" >> mozconfig
echo "export CFLAGS=\"\$CFLAGS -fuse-ld=gold \"" >> mozconfig
echo "export CXXFLAGS=\"\$CXXFLAGS -fuse-ld=gold \"" >> mozconfig
echo "export LD=ld.gold" >> mozconfig
echo "ac_add_options --disable-tests" >> mozconfig
echo "ac_add_options --enable-system-hunspell" >> mozconfig
echo "ac_add_options --disable-strip" >> mozconfig
echo "ac_add_options --disable-mochitest" >> mozconfig
echo "ac_add_options --disable-installer" >> mozconfig
echo "ac_add_options --disable-javaxpcom" >> mozconfig
echo "ac_add_options --disable-crashreporter" >> mozconfig
echo "ac_add_options --without-x" >> mozconfig
echo "ac_add_options --with-app-name=%{name}" >> mozconfig
export MOZCONFIG=$PWD/mozconfig

echo "mk_add_options MOZ_MAKE_FLAGS='%{?jobs:-j%jobs}'" >> "$MOZCONFIG"
echo "mk_add_options MOZ_OBJDIR='%BUILD_DIR'" >> "$MOZCONFIG"
# XXX: gold crashes when building gecko for both i486 and x86_64
#echo "export CFLAGS=\"\$CFLAGS -fuse-ld=gold \"" >> "$MOZCONFIG"
#echo "export CXXFLAGS=\"\$CXXFLAGS -fuse-ld=gold \"" >> "$MOZCONFIG"
#echo "export LD=ld.gold" >> "$MOZCONFIG"
echo "ac_add_options --disable-tests" >> "$MOZCONFIG"
echo "ac_add_options --enable-system-hunspell" >> "$MOZCONFIG"
echo "ac_add_options --disable-strip" >> "$MOZCONFIG"
echo "ac_add_options --disable-mochitest" >> "$MOZCONFIG"
echo "ac_add_options --disable-installer" >> "$MOZCONFIG"
echo "ac_add_options --disable-javaxpcom" >> "$MOZCONFIG"
echo "ac_add_options --with-app-name=%{name}" >> "$MOZCONFIG"

# https://bugzilla.mozilla.org/show_bug.cgi?id=1002002
echo "ac_add_options --disable-startupcache" >> "$MOZCONFIG"

%{__make} -f client.mk build STRIP="/bin/true" %{?jobs:MOZ_MAKE_FLAGS="-j%jobs"}

%install
export DONT_POPULATE_VIRTUALENV=1
export PYTHONPATH=$PWD/python:$PWD/config:$PWD/build:$PWD/xpcom/typelib/xpt/tools:$PWD/dom/bindings:$PWD/dom/bindings/parser:$PWD/other-licenses/ply:$PWD/media/webrtc/trunk/tools/gyp/pylib/
for i in $(find $PWD/python $PWD/testing/mozbase -mindepth 1 -maxdepth 1 -type d); do
export PYTHONPATH+=:$i
done
export SBOX_REDIRECT_FORCE=/usr/bin/python
source "%BUILD_DIR"/rpm-shared.env

export MOZCONFIG=$PWD/mozconfig
%{__make} -f client.mk install DESTDIR=%{buildroot}
%{__chmod} +x %{buildroot}%{_libdir}/%{name}-%{greversion}/*.so
for i in $(cd ${RPM_BUILD_ROOT}%{mozappdirdev}/sdk/lib/; ls *.so); do
rm ${RPM_BUILD_ROOT}%{mozappdirdev}/sdk/lib/$i
ln -s %{mozappdir}/$i ${RPM_BUILD_ROOT}%{mozappdirdev}/sdk/lib/$i
done
%fdupes -s %{buildroot}%{_includedir}
%fdupes -s %{buildroot}%{_libdir}
chmod +x %{buildroot}%{_libdir}/%{name}-%{greversion}/*.so
%{__chmod} +x %{buildroot}%{mozappdir}/*.so
# Use the system hunspell dictionaries
%{__rm} -rf ${RPM_BUILD_ROOT}%{_libdir}/%{name}-%{greversion}/dictionaries
ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{_libdir}/%{name}-%{greversion}/dictionaries
mkdir ${RPM_BUILD_ROOT}%{_libdir}/%{name}-%{greversion}/defaults
%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
mkdir ${RPM_BUILD_ROOT}%{mozappdir}/defaults

# symlink to the system libnssckbi.so (CA trust library). It is replaced by
# the p11-kit-nss-ckbi package to use p11-kit's trust store.
# There is a strong binary compatibility guarantee.
rm ${RPM_BUILD_ROOT}%{mozappdir}/libnssckbi.so
ln -s %{_libdir}/libnssckbi.so ${RPM_BUILD_ROOT}%{mozappdir}/libnssckbi.so

# Fix some of the RPM lint errors.
find "%{buildroot}%{_includedir}" -type f -name '*.h' -exec chmod 0644 {} +;

%post
# >> post
Expand All @@ -119,22 +170,22 @@ touch /var/lib/_MOZEMBED_CACHE_CLEAN_
%files
%defattr(-,root,root,-)
%attr(755,-,-) %{_bindir}/*
%dir %{_libdir}/%{name}-%{greversion}/defaults
%{_libdir}/%{name}-%{greversion}/*.so
%{_libdir}/%{name}-%{greversion}/omni.ja
%{_libdir}/%{name}-%{greversion}/dependentlibs.list
%{_libdir}/%{name}-%{greversion}/dictionaries
%dir %{mozappdir}/defaults
%{mozappdir}/*.so
%{mozappdir}/omni.ja
%{mozappdir}/dependentlibs.list
%{mozappdir}/dictionaries

%files devel
%defattr(-,root,root,-)
%{_datadir}/*
%{_libdir}/%{name}-devel-%{greversion}
%{mozappdirdev}
%{_libdir}/pkgconfig
%{_includedir}/*

%files misc
%defattr(-,root,root,-)
%{_libdir}/%{name}-%{greversion}/*
%exclude %{_libdir}/%{name}-%{greversion}/*.so
%exclude %{_libdir}/%{name}-%{greversion}/omni.ja
%exclude %{_libdir}/%{name}-%{greversion}/dependentlibs.list
%{mozappdir}/*
%exclude %{mozappdir}/*.so
%exclude %{mozappdir}/omni.ja
%exclude %{mozappdir}/dependentlibs.list

0 comments on commit a620548

Please sign in to comment.