Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
""" === Buildroot tag === {{{admon/note|The RPM in Fedora 10 defines a default buildroot so in Fedora 10 and above it is no longer necessary to define a buildroot tag. Fedora < 10 and EPEL 5 or less still need to have the tag.}}}
[Current content remains until EPEL-5 is no longer maintained] """
https://fedoraproject.org/wiki/Phase_out_buildroot_tag_%28draft%29
-Toshio
On Wed, May 20, 2009 at 05:46:18PM -0700, Toshio Kuratomi wrote:
Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
I'd be concerned about accidentally blowing away people's systems if they take a src.rpm from Fedora and try to build it on an older Fedora or non-Fedora system.
%install rm -rf $RPM_BUILD_ROOT ...
%clean rm -rf $RPM_BUILD_ROOT
On 05/20/2009 08:47 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 05:46:18PM -0700, Toshio Kuratomi wrote:
Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
I'd be concerned about accidentally blowing away people's systems if they take a src.rpm from Fedora and try to build it on an older Fedora or non-Fedora system.
%install rm -rf $RPM_BUILD_ROOT ...
%clean rm -rf $RPM_BUILD_ROOT
What will this evaluate to on older systems? Won't it be "rm -rf\n"? Which actually won't remove anything?
-Toshio
On Wed, May 20, 2009 at 11:05:57PM -0700, Toshio Kuratomi wrote:
On 05/20/2009 08:47 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 05:46:18PM -0700, Toshio Kuratomi wrote:
Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
I'd be concerned about accidentally blowing away people's systems if they take a src.rpm from Fedora and try to build it on an older Fedora or non-Fedora system.
%install rm -rf $RPM_BUILD_ROOT ...
%clean rm -rf $RPM_BUILD_ROOT
What will this evaluate to on older systems? Won't it be "rm -rf\n"? Which actually won't remove anything?
Last I knew, it will evaluate to / and all hilarity will ensue. Once upon a time, the recommendation was to use something like this to prevent such disasters:
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
That fell out of favor when the BuildRoot: tag was mandated in Fedora packages. If we remove the BuildRoot: requirement and instead rely upon the new rpmbuild default, we risk obliterating unsuspecting users' systems.
I have a better idea. How about we get rpmbuild to automatically do the moral equivalent of "[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT" internally before starting %install and %clean, and remove all such boilerplate from all Fedora specs. Then we can remove the BuildRoot: requirement as well, and older/non-Fedora systems will just break/pollute/fail to cleanup the build instead of blowing away the users system, a much lesser evil IMO.
On 05/20/2009 11:39 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 11:05:57PM -0700, Toshio Kuratomi wrote:
On 05/20/2009 08:47 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 05:46:18PM -0700, Toshio Kuratomi wrote:
Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
I'd be concerned about accidentally blowing away people's systems if they take a src.rpm from Fedora and try to build it on an older Fedora or non-Fedora system.
%install rm -rf $RPM_BUILD_ROOT ...
%clean rm -rf $RPM_BUILD_ROOT
What will this evaluate to on older systems? Won't it be "rm -rf\n"? Which actually won't remove anything?
Last I knew, it will evaluate to / and all hilarity will ensue. Once upon a time, the recommendation was to use something like this to prevent such disasters:
[ "$RPM_BUILD_ROOT" != "/" ]&& rm -rf $RPM_BUILD_ROOT
That fell out of favor when the BuildRoot: tag was mandated in Fedora packages. If we remove the BuildRoot: requirement and instead rely upon the new rpmbuild default, we risk obliterating unsuspecting users' systems.
I have a better idea. How about we get rpmbuild to automatically do the moral equivalent of "[ "$RPM_BUILD_ROOT" != "/" ]&& rm -rf $RPM_BUILD_ROOT" internally before starting %install and %clean, and remove all such boilerplate from all Fedora specs. Then we can remove the BuildRoot: requirement as well, and older/non-Fedora systems will just break/pollute/fail to cleanup the build instead of blowing away the users system, a much lesser evil IMO.
I thought that Panu posted something about this actually being the case but I can't find it in a quick look at the code in git. Perhaps that was an idea rather than actually coded or perhaps my memory is wrong.
Panu care to weigh in on this ?
-Toshio
On Thu, 21 May 2009, Toshio Kuratomi wrote:
On 05/20/2009 11:39 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 11:05:57PM -0700, Toshio Kuratomi wrote:
On 05/20/2009 08:47 PM, Chuck Anderson wrote:
On Wed, May 20, 2009 at 05:46:18PM -0700, Toshio Kuratomi wrote:
Since the rpm version shipped in Fedora 10 and beyond defines a default buildroot, I think we can start phasing out the current buildroot Guideline. How about adding this to the start of the buildroot tag section?
I'd be concerned about accidentally blowing away people's systems if they take a src.rpm from Fedora and try to build it on an older Fedora or non-Fedora system.
%install rm -rf $RPM_BUILD_ROOT ...
%clean rm -rf $RPM_BUILD_ROOT
What will this evaluate to on older systems? Won't it be "rm -rf\n"? Which actually won't remove anything?
Last I knew, it will evaluate to / and all hilarity will ensue. Once upon a time, the recommendation was to use something like this to prevent such disasters:
[ "$RPM_BUILD_ROOT" != "/" ]&& rm -rf $RPM_BUILD_ROOT
That fell out of favor when the BuildRoot: tag was mandated in Fedora packages. If we remove the BuildRoot: requirement and instead rely upon the new rpmbuild default, we risk obliterating unsuspecting users' systems.
I have a better idea. How about we get rpmbuild to automatically do the moral equivalent of "[ "$RPM_BUILD_ROOT" != "/" ]&& rm -rf $RPM_BUILD_ROOT" internally before starting %install and %clean, and remove all such boilerplate from all Fedora specs. Then we can remove the BuildRoot: requirement as well, and older/non-Fedora systems will just break/pollute/fail to cleanup the build instead of blowing away the users system, a much lesser evil IMO.
I thought that Panu posted something about this actually being the case but I can't find it in a quick look at the code in git. Perhaps that was an idea rather than actually coded or perhaps my memory is wrong.
Lots of ideas get tossed around, many of them get get forgotten before anybody gets around to do anything about them... :-/
Panu care to weigh in on this ?
There are no changes to rpm in this area that I recall. This could be done by just tweaking the build templates in redhat-rpm-config though, something like this in /usr/lib/rpm/redhat/macros:
%__spec_install_pre %{___build_pre}\ [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ %{nil}
This would also force fixing any packages that install stuff from %build. I remember openoffice being that way... hmm ok that was a long time ago, it's been fixed in F-9.
Another possible alternative is what Suse does: remove and create the buildroot at beginning of the entire build (copy-pasted from suse macros):
%__spec_build_pre %{___build_pre}\ %{?buildroot: %__rm -rf "$RPM_BUILD_ROOT"\ %__mkdir_p `dirname "$RPM_BUILD_ROOT"`\ %__mkdir "$RPM_BUILD_ROOT"\ }
- Panu -
Panu Matilainen wrote:
There are no changes to rpm in this area that I recall. This could be done by just tweaking the build templates in redhat-rpm-config though, something like this in /usr/lib/rpm/redhat/macros:
%__spec_install_pre %{___build_pre}\ [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"\ %{nil}
This is very good idea. With remove BuildRoot from spec it is brilliant. AltLinux guidelines prohibit use BuildRoot tag in spec.
Pavel.
packaging@lists.fedoraproject.org