[git] Rework most spec file dist conditionals

Todd Zullinger tmz at fedoraproject.org
Fri Jul 29 14:21:15 UTC 2011


commit 7e2e90daedd07f9f4820ebfac45bd261b39ecf28
Author: Todd Zullinger <tmz at pobox.com>
Date:   Tue Jul 26 14:12:21 2011 -0400

    Rework most spec file dist conditionals
    
    Over time the spec file had become littered with conditional statements
    to enable, disable, patch, and/or tweak things for various releases.
    Consolidate all these at the top of the spec file to make it easier to
    add future conditions.

 git.spec |  132 ++++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 86 insertions(+), 46 deletions(-)
---
diff --git a/git.spec b/git.spec
index 78d478c..7eabe22 100644
--- a/git.spec
+++ b/git.spec
@@ -1,10 +1,65 @@
 # Pass --without docs to rpmbuild if you don't want the documentation
+
+# Leave git-* binaries in %{_bindir} on EL <= 5
 %if 0%{?rhel} && 0%{?rhel} <= 5
 %global gitcoredir %{_bindir}
 %else
 %global gitcoredir %{_libexecdir}/git-core
 %endif
 
+# Build noarch subpackages and use libcurl-devel on Fedora and EL >= 6
+%if 0%{?fedora} || 0%{?rhel} >= 6
+%global noarch_sub 1
+%global libcurl_devel libcurl-devel
+%else
+%global noarch_sub 0
+%global libcurl_devel curl-devel
+%endif
+
+# Build git-emacs, use perl(Error) and perl(Net::SMTP::SSL), require cvsps, and
+# adjust git-core obsolete version on Fedora and EL >= 5.  (We don't really
+# support EL-4, but folks stuck using it have enough problems, no point making
+# it harder on them.)
+%if 0%{?fedora} || 0%{?rhel} >= 5
+%global emacs_support 1
+%global git_core_version 1.5.4.3
+%global perl_error 1
+%global perl_net_smtp_ssl 1
+%global require_cvsps 1
+%else
+%global emacs_support 0
+%global git_core_version 1.5.4.7-4
+%global perl_error 0
+%global perl_net_smtp_ssl 0
+%global require_cvsps 0
+%endif
+
+# Patch emacs and tweak docbook spaces on EL-5
+%if 0%{?rhel} == 5
+%global emacs_old 1
+%global docbook_suppress_sp 1
+%else
+%global emacs_old 0
+%global docbook_suppress_sp 0
+%endif
+
+# Enable ipv6 for git-daemon and use desktop --vendor option on EL <= 5
+%if 0%{?rhel} && 0%{?rhel} <= 5
+%global enable_ipv6 1
+%global use_desktop_vendor 1
+%else
+%global enable_ipv6 1
+%global use_desktop_vendor 1
+%endif
+
+# Use asciidoc-7 on EL <= 4.  Again, we don't support EL-4, but no need to make
+# it more difficult to build a modern git there.
+%if 0%{?rhel} && 0%{?rhel} <= 4
+%global asciidoc7 1
+%else
+%global asciidoc7 0
+%endif
+
 # Only build git-arch for Fedora < 16, where tla is available
 %if 0%{?fedora} && 0%{?fedora} < 16
 %global arch_support 1
@@ -35,14 +90,10 @@ Patch3:         git-1.7-el5-emacs-support.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires:  desktop-file-utils
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{emacs_support}
 BuildRequires:  emacs
 %endif
-%if 0%{?fedora} || 0%{?rhel} >= 6
-BuildRequires:  libcurl-devel
-%else
-BuildRequires:  curl-devel
-%endif
+BuildRequires:  %{libcurl_devel}
 BuildRequires:  expat-devel
 BuildRequires:  gettext
 BuildRequires:  openssl-devel
@@ -51,7 +102,7 @@ BuildRequires:  zlib-devel >= 1.2
 
 Requires:       less
 Requires:       openssh-clients
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{perl_error}
 Requires:       perl(Error)
 %endif
 Requires:       perl-Git = %{version}-%{release}
@@ -59,13 +110,7 @@ Requires:       rsync
 Requires:       zlib >= 1.2
 
 Provides:       git-core = %{version}-%{release}
-%if 0%{?fedora} || 0%{?rhel} >= 5
-Obsoletes:      git-core <= 1.5.4.3
-%else
-# EL-4 has 1.5.4.7-3.el4.  We don't support this, but no point making it more
-# difficult than it needs to be (folks stuck on EL-4 have it bad enough ;).
-Obsoletes:      git-core <= 1.5.4.7-4
-%endif
+Obsoletes:      git-core <= %{git_core_version}
 
 %description
 Git is a fast, scalable, distributed revision control system with an
@@ -79,7 +124,7 @@ SCMs, install the git-all meta-package.
 %package all
 Summary:        Meta-package to pull in all git tools
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}
@@ -92,16 +137,10 @@ Requires:       git-gui = %{version}-%{release}
 Requires:       git-svn = %{version}-%{release}
 Requires:       gitk = %{version}-%{release}
 Requires:       perl-Git = %{version}-%{release}
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{emacs_support}
 Requires:       emacs-git = %{version}-%{release}
 %endif
-%if 0%{?fedora} || 0%{?rhel} >= 5
-Obsoletes:      git <= 1.5.4.3
-%else
-# EL-4 has 1.5.4.7-3.el4.  We don't support this, but no point making it more
-# difficult than it needs to be (folks stuck on EL-4 have it bad enough ;).
-Obsoletes:      git <= 1.5.4.7-4
-%endif
+Obsoletes:      git <= %{git_core_version}
 
 %description all
 Git is a fast, scalable, distributed revision control system with an
@@ -120,7 +159,7 @@ The git dæmon for supporting git:// access to git repositories
 %package -n gitweb
 Summary:        Simple web interface to git repositories
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}
@@ -132,7 +171,7 @@ Simple web interface to track changes in git repositories
 %package svn
 Summary:        Git tools for importing Subversion repositories
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}, subversion, perl(Term::ReadKey)
@@ -142,11 +181,11 @@ Git tools for importing Subversion repositories.
 %package cvs
 Summary:        Git tools for importing CVS repositories
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}, cvs
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{require_cvsps}
 Requires:       cvsps
 Requires:	perl-DBD-SQLite
 %endif
@@ -166,12 +205,12 @@ Git tools for importing Arch repositories.
 %package email
 Summary:        Git tools for sending email
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}, perl-Git = %{version}-%{release}
 Requires:       perl(Authen::SASL)
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{perl_net_smtp_ssl}
 Requires:       perl(Net::SMTP::SSL)
 %endif
 %description email
@@ -180,7 +219,7 @@ Git tools for sending email.
 %package gui
 Summary:        Git GUI tool
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}, tk >= 8.4
@@ -191,7 +230,7 @@ Git GUI tool.
 %package -n gitk
 Summary:        Git revision tree visualiser
 Group:          Development/Tools
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}, tk >= 8.4
@@ -201,11 +240,11 @@ Git revision tree visualiser.
 %package -n perl-Git
 Summary:        Perl interface to Git
 Group:          Development/Libraries
-%if 0%{?fedora} >= 10 || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       git = %{version}-%{release}
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{perl_error}
 BuildRequires:  perl(Error), perl(ExtUtils::MakeMaker)
 Requires:       perl(Error)
 %endif
@@ -214,12 +253,12 @@ Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $versi
 %description -n perl-Git
 Perl interface to Git.
 
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{emacs_support}
 %package -n emacs-git
 Summary:        Git version control system support for Emacs
 Group:          Applications/Editors
 Requires:       git = %{version}-%{release}
-%if 0%{?fedora} || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 Requires:       emacs(bin) >= %{_emacs_version}
 %else
@@ -232,7 +271,7 @@ Requires:       emacs-common
 %package -n emacs-git-el
 Summary:        Elisp source files for git version control system support for Emacs
 Group:          Applications/Editors
-%if 0%{?fedora} || 0%{?rhel} >= 6
+%if %{noarch_sub}
 BuildArch:      noarch
 %endif
 Requires:       emacs-git = %{version}-%{release}
@@ -246,7 +285,7 @@ Requires:       emacs-git = %{version}-%{release}
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
-%if 0%{?rhel} == 5
+%if %{emacs_old}
 %patch3 -p1
 %endif
 
@@ -267,16 +306,16 @@ prefix = %{_prefix}
 gitwebdir = %{_var}/www/git
 EOF
 
-%if 0%{?rhel} && 0%{?rhel} <= 5
+%if "%{gitcoredir}" == "%{_bindir}"
 echo gitexecdir = %{_bindir} >> config.mak
 %endif
 
-%if 0%{?rhel} && 0%{?rhel} == 5
+%if %{docbook_suppress_sp}
 # This is needed for 1.69.1-1.71.0
 echo DOCBOOK_SUPPRESS_SP = 1 >> config.mak
 %endif
 
-%if 0%{?rhel} && 0%{?rhel} <= 4
+%if %{asciidoc7}
 echo ASCIIDOC7 = 1 >> config.mak
 %endif
 
@@ -294,7 +333,7 @@ chmod +x %{__perl_requires}
 %build
 make %{?_smp_mflags} all %{!?_without_docs: doc}
 
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{emacs_support}
 make -C contrib/emacs
 %endif
 
@@ -305,8 +344,8 @@ sed -i '/^#!bash/,+1 d' contrib/completion/git-completion.bash
 rm -rf %{buildroot}
 make %{?_smp_mflags} INSTALLDIRS=vendor install %{!?_without_docs: install-doc}
 
-%if 0%{?fedora} || 0%{?rhel} >= 5
-%if 0%{?rhel} == 5
+%if %{emacs_support}
+%if %{emacs_old}
 %global _emacs_sitelispdir %{_datadir}/emacs/site-lisp
 %global _emacs_sitestartdir %{_emacs_sitelispdir}/site-start.d
 %endif
@@ -350,7 +389,7 @@ enable_ipv6="        # xinetd does not enable IPv6 by default
 perl -p \
     -e "s|\@GITCOREDIR\@|%{gitcoredir}|g;" \
     -e "s|\@BASE_PATH\@|%{_var}/lib/git|g;" \
-%if 0%{?rhel} && 0%{?rhel} <= 5
+%if %{enable_ipv6}
     -e "s|^}|$enable_ipv6\n$&|;" \
 %endif
     %{SOURCE2} > %{buildroot}%{_sysconfdir}/xinetd.d/git
@@ -368,7 +407,7 @@ popd > /dev/null
 
 # install git-gui .desktop file
 desktop-file-install \
-%if 0%{?rhel} && 0%{?rhel} <= 5
+%if %{use_desktop_vendor}
     --vendor fedora \
 %endif
     --dir=%{buildroot}%{_datadir}/applications %{SOURCE4}
@@ -449,7 +488,7 @@ rm -rf %{buildroot}
 %defattr(-,root,root)
 %{!?_without_docs: %{_mandir}/man3/*Git*.3pm*}
 
-%if 0%{?fedora} || 0%{?rhel} >= 5
+%if %{emacs_support}
 %files -n emacs-git
 %defattr(-,root,root)
 %doc contrib/emacs/README
@@ -485,6 +524,7 @@ rm -rf %{buildroot}
 %changelog
 * Tue Jul 26 2011 Todd Zullinger <tmz at pobox.com> - 1.7.6-4
 - Drop git-arch on fedora >= 16, the tla package has been retired
+- Rework most spec file dist conditionals to make future changes easier
 
 * Thu Jul 21 2011 Petr Sabata <contyk at redhat.com> - 1.7.6-3
 - Perl mass rebuild


More information about the scm-commits mailing list