threads / patch / 18587

patchTwo RPM building improvements

Subject: [PATCH] Two RPM building improvements

## tl;dr

5 messages between Mar 27, 2009 and Mar 27, 2009. Diffs are folded; open one to read it.

replies: 4people: 4as markdown or json

Niels Basjes· Mar 27, 2009, 12:32 UTC · lore
Two RPM building improvements:
  - Building the RPMs can now be done by a non-root user.
  - The additional target all-rpms now builds the RPMs for a multitude of target platforms.
Signed-off-by: Niels Basjes <Niels@Basjes.nl>
---
 .gitignore |    1 +
 Makefile   |   26 ++++++++++++++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)
Show changes to 2 files +25 −2

.gitignore, Makefile

diff --git a/.gitignore b/.gitignore
index 1c57d4c..2f2554b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -173,3 +173,4 @@ configure
 tags
 TAGS
 cscope*
+RPM_BUILDING
diff --git a/Makefile b/Makefile
index 7867eac..d9f5e04 100644
--- a/Makefile
+++ b/Makefile
@@ -1564,7 +1564,29 @@ dist: git.spec git-archive$(X) configure
 	gzip -f -9 $(GIT_TARNAME).tar
 
 rpm: dist
-	$(RPMBUILD) -ta $(GIT_TARNAME).tar.gz
+	-@mkdir -p RPM_BUILDING/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz
+	-@echo ""
+	-@echo "================================================================="
+	-@echo "Generated RPMS and SRPMS:"
+	-@find `pwd`/RPM_BUILDING/ -type f -name '$(distdir)*.rpm' | xargs -n 1 -iXXX echo "- XXX"
+	-@echo "================================================================="
+	-@echo ""
+
+all-rpms: dist
+	-@mkdir -p RPM_BUILDING/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz --target i386
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz --target i686
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz --target x86_64
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz --target ia32
+	$(RPMBUILD) --define="_topdir `pwd`/RPM_BUILDING" -ta $(GIT_TARNAME).tar.gz --target ppc
+	-@echo ""
+	-@echo "================================================================="
+	-@echo "Generated RPMS and SRPMS:"
+	-@find `pwd`/RPM_BUILDING/ -type f -name '$(distdir)*.rpm' | xargs -n 1 -iXXX echo "- XXX"
+	-@echo "================================================================="
+	-@echo ""
+
 
 htmldocs = git-htmldocs-$(GIT_VERSION)
 manpages = git-manpages-$(GIT_VERSION)
@@ -1613,7 +1635,7 @@ ifndef NO_TCLTK
 endif
 	$(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS
 
-.PHONY: all install clean strip
+.PHONY: all install clean strip rpm all-rpms
 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
 .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags cscope .FORCE-GIT-CFLAGS
 .PHONY: .FORCE-GIT-BUILD-OPTIONS
-- 
1.6.2
Jakub Narebski· Mar 27, 2009, 13:50 UTC · re: Niels Basjes · lore

Re: [PATCH] Two RPM building improvements

Niels Basjes <Niels@Basjes.nl> writes:
> Two RPM building improvements:
Two _unrelated_ RPM building improvements squashed in one commit.
>   - Building the RPMs can now be done by a non-root user.

It was always possible, you only have to configure rpm / rpmbuild, namely put path to where you want your RPM_BUILDING directory in ~/.rpmmacros as %_topdir, for example:

  $ cat ~/.rpmmacros
  %_topdir        /home/local/builddir

Please RTFM first, before going to solve non-problem in (ugh) fairly complicated way.

>   - The additional target all-rpms now builds the RPMs for a multitude of target platforms.

Please wrap commit messages at 72-76 columns, at most at 80 columns. No such overly long lines, please.

But the all-rpms target looks like a good idea
-- 
Jakub Narebski
Poland
ShadeHawk on #git
Michael J Gruber· Mar 27, 2009, 14:45 UTC · re: Jakub Narebski · lore

Re: [PATCH] Two RPM building improvements

Jakub Narebski venit, vidit, dixit 27.03.2009 14:50:
Show 17 quoted lines
> Niels Basjes <Niels@Basjes.nl> writes:
> 
>> Two RPM building improvements:
> 
> Two _unrelated_ RPM building improvements squashed in one commit.
> 
>>   - Building the RPMs can now be done by a non-root user.
> 
> It was always possible, you only have to configure rpm / rpmbuild,
> namely put path to where you want your RPM_BUILDING directory in
> ~/.rpmmacros as %_topdir, for example:
> 
>   $ cat ~/.rpmmacros
>   %_topdir        /home/local/builddir
> 
> Please RTFM first, before going to solve non-problem in (ugh) fairly
> complicated way.

Also, the "solution" from the patch overrides any user choice from .rpmmacros, AFAICS.

Show 8 quoted lines
> 
>>   - The additional target all-rpms now builds the RPMs for a multitude of target platforms.
> 
> Please wrap commit messages at 72-76 columns, at most at 80 columns.
> No such overly long lines, please.
> 
> But the all-rpms target looks like a good idea
> 
Junio C Hamano· Mar 27, 2009, 16:20 UTC · re: Jakub Narebski · lore

Re: [PATCH] Two RPM building improvements

Jakub Narebski <jnareb@gmail.com> writes:
Show 17 quoted lines
> Niels Basjes <Niels@Basjes.nl> writes:
>
>> Two RPM building improvements:
>
> Two _unrelated_ RPM building improvements squashed in one commit.
>
>>   - Building the RPMs can now be done by a non-root user.
>
> It was always possible, you only have to configure rpm / rpmbuild,
> namely put path to where you want your RPM_BUILDING directory in
> ~/.rpmmacros as %_topdir, for example:
>
>   $ cat ~/.rpmmacros
>   %_topdir        /home/local/builddir
>
> Please RTFM first, before going to solve non-problem in (ugh) fairly
> complicated way.

That might be a bit too harsh to somebody who genuinely wished to share his improvement with others.

Being RPM novice, the first thing I asked around immediately after taking the maintainership over was the ~/.rpmmacros trick. We really should mention it in _our_ documentation, even just a sentence or two would be sufficient.

Michael J Gruber· Mar 27, 2009, 19:43 UTC · re: Junio C Hamano · lore

Re: [PATCH] Two RPM building improvements

Junio C Hamano venit, vidit, dixit 27.03.2009 17:20:
Show 27 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes:
> 
>> Niels Basjes <Niels@Basjes.nl> writes:
>>
>>> Two RPM building improvements:
>>
>> Two _unrelated_ RPM building improvements squashed in one commit.
>>
>>>   - Building the RPMs can now be done by a non-root user.
>>
>> It was always possible, you only have to configure rpm / rpmbuild,
>> namely put path to where you want your RPM_BUILDING directory in
>> ~/.rpmmacros as %_topdir, for example:
>>
>>   $ cat ~/.rpmmacros
>>   %_topdir        /home/local/builddir
>>
>> Please RTFM first, before going to solve non-problem in (ugh) fairly
>> complicated way.
> 
> That might be a bit too harsh to somebody who genuinely wished to share
> his improvement with others.
> 
> Being RPM novice, the first thing I asked around immediately after taking
> the maintainership over was the ~/.rpmmacros trick.  We really should
> mention it in _our_ documentation, even just a sentence or two would be
> sufficient.

I assumed everyone building rpms would use rpmdev-setuptree from rpmdevtools, but apparently not ;) I'm not sure whether non-Redhat rpm-based distros have that, though.

I'm wondering a bit about the all-rpms target. How does this work without mock? All build requirements installed for all platforms?? I think it really calls for a mock build/vm (unless i386 on x86_64).

Michael

← back to recent threads