Thread: [Ndiswrapper-general] improved patch to makefiles
Status: Beta
Brought to you by:
pgiri
From: David K. <dmk...@uc...> - 2005-01-05 23:00:44
Attachments:
ndiswrapper.cvs.DMK.2005-01-05.patch
ndiswrapper.spec
|
Hi, I know this is getting tedious, but it occurred to me that my last patch would not accomodate building rpm's on certain distributions (SuSe I believe). Here is a new and improved version and spec file. Cheers, David -- |
From: John H. <jc...@th...> - 2005-01-06 10:01:21
|
David Kaplan wrote: >I know this is getting tedious, but it occurred to me that my last patch >would not accomodate building rpm's on certain distributions (SuSe I >believe). Here is a new and improved version and spec file. > > I'm sure some of my messages don't make it through :-( On FC3, RHEL4 beta and SLES9 (the platforms I tried), "rpmbuild -E %{_sourcedir}" fails: $ rpmbuild -E %{_sourcedir} /usr/src/packages/SOURCES rpmbuild: no spec files given for build $ echo $? 1 On the other hand, "rpm -E %{_sourcedir}" works on all of those plus RHEL3, FC2, RH9 and SuSE Pro 9.1. It doesn't work on SLES8, but then "rpmbuild" doesn't exist their either and I'm not sure anyone is much interested in SLES8 any more. jch |
From: David K. <dmk...@uc...> - 2005-01-06 16:50:25
|
Hi, > On FC3, RHEL4 beta and SLES9 (the platforms I tried), "rpmbuild -E > %{_sourcedir}" fails: > > $ rpmbuild -E %{_sourcedir} > /usr/src/packages/SOURCES > rpmbuild: no spec files given for build > $ echo $? > 1 > This looks like it did actually work. /usr/src/packages/SOURCES is the sources directory. Did you try: RPM_SOURCE_DIR=`rpmbuild -E %{_sourcedir}` echo $RPM_SOURCE_DIR The variable $? expands to the exit status of the last command. As no spec file was passed to rpmbuild, it exits with 1, but nonetheless it gives the correct source directory (unless the specific spec file you use changes that directory, but that would be highly unusual). > On the other hand, "rpm -E %{_sourcedir}" works on all of those plus > RHEL3, FC2, RH9 and SuSE Pro 9.1. It doesn't work on SLES8, but then > "rpmbuild" doesn't exist their either and I'm not sure anyone is much > interested in SLES8 any more. > rpmbuild must exist and it must be a reasonably modern version I think for this to work. If you find a newer distribution where it definitely fails (i.e. does not spit out the sources directory), then let me know and some default can be given. Cheers, David |
From: David K. <dmk...@uc...> - 2005-01-06 20:46:53
|
Hi, The reason I used rpmbuild instead of rpm is that rpm -E is not a documented feature of rpm (at least not that I know of). I believe that it is left over from the days when rpm and rpmbuild were one and so it might disappear at some point. For our purposes, it doesn't matter too much as I would argue that the rpm target is no longer necessary as rpmbuild -ta ndiswrapper-VERS.tar.gz --define 'ndiswrapper VERS' should work. Another option would be to do something like: RPM_SOURCE_DIR=$(shell rpmbuild -E %{_sourcedir} || : ) this would not produce the error, nor would it warn you if no rpmbuild was present, which could be dangerous if you happen to be running as root. Another option: RPM_SOURCE_DIR=$(shell rpmbuild -E %{_sourcedir} ndiswrapper.spec) This would not fail and is perhaps best. Perhaps you could submit a patch of this sort... Ideally, if we want to keep the rpm makefile target, you would have a configure script which would sort these things out. This is probably better than using $shell inside makefiles. Cheers, David On Thu, 2005-01-06 at 20:27 +0000, John Haxby wrote: > David Kaplan wrote: > > >This looks like it did actually work. /usr/src/packages/SOURCES is the > >sources directory. Did you try: > > > >RPM_SOURCE_DIR=`rpmbuild -E %{_sourcedir}` > >echo $RPM_SOURCE_DIR > > > > > I think the point that I was trying to make -- and failing miserably :-) > -- was that you're relying on a command that's failing with an error to > get you the result you want. Future versions of make might refuse to > accept the output of a failing command or future versions of rpmbuild > might produce the error without doing the eval: in either case a > previous working Makefile will mysteriously stop working. By changing > rpmbuild to rpm in the macro you're insulating yourself against some > future error. Call me paranoid and cynical, but I've been bitten by > this kind of problem too many times. > > jch -- |
From: John H. <jc...@th...> - 2005-01-06 20:54:03
|
David Kaplan wrote: >The reason I used rpmbuild instead of rpm is that rpm -E is not a >documented feature of rpm (at least not that I know of). I believe that >it is left over from the days when rpm and rpmbuild were one and so it >might disappear at some point. For our purposes, it doesn't matter too >much as I would argue that the rpm target is no longer necessary as >rpmbuild -ta ndiswrapper-VERS.tar.gz --define 'ndiswrapper VERS' should >work. > > I'm not entirely sure its a documented option for rpmbuild either -- neither man page on my RHEL4 system mention -E or --eval, although it is shown in the usage strings for both programs. I'll look into a bit more and either do nothing :-) or post a suitable patch. jch |