%global tarballdir UXP-PM%{version}_Release
%global dummy_package   0
%global appname palemoon
%global prettyname Pale Moon Web Browser
%global stackrpms_custom 0

# additional repos to get python27 and devtoolset-7
# for el6 and el7: Software Collection;, for x86_64 only
# http://mirror.centos.org/centos/6/sclo/x86_64/rh/
# http://mirror.centos.org/centos/6/sclo/x86_64/sclo/
# for el6.i386:
# https://copr-be.cloud.fedoraproject.org/results/ewdurbin/pythons-el6/epel-6-$basearch/
# https://copr-be.cloud.fedoraproject.org/results/mlampe/devtoolset-7/epel-6-$basearch/
%define scl_env %{nil}
%define scl_buildreq coreutils
%if 0%{?el6}
   %define scl_buildreq python27, devtoolset-7-toolchain
   %ifarch x86_64
      %define scl_env python27 devtoolset-7
   %endif
   %ifarch i386 || i686 || i586
      %define scl_env devtoolset-7
   %endif
%endif
%if 0%{?el7}
   %define scl_env devtoolset-7
   %define scl_buildreq devtoolset-7-toolchain
%endif

# suppress binary strippping on el6 which fails for some reason
%if 0%{?el6}
   %global __os_install_post %{nil}
%endif

%if 0%{stackrpms_custom}
Name:		palemoon-stackrpms
Summary:	Pale Moon web browser with stackrpms prefs
%global prettyname Pale Moon with stackrpms prefs
%else
Name:    palemoon
Summary:	Pale Moon web browser
%endif
Version:	28.6.0.1
Release:	1

Group:	Networking/Web
License:	MPLv2.0
URL:		http://linux.palemoon.org/
Source0:	https://github.com/MoonchildProductions/UXP/archive/PM%{version}_Release.tar.gz
Source1: palemoon-mozconfig
Source2: palemoon.desktop
Source3: palemoon-mimeinfo.xml
%if 0%{stackrpms_custom}
Source4: bgstack15-palemoon-prefs.js
Patch0: small-icons.patch
Patch1: bgstack15-palemoon.patch
%endif
Patch100: mozilla-1533969-palemoon.patch
Packager:	Bgstack15 <bgstack15@gmail.com>

%if "%{?scl_env}" != ""
BuildRequires: %{scl_buildreq}
%endif
BuildRequires:	alsa-lib-devel
BuildRequires:	autoconf213
BuildRequires:	bzip2-devel
BuildRequires:	dbus-glib-devel
BuildRequires:	desktop-file-utils
BuildRequires:	gcc
BuildRequires:	gcc-c++
BuildRequires:	GConf2-devel
BuildRequires:	glib2-devel
BuildRequires:	gtk2-devel
BuildRequires:	libXt-devel
BuildRequires:	mesa-libGL-devel
BuildRequires:	notification-daemon
BuildRequires:	openssl-devel
BuildRequires:	pkgconfig
BuildRequires:	pkgconfig(gtk+-2.0)
BuildRequires:	pulseaudio-libs-devel
BuildRequires:	sqlite-devel
BuildRequires:	unzip
BuildRequires:	yasm
BuildRequires:	zip
BuildRequires:	zlib-devel
BuildRoot:     %{_tmppath}/%{name}-%{version}
Provides:      mimehandler(application/x-xpinstall)
Provides:      palemoon
Provides:      webclient
%if 0%{stackrpms_custom}
Conflicts:     palemoon
%else
Conflicts:     palemoon-stackrpms
%endif

%description
Pale Moon offers you a browsing experience in a browser completely built
from its own, independently developed source that has been forked off from
Firefox/Mozilla code, with carefully selected features and optimizations to
improve the browser's speed*, resource use, stability and user experience,
while offering full customization and a growing collection of extensions
and themes to make the browser truly your own.

%global debug_package %{nil}
%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')

%prep
%setup -q -n %{tarballdir}
%{__cp} %{SOURCE1} ./.mozconfig
%if 0%{?fedora} >= 30
sed -i -r -e '/enable-optimize/s/"\s*$/ -Wno-format-overflow"/' ./.mozconfig
%endif

%if 0%{stackrpms_custom}
%patch0 -p1
%patch1 -p1
%endif

# Mozilla patches
%patch100 -p0

%build
%if "%{?scl_env}" != ""
   thispwd=$( pwd )
   scl enable %{scl_env} /bin/bash << EOF
   pushd $thispwd
%endif
%if !%{dummy_package}
   ./mach build
%endif
%if "%{?scl_env}" != ""
   popd || :
EOF
%endif

%install
rm -rf %{buildroot}

%if "%{?scl_env}" != ""
   thispwd=$( pwd )
   scl enable %{scl_env} /bin/bash << EOF
   pushd $thispwd
%endif
%if !%{dummy_package}
   make -f client.mk \
      DESTDIR=%{buildroot} \
      idldir=%{_datadir}/idl/%{name} \
      includedir=%{_includedir}/%{name} \
      installdir=%{_libdir}/%{name} \
      sdkdir=%{_libdir}/%{name}-devel \
      install
   rm -rf %{buildroot}%{_datadir}/idl \
      %{buildroot}%{_libdir}/%{name}-devel \
      %{buildroot}%{_includedir} || :
   # remove vestigial duplicate file
   rm -rf %{buildroot}%{_libdir}/%{name}/%{appname}-bin || :
%endif
%if "%{?scl_env}" != ""
   popd || :
EOF
%endif

# cleanup
%{__rm} -rf  %{buildroot}%{_datadir}/idl/%{appname} \
   %{buildroot}%{_includedir}/%{appname} \
   %{buildroot}%{_libdir}/%{appname}-devel

# desktop files
%{__mkdir_p} %{buildroot}%{_datadir}/applications
desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE2}

%{__sed} -i -r -e "s/@NAME@/%{prettyname}/;" \
   -e "s/@EXEC@/%{appname}/;" \
   -e "s/@ICON@/%{appname}/;" \
   %{buildroot}%{_datadir}/applications/%{appname}.desktop

# application start script
# none

# man pages
# none

# mimetypes
%{__install} -Dm0644 %{SOURCE3} \
   %{buildroot}%{_datadir}/mime/packages/%{name}.xml

# icons
%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
for s in 16 22 24 32 48 256 ;
do
   %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
   %{__cp} -p application/%{appname}/branding/official/default${s}.png \
   %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/%{appname}.png
done

# Register as an application to be visible in the software center
# EXPERIMENTAL
mkdir -p %{buildroot}%{_datadir}/appdata
cat > %{buildroot}%{_datadir}/appdata/%{appname}.appdata.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!-- Adapted from content by Richard Hughes <richard-at-hughsie-dot-com> -->
<application>
  <id type="desktop">%{appname}.desktop</id>
  <metadata_license>CC0-1.0</metadata_license>
  <description>
    <p>
       Pale Moon offers you a browsing experience in a browser completely built from its own, independently developed source that has been forked off from Firefox/Mozilla code a number of years ago, with carefully selected features and optimizations to improve the browser stability and user experience, while offering full customization and a growing collection of extensions and themes to make the browser truly your own.
    </p>
  </description>
  <url type="homepage">http://www.palemoon.org/</url>
  <screenshots>
    <screenshot type="default">http://www.palemoon.org/images/screenshots/Win10-start-portal.png</screenshot>
  </screenshots>
  <!-- FIXME: change this to an upstream email address for spec updates
  <updatecontact>someone_who_cares@upstream_project.org</updatecontact>
   -->
</application>
EOF

# Add distribution.ini
# skipped

# filelist lifted straight from https://build.opensuse.org/package/view_file/network/palemoon/palemoon.spec?expand=1
# get a list of files
# $2 - dirlist
# $3 - dir of fileslist
# $4 - excludelist
filelist() {
  filelist=$PWD/$1
  pushd %{buildroot}
    find ./ | while read list; do
      if [ -n "$4" ]; then
        ! echo $list | grep "$4" || continue
      fi
      _file=$(echo $list | sed 's/[^/]//')
      _dir=$(dirname $_file)
      if echo $_dir | grep "$2"; then
        grep -xqs "\%dir\ $_dir" $filelist || echo "%dir $_dir" >> $filelist
      fi
      if echo $_file | grep "$3"; then
        [ -d "$list" ] || echo $_file >> $filelist
      fi
    done
  popd
}

%if 0%{stackrpms_custom}
%{__install} -d %{buildroot}%{_libdir}/%{name}/browser/defaults/preferences/
%{__install} -Dm0644 %{SOURCE4} \
   %{buildroot}%{_libdir}/%{name}/browser/defaults/preferences/
%endif

filelist file.lst %{appname} usr langpack

%clean
%{__rm} -rf %{buildroot} || :

%post
touch --no-create %{_datadir}/icons/hicolor 1>/dev/null 2>&1 || :

%preun
# is it a final removal?
#if test "$1" = "0" ;
#then
#fi   

%postun
if test "$1" = "0" ;
then
   touch --no-create %{_datadir}/icons/hicolor 1>/dev/null 2>&1 || :
fi

%posttrans
update-desktop-database 1>/dev/null 2>&1 & :
gtk-update-icon-cache %{_datadir}/icons/hicolor 1>/dev/null 2>&1 & :
update-mime-database -n ${_datadir}/mime 1>/dev/null 2>&1 & :

%files -f file.lst
%defattr(-,root,root)
%doc AUTHORS LICENSE

%changelog
* Fri Jul  5 2019 B Stack <bgstack15@gmail.com> - 28.6.0.1-1
- update version

* Tue Jul  2 2019 B Stack <bgstack15@gmail.com> - 28.6.0-1
- update version
- improve scriptlets for streamlining

* Tue Jun  4 2019 B Stack <bgstack15@gmail.com> - 28.5.2-1
- update version

* Tue Apr 30 2019 B Stack <bgstack15@gmail.com> - 28.5.0-1
- update version

* Tue Feb 19 2019 B Stack <bgstack15@gmail.com> 28.4.0-1
- update version

* Wed Jan 23 2019 B Stack <bgstack15@gmail.com> 28.3.1-1
- update version

* Tue Jan 15 2019 B Stack <bgstack15@gmail.com> 28.3.0-1
- update version

* Mon Dec 10 2018 B Stack <bgstack15@gmail.com> 28.2.2-1
- update version

* Thu Sep 20 2018 B Stack <bgstack15@gmail.com> 28.1.0-1
- update version

* Thu Sep 13 2018 B Stack <bgstack15@gmail.com> 28.0.1-1
- update version

* Wed Sep 05 2018 B Stack <bgstack15@gmail.com> 28.0.0-1
- rpm spec updated