Rename git-core rpm to just git and rename the meta-pacakge to git-all.

This fixes my favorite annoyance with the git rpm packaging: don't pull
in tla when I say yum install git!  You wouldn't expect yum install gcc
to pull in gcc-gfortran, right?

With this change, and blanket 'yum update' will automatically pull in the
new 'git' package and push out the old 'git-core', and if the old 'git'
package was installed 'git-all' will be pulled in instead.  A couple of
things do break though: 'yum update git-core', because yum behaves
differently when given a specific package name - it doesn't follow obsoletes.

Instead, 'yum install git' will pull in the new git rpm, which will then
push out the old 'git-core'.  Similarly, to get the newest version of
the meta package, 'yum install git-all' will install git-all, which then
pushes out the old 'git' meta package.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Kristian Høgsberg
2008-02-18 18:11:21 -05:00
committed by Junio C Hamano
parent 066a5268db
commit 7c33d3a511

View File

@ -3,7 +3,7 @@
Name: git Name: git
Version: @@VERSION@@ Version: @@VERSION@@
Release: 1%{?dist} Release: 1%{?dist}
Summary: Git core and tools Summary: Core git tools
License: GPL License: GPL
Group: Development/Tools Group: Development/Tools
URL: http://kernel.org/pub/software/scm/git/ URL: http://kernel.org/pub/software/scm/git/
@ -11,80 +11,86 @@ Source: http://kernel.org/pub/software/scm/git/%{name}-%{version}.tar.gz
BuildRequires: zlib-devel >= 1.2, openssl-devel, curl-devel, expat-devel, gettext %{!?_without_docs:, xmlto, asciidoc > 6.0.3} BuildRequires: zlib-devel >= 1.2, openssl-devel, curl-devel, expat-devel, gettext %{!?_without_docs:, xmlto, asciidoc > 6.0.3}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: git-core = %{version}-%{release}
Requires: git-svn = %{version}-%{release}
Requires: git-cvs = %{version}-%{release}
Requires: git-arch = %{version}-%{release}
Requires: git-email = %{version}-%{release}
Requires: gitk = %{version}-%{release}
Requires: git-gui = %{version}-%{release}
Requires: perl-Git = %{version}-%{release} Requires: perl-Git = %{version}-%{release}
Requires: zlib >= 1.2, rsync, curl, less, openssh-clients, expat
Provides: git-core = %{version}-%{release}
Obsoletes: git-core <= 1.5.4.2
Obsoletes: git-p4
%description %description
Git is a fast, scalable, distributed revision control system with an Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations unusually rich command set that provides both high-level operations
and full access to internals. and full access to internals.
This is a dummy package which brings in all subpackages. The git rpm installs the core tools with minimal dependencies. To
install all git packages, including tools for integrating with other
SCMs, install the git-all meta-package.
%package core %package all
Summary: Core git tools Summary: Meta-package to pull in all git tools
Group: Development/Tools Group: Development/Tools
Requires: zlib >= 1.2, rsync, curl, less, openssh-clients, expat Requires: git = %{version}-%{release}
Obsoletes: git-p4 Requires: git-svn = %{version}-%{release}
%description core Requires: git-cvs = %{version}-%{release}
Requires: git-arch = %{version}-%{release}
Requires: git-email = %{version}-%{release}
Requires: gitk = %{version}-%{release}
Requires: git-gui = %{version}-%{release}
Obsoletes: git <= 1.5.4.2
%description all
Git is a fast, scalable, distributed revision control system with an Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations unusually rich command set that provides both high-level operations
and full access to internals. and full access to internals.
These are the core tools with minimal dependencies. This is a dummy package which brings in all subpackages.
%package svn %package svn
Summary: Git tools for importing Subversion repositories Summary: Git tools for importing Subversion repositories
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release}, subversion Requires: git = %{version}-%{release}, subversion
%description svn %description svn
Git tools for importing Subversion repositories. Git tools for importing Subversion repositories.
%package cvs %package cvs
Summary: Git tools for importing CVS repositories Summary: Git tools for importing CVS repositories
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release}, cvs, cvsps Requires: git = %{version}-%{release}, cvs, cvsps
%description cvs %description cvs
Git tools for importing CVS repositories. Git tools for importing CVS repositories.
%package arch %package arch
Summary: Git tools for importing Arch repositories Summary: Git tools for importing Arch repositories
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release}, tla Requires: git = %{version}-%{release}, tla
%description arch %description arch
Git tools for importing Arch repositories. Git tools for importing Arch repositories.
%package email %package email
Summary: Git tools for sending email Summary: Git tools for sending email
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release} Requires: git = %{version}-%{release}
%description email %description email
Git tools for sending email. Git tools for sending email.
%package gui %package gui
Summary: Git GUI tool Summary: Git GUI tool
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release}, tk >= 8.4 Requires: git = %{version}-%{release}, tk >= 8.4
%description gui %description gui
Git GUI tool Git GUI tool
%package -n gitk %package -n gitk
Summary: Git revision tree visualiser ('gitk') Summary: Git revision tree visualiser ('gitk')
Group: Development/Tools Group: Development/Tools
Requires: git-core = %{version}-%{release}, tk >= 8.4 Requires: git = %{version}-%{release}, tk >= 8.4
%description -n gitk %description -n gitk
Git revision tree visualiser ('gitk') Git revision tree visualiser ('gitk')
%package -n perl-Git %package -n perl-Git
Summary: Perl interface to Git Summary: Perl interface to Git
Group: Development/Libraries Group: Development/Libraries
Requires: git-core = %{version}-%{release} Requires: git = %{version}-%{release}
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
BuildRequires: perl(Error) BuildRequires: perl(Error)
@ -121,8 +127,12 @@ rm -rf $RPM_BUILD_ROOT%{_mandir}
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%files %files -f bin-man-doc-files
# These are no files in the root package %defattr(-,root,root)
%{_datadir}/git-core/
%doc README COPYING Documentation/*.txt
%{!?_without_docs: %doc Documentation/*.html Documentation/howto}
%{!?_without_docs: %doc Documentation/technical}
%files svn %files svn
%defattr(-,root,root) %defattr(-,root,root)
@ -173,14 +183,13 @@ rm -rf $RPM_BUILD_ROOT
%files -n perl-Git -f perl-files %files -n perl-Git -f perl-files
%defattr(-,root,root) %defattr(-,root,root)
%files core -f bin-man-doc-files %files all
%defattr(-,root,root) # No files for you!
%{_datadir}/git-core/
%doc README COPYING Documentation/*.txt
%{!?_without_docs: %doc Documentation/*.html Documentation/howto}
%{!?_without_docs: %doc Documentation/technical}
%changelog %changelog
* Fri Feb 15 2008 Kristian Høgsberg <krh@redhat.com>
- Rename git-core to just git and rename meta package from git to git-all.
* Sun Feb 03 2008 James Bowes <jbowes@dangerouslyinc.com> * Sun Feb 03 2008 James Bowes <jbowes@dangerouslyinc.com>
- Add a BuildRequires for gettext - Add a BuildRequires for gettext