Package palemoon: Specfile

%define branch_point alt0
%define branch M70T.1
%define revision 1

Summary: The Pale Moon project browser
Summary(ru_RU.UTF-8): Интернет-браузер Pale Moon

Name: palemoon
Version: 25.7.3.0
Release: %branch_point.%branch.%revision
License: MPL/GPL/LGPL
Group: Networking/WWW
Url: https://github.com/MoonchildProductions/Pale-Moon
Packager: Hihin Ruslan <ruslandh@altlinux.ru>

%define palemoon_cid                    \{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4\}

%define palemoon_prefix                 %_libdir/%name
%define palemoon_datadir                %_datadir/%name
%define palemoon_arch_extensionsdir     %palemoon_prefix/extensions
%define palemoon_noarch_extensionsdir   %palemoon_datadir/extensions

Source: %name-source.tar
Source1: rpm-build.tar
Source2: searchplugins.tar
Source4: %name-mozconfig
Source6: %name.desktop
Source7: firefox.c
Source8: firefox-prefs.js

Patch5: firefox-duckduckgo.patch
Patch6: firefox3-alt-disable-werror.patch
#Patch14:	firefox-fix-install.patch
Patch16: firefox-cross-desktop.patch
#Patch17:	mozilla-disable-installer.patch
Patch18: mozilla_palimoon-bug-1153109-enable-stdcxx-compat.patch
Patch20: mozilla_palimoon-bug-1025605-GLIBCXX.patch

BuildRequires(pre): mozilla-common-devel
BuildRequires(pre): rpm-build-mozilla.org
BuildRequires(pre): browser-plugins-npapi-devel

# Automatically added by buildreq on Sun Jul 12 2015
# optimized out: alternatives fontconfig fontconfig-devel glib2-devel gstreamer-devel libGL-devel libICE-devel libSM-devel libX11-devel libXext-devel libXrender-devel libatk-devel libcairo-devel libfreetype-devel libgdk-pixbuf libgdk-pixbuf-devel libgio-devel libgst-plugins libpango-devel libstdc++-devel libwayland-client libwayland-server libxml2-devel pkg-config python-base python-devel python-modules python-modules-compiler python-modules-curses python-modules-email python-modules-encodings python-modules-logging python-modules-multiprocessing xorg-kbproto-devel xorg-renderproto-devel xorg-scrnsaverproto-devel xorg-xextproto-devel xorg-xproto-devel
BuildRequires: doxygen gcc-c++ glibc-devel-static gst-plugins-devel imake libXScrnSaver-devel libXt-devel libalsa-devel libgtk+2-devel python-modules-json unzip xorg-cf-files yasm zip

BuildRequires: autoconf_2.13
%set_autoconf_version 2.13

# Protection against fraudulent DigiNotar certificates
Requires: libnss

%description
The %name project is a redesign of Mozilla's  Firefox browser component,
written using the XUL user interface language and designed to be
cross-platform.

%description -l ru_RU.UTF8
Интернет-браузер %name - кроссплатформенная модификация браузера Mozilla Firefox ,
созданная с использованием языка XUL для описания интерфейса пользователя.

%package -n rpm-build-%name
Summary: RPM helper macros to rebuild %name packages
Group: Development/Other
BuildArch: noarch

Requires: mozilla-common-devel
Requires: rpm-build-mozilla.org

%description -n rpm-build-%name
These helper macros provide possibility to rebuild
%name packages by some Alt Linux Team Policy compatible way.

%prep
%setup -n %name-%version -c
cd %name

tar -xf %SOURCE1

#pwd

pushd browser/locales/en-US/
tar -xf %SOURCE2
#pushd searchplugins
#> ./list.txt
#for fil in *.xml
#do
#    bn=`basename $fil .xml`
#    echo $bn >> ./list.txt
#done
#popd
popd


#patch5  -p1
%patch6  -p1
#patch14 -p1
%patch16 -p1
#patch17 -p1
%patch18 -p1
%patch20 -p1

cat >> browser/confvars.sh <<EOF
MOZ_UPDATER=
MOZ_JAVAXPCOM=
MOZ_EXTENSIONS_DEFAULT=' gio'
MOZ_CHROME_FILE_FORMAT=jar
EOF

echo %version > browser/config/version.txt


%__subst s~'$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)'~'$(MOZ_APP_NAME)$(MOZ_APP_VERSION)'~g  ./config/baseconfig.mk
#subst s~'Moonchild Productions'~'Moonchild_Productions'~g  ./build/application.ini
#subst s~'Pale Moon'~'Pale_Moon'~g  ./build/application.ini

%__subst s~'"Moonchild Productions"'~'"Moonchild_Productions"'~g  ./build/application.ini
%__subst s~'"Pale Moon"'~'"Pale_Moon"'~g  ./build/application.ini

cp -f %SOURCE4 .mozconfig


%ifnarch %ix86 x86_64 armh
echo "ac_add_options --disable-methodjit" >> .mozconfig
echo "ac_add_options --disable-monoic" >> .mozconfig
echo "ac_add_options --disable-polyic" >> .mozconfig
echo "ac_add_options --disable-tracejit" >> .mozconfig
%endif

%ifarch %ix86
#ac_add_options --disable-cairo
#echo 'ac_add_options --enable-optimize="-O3 -msse2 -mfpmath=sse"' >> .mozconfig
echo 'ac_add_options --enable-optimize=" -march=i586 -msse2 -mfpmath=sse"' >> .mozconfig
%endif

%build
cd %name

%add_optflags %optflags_shared
%add_findprov_lib_path %palemoon_prefix
export MOZ_BUILD_APP=browser

# Mozilla builds with -Wall with exception of a few warnings which show up
# everywhere in the code; so, don't override that.
#
# Disable C++ exceptions since Mozilla code is not exception-safe
#
MOZ_OPT_FLAGS=$(echo $RPM_OPT_FLAGS | \
                sed -e 's/-Wall//' -e 's/-fexceptions/-fno-exceptions/g')
export CFLAGS="$MOZ_OPT_FLAGS"
export CXXFLAGS="$MOZ_OPT_FLAGS"

# Add fake RPATH
rpath="/$(printf %%s '%palemoon_prefix' |tr '[:print:]' '_')"
export LDFLAGS="$LDFLAGS -Wl,-rpath,$rpath"
export LDFLAGS="-Wl,-rpath,%palemoon_prefix"
#make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"

export PREFIX="%prefix"
export LIBDIR="%_libdir"
export LIBIDL_CONFIG=%_bindir/libIDL-config-2
export srcdir="$PWD"
export SHELL=/bin/sh

%__autoconf
# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel,
# however builds tend to fail on other arches when building in parallel.
MOZ_SMP_FLAGS=-j1
%ifarch %ix86 x86_64
[ "%__nprocs" -ge 2 ] && MOZ_SMP_FLAGS=-j2
[ "%__nprocs" -ge 4 ] && MOZ_SMP_FLAGS=-j4
%endif

make -f client.mk \
	MAKENSISU= \
	STRIP="/bin/true" \
	MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" \
	mozappdir=%buildroot/%palemoon_prefix \
	build

#	MOZ_APP_VERSION="" \

gcc %optflags \
	-Wall -Wextra \
	-DMOZ_PLUGIN_PATH=\"%browser_plugins_path\" \
	-DMOZ_PROGRAM=\"%palemoon_prefix/%name-bin\" \
	%SOURCE7 -o %name

%install
cd %name

echo %palemoon_prefix

mkdir -p \
	%buildroot/%mozilla_arch_extdir/%palemoon_cid \
	%buildroot/%mozilla_noarch_extdir/%palemoon_cid \
	#

#install -d %buildroot%palemoon_prefix

#install -d %buildroot%palemoon_prefix

pushd objdir
#install -d %buildroot%palemoon_prefix/bin
#cp -RfLp  dist/bin/* %buildroot%palemoon_prefix/bin
%makeinstall_std MOZ_APP_VERSION=
popd

rm  -f %buildroot/%_bindir/%name

install  %name  %buildroot/%_bindir/%name

#mv -f %buildroot%palemoon_prefix-%version %buildroot%palemoon_prefix

#cp  %buildroot/%palemoon_prefix/%name-bin  %buildroot%_bindir/%name

# install altlinux-specific configuration
install -D -m 644 %SOURCE8 %buildroot/%palemoon_prefix/browser/defaults/preferences/all-altlinux.js

cat > %buildroot/%palemoon_prefix/browser/defaults/preferences/%name-l10n.js <<EOF
pref("intl.locale.matchOS",		true);
pref("general.useragent.locale",	"chrome://global/locale/intl.properties");
EOF

# icons
for s in 16 22 24 32 48 256; do
	install -D -m 644 \
		browser/branding/official/default$s.png \
		%buildroot/%_iconsdir/hicolor/${s}x${s}/apps/%name.png
done

# install rpm-build-%name
mkdir -p -- \
	%buildroot/%_rpmmacrosdir
sed \
	-e 's,@palemoon_version@,%version,' \
	-e 's,@palemoon_release@,%release,' \
	rpm-build/rpm.macros.%name.standalone > %buildroot/%_rpmmacrosdir/%name

#install -m755 %name %buildroot/%_bindir/%name

cd %buildroot

#sed -i \
#	-e 's,\(MinVersion\)=.*,\1=5.0.1,g' \
#	-e 's,\(MaxVersion\)=.*,\1=5.0.1,g' \
#	./%palemoon_prefix/application.ini

mv -f %buildroot%palemoon_prefix/application.ini %buildroot%palemoon_prefix/browser/application.ini

# install menu file
install -D -m 644 %SOURCE6 ./%_desktopdir/%name.desktop

# Add alternatives
mkdir -p ./%_altdir
printf '%_bindir/xbrowser\t%_bindir/%name\t100\n' >./%_altdir/%name

rm -f -- \
	./%palemoon_prefix/%name \
	./%palemoon_prefix/removed-files

# Remove devel files
rm -rf -- \
	./%_includedir/%name-%version \
	./%_datadir/idl/%name-%version \
	./%_libdir/%name-devel-%version \

#

# Add real RPATH
(set +x
	rpath="/$(printf %%s '%palemoon_prefix' |tr '[:print:]' '_')"

	find \
		%buildroot/%palemoon_prefix \
	-type f |
	while read f; do
		t="$(readlink -ev "$f")"

		file "$t" | fgrep -qs ELF || continue

		if chrpath -l "$t" | fgrep -qs "RPATH=$rpath"; then
			chrpath -r "%palemoon_prefix" "$t"
		fi
	done
)

%pre
for n in defaults browserconfig.properties; do
	[ ! -L "%palemoon_prefix/$n" ] || rm -f "%palemoon_prefix/$n"
done

%files
%_altdir/%name
%_bindir/%name
%dir %palemoon_prefix
%palemoon_prefix/*
%mozilla_arch_extdir/%palemoon_cid
%mozilla_noarch_extdir/%palemoon_cid
%_desktopdir/%name.desktop
%_miconsdir/%name.png
%_iconsdir/hicolor/22x22/apps/%name.png
%_iconsdir/hicolor/24x24/apps/%name.png
%_niconsdir/%name.png
%_liconsdir/%name.png
%_iconsdir/hicolor/256x256/apps/%name.png

%files -n rpm-build-%name
%_rpmmacrosdir/%name

%changelog
* Thu Oct 15 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.7.3.0-alt0.M70T.1.1
- New Version

* Sun Oct 11 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.7.2.rel-alt0.M70T.1.2
- Fix searchplugins

* Mon Oct 05 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.7.2-alt0.M70T.1.1
- Backport to repo t7

* Mon Oct 05 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.7.2-alt1
- New Version

* Sun Aug 30 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.7.0.rel-alt0.M70T.1.1
- New Version

* Fri Jul 31 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.6.0.rel-alt0.M70T.1.1
- New Version

* Wed Jul 15 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.6.0b3-alt0.M70T.1.1
- Buld to branch t7

* Wed Jul 15 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.6.0b3-alt0.M70P.1.1
- New Version

* Mon Jul 13 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.6.0b2-alt0.M70P.1.0.1
- Backport to branch p7

* Thu Jul 09 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.6.0b2-alt0.1
- New Version

* Sun Jun 28 2015 Hihin Ruslan <ruslandh@altlinux.ru> 25.5.01-alt0.1
- initial build for ALT Linux Sisyphus