# [PATCH] Two RPM building improvements

5 messages from 2009-03-27 to 2009-03-27. Participants: Niels Basjes, Jakub Narebski, Michael J Gruber, Junio C Hamano.
Thread: https://gitlist.dev/t/18587

## Niels Basjes, 2009-03-27 12:32

Subject: [PATCH] Two RPM building improvements
Message-ID: <1238157134-27558-1-git-send-email-Niels@Basjes.nl>
URL: https://gitlist.dev/e/1238157134-27558-1-git-send-email-Niels%40Basjes.nl

```
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(-)

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, 2009-03-27 13:50

Subject: Re: [PATCH] Two RPM building improvements
Message-ID: <m3k56b2hy2.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3k56b2hy2.fsf%40localhost.localdomain
In-Reply-To: <1238157134-27558-1-git-send-email-Niels@Basjes.nl>

```
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, 2009-03-27 14:45

Subject: Re: [PATCH] Two RPM building improvements
Message-ID: <49CCE681.5050503@drmicha.warpmail.net>
URL: https://gitlist.dev/e/49CCE681.5050503%40drmicha.warpmail.net
In-Reply-To: <m3k56b2hy2.fsf@localhost.localdomain>

```
Jakub Narebski venit, vidit, dixit 27.03.2009 14:50:
> 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.

> 
>>   - 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, 2009-03-27 16:20

Subject: Re: [PATCH] Two RPM building improvements
Message-ID: <7vvdpvdjj4.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vvdpvdjj4.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <m3k56b2hy2.fsf@localhost.localdomain>

```
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.

```

## Michael J Gruber, 2009-03-27 19:43

Subject: Re: [PATCH] Two RPM building improvements
Message-ID: <49CD2C55.8020502@drmicha.warpmail.net>
URL: https://gitlist.dev/e/49CD2C55.8020502%40drmicha.warpmail.net
In-Reply-To: <7vvdpvdjj4.fsf@gitster.siamese.dyndns.org>

```
Junio C Hamano venit, vidit, dixit 27.03.2009 17:20:
> 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

```
