Re: Need help with making RPM from v2.x.x branch
It appears that the created RPM doesn't include the TLV update that were made to the 2.x.x branch last week. Why wouldn't this be inlcuded in the RPM even though I am building the RPM with the current 2.x.x. source? Thanks. On Wed, May 8, 2013 at 5:42 PM, Divyesh Raithatha divyesh.raitha...@gmail.com wrote: Thanks everyone. Finally got the RPM build to work by doing the following: Version: 2.2.0 in the top of the freeradius.spec file to 2.2.1, and renaming source bz2 file to freeradius-server-2.2.1.tar.**bz2 Along with commenting out patches 2 and 5 #Patch2: freeradius-radtest.patch #Patch5: freeradius-radeapclient-ipv6.patch Changing the README line to README.rst # install doc files omitted by standard install for f in COPYRIGHT CREDITS INSTALL README.rst; do cp $f $RPM_BUILD_ROOT/%{docdir} diff freeradius.spec ~/freeradius-server-2.2.1/redhat/freeradius.spec 3c3 Version: 2.2.0 --- Version: 2.2.1 15c15 Patch2: freeradius-radtest.patch --- #Patch2: freeradius-radtest.patch 18c18 Patch5: freeradius-radeapclient-ipv6.patch --- #Patch5: freeradius-radeapclient-ipv6.patch 152c152 %patch2 -p1 -b .radtest --- #%patch2 -p1 -b .radtest 155c155 %patch5 -p1 -b .radeapclient-ipv6 --- #%patch5 -p1 -b .radeapclient-ipv6 239c239 for f in COPYRIGHT CREDITS INSTALL README; do --- for f in COPYRIGHT CREDITS INSTALL README.rst; do By commenting out patch 2 and patch 5 what am I missing, if anything? On Wed, May 8, 2013 at 8:20 AM, John Dennis jden...@redhat.com wrote: On 05/08/2013 03:19 AM, Fajar A. Nugraha wrote: On Wed, May 8, 2013 at 1:50 PM, Raithatha, Divyesh divyesh.raitha...@gmail.com wrote: Thanks, I got past the README but now I am getting the following file not found errors. They do exist, however, it looks like the build is looking for version 2.2.0 of the library files yet they are listed as 2.2.1. error: File not found: /home/test/rpmbuild/BUILDROOT/** freeradius-2.2.0-1.el6.x86_64/**etc/raddb/certs/README.rst That's kinda tricky. Look at %files section in the spec file. The cleanest solution right now would probably be changing Version: 2.2.0 in the top of the make file to 2.2.1, AND rename your source bz2 file to freeradius-server-2.2.1.tar.**bz2. The version macro in the spec file, the version embedded in tar file name, and the contents of tar file all *MUST* match. You have to be precise with what version you're building. I assumed that was obvious as opposed to being tricky ;-) Another way would be changing the files section, from (e.g.) %{_libdir}/freeradius/rlm_**acct_unique-%{version}.so to %{_libdir}/freeradius/rlm_**acct_unique-*.so ... or even try deleting all rlm_* lines and replace them with a one-liner %{_libdir}/freeradius/rlm_*.**so* -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/** list/users.html http://www.freeradius.org/list/users.html - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On 05/10/2013 12:05 PM, Divyesh Raithatha wrote: It appears that the created RPM doesn't include the TLV update that were made to the 2.x.x branch last week. Why wouldn't this be inlcuded in the RPM even though I am building the RPM with the current 2.x.x. source? Use the source Luke :-) I assume you built from git, therefore you've got every piece of information you need to figure this out. git log will give you exact information. -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
Thanks, I got past the README but now I am getting the following file not found errors. They do exist, however, it looks like the build is looking for version 2.2.0 of the library files yet they are listed as 2.2.1. error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/etc/raddb/certs/README.rst error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_acct_unique-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_acctlog-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_always-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_attr_filter-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_attr_rewrite-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_cache-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_chap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_checkval-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_copy_packet-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_counter-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_dbm-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_detail-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_digest-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_dynamic_clients-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_gtc-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_leap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_md5-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_mschapv2-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_peap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_sim-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_tls-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_eap_ttls-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_exec-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_expiration-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_expr-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_fastusers-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_files-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_ippool-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_linelog-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_logintime-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_mschap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_otp-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_pam-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_pap-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_passwd-2.2.0.so error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/usr/lib64/freeradius/rlm_policy-2.2.0.so
Re: Need help with making RPM from v2.x.x branch
On Wed, May 8, 2013 at 1:50 PM, Raithatha, Divyesh divyesh.raitha...@gmail.com wrote: Thanks, I got past the README but now I am getting the following file not found errors. They do exist, however, it looks like the build is looking for version 2.2.0 of the library files yet they are listed as 2.2.1. error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/etc/raddb/certs/README.rst That's kinda tricky. Look at %files section in the spec file. The cleanest solution right now would probably be changing Version: 2.2.0 in the top of the make file to 2.2.1, AND rename your source bz2 file to freeradius-server-2.2.1.tar.bz2. Another way would be changing the files section, from (e.g.) %{_libdir}/freeradius/rlm_acct_unique-%{version}.so to %{_libdir}/freeradius/rlm_acct_unique-*.so ... or even try deleting all rlm_* lines and replace them with a one-liner %{_libdir}/freeradius/rlm_*.so* -- Fajar - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On 05/08/2013 08:19 AM, Fajar A. Nugraha wrote: %{_libdir}/freeradius/rlm_acct_unique-*.so FWIW this is the approach we usually take when packaging things; it seems pointless to me to embed version numbers into %files macros. I'm aware this is probably frowned on by some packaging guidelines, but it works well for us ;o) - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On 05/08/2013 03:19 AM, Fajar A. Nugraha wrote: On Wed, May 8, 2013 at 1:50 PM, Raithatha, Divyesh divyesh.raitha...@gmail.com wrote: Thanks, I got past the README but now I am getting the following file not found errors. They do exist, however, it looks like the build is looking for version 2.2.0 of the library files yet they are listed as 2.2.1. error: File not found: /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/etc/raddb/certs/README.rst That's kinda tricky. Look at %files section in the spec file. The cleanest solution right now would probably be changing Version: 2.2.0 in the top of the make file to 2.2.1, AND rename your source bz2 file to freeradius-server-2.2.1.tar.bz2. The version macro in the spec file, the version embedded in tar file name, and the contents of tar file all *MUST* match. You have to be precise with what version you're building. I assumed that was obvious as opposed to being tricky ;-) Another way would be changing the files section, from (e.g.) %{_libdir}/freeradius/rlm_acct_unique-%{version}.so to %{_libdir}/freeradius/rlm_acct_unique-*.so ... or even try deleting all rlm_* lines and replace them with a one-liner %{_libdir}/freeradius/rlm_*.so* -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
Thanks everyone. Finally got the RPM build to work by doing the following: Version: 2.2.0 in the top of the freeradius.spec file to 2.2.1, and renaming source bz2 file to freeradius-server-2.2.1.tar.**bz2 Along with commenting out patches 2 and 5 #Patch2: freeradius-radtest.patch #Patch5: freeradius-radeapclient-ipv6.patch Changing the README line to README.rst # install doc files omitted by standard install for f in COPYRIGHT CREDITS INSTALL README.rst; do cp $f $RPM_BUILD_ROOT/%{docdir} diff freeradius.spec ~/freeradius-server-2.2.1/redhat/freeradius.spec 3c3 Version: 2.2.0 --- Version: 2.2.1 15c15 Patch2: freeradius-radtest.patch --- #Patch2: freeradius-radtest.patch 18c18 Patch5: freeradius-radeapclient-ipv6.patch --- #Patch5: freeradius-radeapclient-ipv6.patch 152c152 %patch2 -p1 -b .radtest --- #%patch2 -p1 -b .radtest 155c155 %patch5 -p1 -b .radeapclient-ipv6 --- #%patch5 -p1 -b .radeapclient-ipv6 239c239 for f in COPYRIGHT CREDITS INSTALL README; do --- for f in COPYRIGHT CREDITS INSTALL README.rst; do By commenting out patch 2 and patch 5 what am I missing, if anything? On Wed, May 8, 2013 at 8:20 AM, John Dennis jden...@redhat.com wrote: On 05/08/2013 03:19 AM, Fajar A. Nugraha wrote: On Wed, May 8, 2013 at 1:50 PM, Raithatha, Divyesh divyesh.raitha...@gmail.com wrote: Thanks, I got past the README but now I am getting the following file not found errors. They do exist, however, it looks like the build is looking for version 2.2.0 of the library files yet they are listed as 2.2.1. error: File not found: /home/test/rpmbuild/BUILDROOT/** freeradius-2.2.0-1.el6.x86_64/**etc/raddb/certs/README.rst That's kinda tricky. Look at %files section in the spec file. The cleanest solution right now would probably be changing Version: 2.2.0 in the top of the make file to 2.2.1, AND rename your source bz2 file to freeradius-server-2.2.1.tar.**bz2. The version macro in the spec file, the version embedded in tar file name, and the contents of tar file all *MUST* match. You have to be precise with what version you're building. I assumed that was obvious as opposed to being tricky ;-) Another way would be changing the files section, from (e.g.) %{_libdir}/freeradius/rlm_**acct_unique-%{version}.so to %{_libdir}/freeradius/rlm_**acct_unique-*.so ... or even try deleting all rlm_* lines and replace them with a one-liner %{_libdir}/freeradius/rlm_*.**so* -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/** list/users.html http://www.freeradius.org/list/users.html - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On Tue, May 7, 2013 at 3:35 AM, Divyesh Raithatha divyesh.raitha...@gmail.com wrote: to get past the patch error messages but I get another error below: + cp README /home/divtest/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64//usr/share/doc/freeradius-2.2.0 Look at the spec file, change cp README /home/divtest/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64//usr/share/doc/freeradius-2.2.0 to cp README.rst /home/divtest/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64//usr/share/doc/freeradius-2.2.0 ... and look near %files, change README to README.rst there as well. -- Fajar - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On Tue, May 7, 2013 at 4:28 AM, John Dennis jden...@redhat.com wrote: These project maintained build configurations are best thought of as bleeding edge developer stuff. Make some change and you want to test on Fedora or Debian and need packages, then these build directories are the goto place, Or for those cases where a distribution has not caught up with upstream yet, then this can serve a useful purpose as well (as long as they stay generic, see below), another variant of the this is only for the latest and greatest. You've pretty much covered it. My suggestion is for upstream FreeRADIUS to maintain a generic Red Hat RPM spec file which is vanilla as possible without any patches whatsoever. In theory current upstream shouldn't need patches. Also any customization we might do really should come from us, not upstream. If one is building an RPM from the current FreeRADIUS version using the FreeRADIUS RPM spec file then one should get a vanilla FreeRADIUS build whose only customization extends to assuring the same file locations, package names, etc. are used. You pretty much get this for free. I would take an existing spec file strip out all the patches, changelog, etc. and then one only needs to take a look at the options passed to configure (I'm thinking about options which control which modules are built). IMHO some of it (e.g. changelog, patches for cert config) is/was necessary. My use case was that I wanted the build to be as much drop-in as possible, so I can (for example) upgrade to 2.2.1 as soon as possible when it comes out, but switch to Red Hat's official RPM when it's available, without having to change my config. Without some of the patches, I'd need to modify my config file as well. Would we like to maintain the ./redhat subdirectory? No, for two reasons. 1. It's impossible, as pointed out above there is no single spec file, each spec file is tied to a specific release. We maintain *independent* spec files for *every* distribution version we support, at the moment that numbers in the dozens :-( Yeah. Before 2.2.0 was out, I made sure that I can build RPMs for RHEL5 and 6 (because that's what I use), and submit the necessary changes upstream. It seems to be enough (i.e. those two versions made up for most who need to build a Red Hat RPM), because IIRC there hasn't been a mail to the list about I need to build FR 2.2.0 RPM for X flavor or Red Hat but the included spec file doesn't work. 2. We already maintain them and they are publicly available for anyone to download. Trying to maintain multiple copies in multiple repositories and assuring they all stay in sync doesn't seem justified. Thanks for the effort. If no one else does this first, I'd probably submit patches to make FR debs and RPMs build cleanly before 2.2.1 is out (need to dig out my lxc templates first). That way at least people can build packages for released version. -- Fajar - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
John Dennis wrote: Why does FreeRADIUS maintain build configurations for Red Hat and Debian? Part historical reasons. RPMs were difficult to find, and it was easier to include RPM scripts in the server. It also means it's easy for people to build custom RPMs. They can use an established spec distributed with the server. They don't have to search for spec files. I can't speak for Debian, I'm not a Deb package maintainer, but at least in the Red Hat world there isn't just one Red Hat distribution, there are many and each can have different build requirements build configurations. Yes. The files distributed with the server should create *a* package. Not *the* canonical package. It will work, and will follow your system packaging method. But it won't be identical to an upstream package. Another problem is the spec file under ./redhat is forever getting out of sync (as evidenced by the OP). Patch sets are a superb example of this (compounded by the problem there is no single rpm spec file for all Red Hat versions). For our purposes, there doesn't need to be. My suggestion is for upstream FreeRADIUS to maintain a generic Red Hat RPM spec file which is vanilla as possible without any patches whatsoever. In theory current upstream shouldn't need patches. Also any customization we might do really should come from us, not upstream. If one is building an RPM from the current FreeRADIUS version using the FreeRADIUS RPM spec file then one should get a vanilla FreeRADIUS build whose only customization extends to assuring the same file locations, package names, etc. are used. You pretty much get this for free. I would take an existing spec file strip out all the patches, changelog, etc. and then one only needs to take a look at the options passed to configure (I'm thinking about options which control which modules are built). That's pretty much the goal, yes. The generic RPM spec file that upstream maintains should be exercised on regular basis. Far too often we've seen upstream changes that required spec file changes but which were never done (e.g. add/removing modules and/or other files). I have a redhat VM around somewhere... Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On 05/07/2013 04:46 AM, Fajar A. Nugraha wrote: On Tue, May 7, 2013 at 4:28 AM, John Dennis jden...@redhat.com mailto:jden...@redhat.com wrote: These project maintained build configurations are best thought of as bleeding edge developer stuff. Make some change and you want to test on Fedora or Debian and need packages, then these build directories are the goto place, Or for those cases where a distribution has not caught up with upstream yet, then this can serve a useful purpose as well (as long as they stay generic, see below), another variant of the this is only for the latest and greatest. You've pretty much covered it. My suggestion is for upstream FreeRADIUS to maintain a generic Red Hat RPM spec file which is vanilla as possible without any patches whatsoever. In theory current upstream shouldn't need patches. Also any customization we might do really should come from us, not upstream. If one is building an RPM from the current FreeRADIUS version using the FreeRADIUS RPM spec file then one should get a vanilla FreeRADIUS build whose only customization extends to assuring the same file locations, package names, etc. are used. You pretty much get this for free. I would take an existing spec file strip out all the patches, changelog, etc. and then one only needs to take a look at the options passed to configure (I'm thinking about options which control which modules are built). IMHO some of it (e.g. changelog, patches for cert config) is/was necessary. Yes, this is sensible. My suggestion was mostly aimed at simplifying the task with the hope it would then be more robust and easier to maintain. My use case was that I wanted the build to be as much drop-in as possible, so I can (for example) upgrade to 2.2.1 as soon as possible when it comes out, but switch to Red Hat's official RPM when it's available, without having to change my config. Without some of the patches, I'd need to modify my config file as well. I think the only thing of consequence we customize is the bootstrap cert creation which is done via RPM during the install step (plus tweaking some of the cert parameters to tighten up security). Any other patches are bug fixes found either by our QA team or customers. Those are usually break down into one of two categories. Fixes upstream has made post release and we've 'backported' or fixes we've made and have submitted to the project. The lifetime of these patches is short because in almost every instance the next upstream release has addressed the issue. Kudos to the team for that. So my thought was if you didn't try to mirror that patch set it would be much easier and little would be lost. Would we like to maintain the ./redhat subdirectory? No, for two reasons. 1. It's impossible, as pointed out above there is no single spec file, each spec file is tied to a specific release. We maintain *independent* spec files for *every* distribution version we support, at the moment that numbers in the dozens :-( Yeah. Before 2.2.0 was out, I made sure that I can build RPMs for RHEL5 and 6 (because that's what I use), and submit the necessary changes upstream. It seems to be enough (i.e. those two versions made up for most who need to build a Red Hat RPM), because IIRC there hasn't been a mail to the list about I need to build FR 2.2.0 RPM for X flavor or Red Hat but the included spec file doesn't work. Currently the biggest pain point is the transition from SysV initscripts to systemd. How daemons are installed and configured is different between Fedora and RHEL at the moment and because systemd is still in a bit of flux things can be different even between Fedora releases. Differences in BuildRequires occur less often, but do occur. There is a everlasting debate as to whether it's best to maintain one spec file thats common across distributions and parameterize so that it behaves differently in different targets or whether it's best to maintain completely different spec files and merge changes across them. Those who argue for merging cite the complexity of parameterized spec files complaining all that conditional logic is difficult to work with and fragile making it difficult to maintain. Those who argue for parameterizing cite how merging is fragile and is difficult to maintain. So obviously there isn't one right way. But because we're so constrained as to what can appear in RHEL (every change has to have numerous approvals) I gave up on trying to use Fedora spec files in RHEL and instead merge the leading edge Fedora into RHEL. 2. We already maintain them and they are publicly available for anyone to download. Trying to maintain multiple copies in multiple repositories and assuring they all stay in sync doesn't seem justified. Thanks for the effort. If no one else does this first, I'd probably submit patches to make FR
Need help with making RPM from v2.x.x branch
Hello all, has anyone had success in building an RPM from the v2.x.x branch from http://git.freeradius.org? I am following the information from http://wiki.freeradius.org/guide/Red-Hat-FAQ On a CentOS 6.4 x64 system I was able to build an RPM from 2.2.0 source successfully but I want to get all of the recent patches from the v2.x.x branch. However, when I tried to build the RPM from v2.x.x I get the following message: Hunk #1 FAILED at 121. 1 out of 1 hunk FAILED -- saving rejects to file src/main/radtest.in.rej error: Bad exit status from /var/tmp/rpm-tmp.uETav5 (%prep) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.uETav5 (%prep) Here is the radtest.in.rej file contents: --- src/main/radtest.in 2011-09-30 10:12:07.0 -0400 +++ src/main/radtest.in 2012-01-05 15:51:56.877585514 -0500 @@ -121,7 +121,7 @@ echo EAP-Code = Response echo EAP-Type-Identity = \$1\ fi - if [ $6 ] + if [ ! -z $6 ] [[ $6 =~ ^[0-9]+$ ]] [ $6 -gt 0 ] then echo Framed-Protocol = PPP fi Here is the contents of /var/tmp/rpm-tmp.uETav5 #!/bin/sh RPM_SOURCE_DIR=/home/test/rpmbuild/SOURCES RPM_BUILD_DIR=/home/test/rpmbuild/BUILD RPM_OPT_FLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic RPM_ARCH=x86_64 RPM_OS=linux export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR=/usr/share/doc export RPM_DOC_DIR RPM_PACKAGE_NAME=freeradius RPM_PACKAGE_VERSION=2.2.0 RPM_PACKAGE_RELEASE=1.el6 export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE LANG=C export LANG unset CDPATH DISPLAY ||: RPM_BUILD_ROOT=/home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64 export RPM_BUILD_ROOT PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig export PKG_CONFIG_PATH set -x umask 022 cd /home/test/rpmbuild/BUILD LANG=C export LANG unset DISPLAY cd '/home/test/rpmbuild/BUILD' rm -rf 'freeradius-server-2.2.0' /usr/bin/bzip2 -dc '/home/test/rpmbuild/SOURCES/freeradius-server-2.2.0.tar.bz2' | /bin/tar -xf - STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'freeradius-server-2.2.0' /bin/chmod -Rf a+rX,u+w,g-w,o-w . echo Patch #1 (freeradius-cert-config.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-cert-config.patch | /usr/bin/patch -p1 -b --suffix .cert-config --fuzz=0 echo Patch #2 (freeradius-radtest.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-radtest.patch | /usr/bin/patch -p1 -b --suffix .radtest --fuzz=0 #%patch3 -p1 -b .man #%patch4 -p1 -b .unix-passwd-expire echo Patch #5 (freeradius-radeapclient-ipv6.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-radeapclient-ipv6.patch | /usr/bin/patch -p1 -b --suffix .radeapclient-ipv6 --fuzz=0 #%patch6 -p1 #%patch7 -p1 -b perl echo Patch #8 (freeradius-dhcp_sqlippool.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-dhcp_sqlippool.patch | /usr/bin/patch -p1 --fuzz=0 # Some source files mistakenly have execute permissions set find $RPM_BUILD_DIR/freeradius-server-2.2.0 \( -name '*.c' -o -name '*.h' \) -a -perm /0111 -exec chmod a-x {} + exit 0 Any Ideas? Thank you. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
On 05/06/2013 02:57 PM, Divyesh Raithatha wrote: Hello all, has anyone had success in building an RPM from the v2.x.x branch from http://git.freeradius.org? I am following the information from http://wiki.freeradius.org/guide/Red-Hat-FAQ On a CentOS 6.4 x64 system I was able to build an RPM from 2.2.0 source successfully but I want to get all of the recent patches from the v2.x.x branch. However, when I tried to build the RPM from v2.x.x I get the following message: Hunk #1 FAILED at 121. 1 out of 1 hunk FAILED -- saving rejects to file src/main/radtest.in.rej error: Bad exit status from /var/tmp/rpm-tmp.uETav5 (%prep) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.uETav5 (%prep) Here is the radtest.in.rej file contents: --- src/main/radtest.in http://radtest.in 2011-09-30 10:12:07.0 -0400 +++ src/main/radtest.in http://radtest.in 2012-01-05 15:51:56.877585514 -0500 @@ -121,7 +121,7 @@ echo EAP-Code = Response echo EAP-Type-Identity = \$1\ fi - if [ $6 ] + if [ ! -z $6 ] [[ $6 =~ ^[0-9]+$ ]] [ $6 -gt 0 ] then echo Framed-Protocol = PPP fi Here is the contents of /var/tmp/rpm-tmp.uETav5 #!/bin/sh RPM_SOURCE_DIR=/home/test/rpmbuild/SOURCES RPM_BUILD_DIR=/home/test/rpmbuild/BUILD RPM_OPT_FLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic RPM_ARCH=x86_64 RPM_OS=linux export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR=/usr/share/doc export RPM_DOC_DIR RPM_PACKAGE_NAME=freeradius RPM_PACKAGE_VERSION=2.2.0 RPM_PACKAGE_RELEASE=1.el6 export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE LANG=C export LANG unset CDPATH DISPLAY ||: RPM_BUILD_ROOT=/home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64 export RPM_BUILD_ROOT PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig export PKG_CONFIG_PATH set -x umask 022 cd /home/test/rpmbuild/BUILD LANG=C export LANG unset DISPLAY cd '/home/test/rpmbuild/BUILD' rm -rf 'freeradius-server-2.2.0' /usr/bin/bzip2 -dc '/home/test/rpmbuild/SOURCES/freeradius-server-2.2.0.tar.bz2' | /bin/tar -xf - STATUS=$? if [ $STATUS -ne 0 ]; then exit $STATUS fi cd 'freeradius-server-2.2.0' /bin/chmod -Rf a+rX,u+w,g-w,o-w . echo Patch #1 (freeradius-cert-config.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-cert-config.patch | /usr/bin/patch -p1 -b --suffix .cert-config --fuzz=0 echo Patch #2 (freeradius-radtest.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-radtest.patch | /usr/bin/patch -p1 -b --suffix .radtest --fuzz=0 #%patch3 -p1 -b .man #%patch4 -p1 -b .unix-passwd-expire echo Patch #5 (freeradius-radeapclient-ipv6.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-radeapclient-ipv6.patch | /usr/bin/patch -p1 -b --suffix .radeapclient-ipv6 --fuzz=0 #%patch6 -p1 #%patch7 -p1 -b perl echo Patch #8 (freeradius-dhcp_sqlippool.patch): /bin/cat /home/test/rpmbuild/SOURCES/freeradius-dhcp_sqlippool.patch | /usr/bin/patch -p1 --fuzz=0 # Some source files mistakenly have execute permissions set find $RPM_BUILD_DIR/freeradius-server-2.2.0 \( -name '*.c' -o -name '*.h' \) -a -perm /0111 -exec chmod a-x {} + exit 0 Any Ideas? The patch set is targeted at a *specific* freeradius version. You're trying to apply patches from one version against another version. Sometimes that works, sometimes it doesn't. A patch may not succeed for several reasons, the code may have shifted position in the file (fuzz 0), RPM disallows this because it's evidence of not keeping the spec file current against the version being built. You can override this with %global _default_patch_fuzz 2 at the top of the spec file (2 in this case is an old default before it was changed to 0). Overriding the patch fuzz factor is not recommended, instead it's recommended you fix the patch to make it 100% correct for the current version. Another reason a patch might not succeed is because the problem was already reported upstream and upstream fixed it. If they took the patch verbatim then the error you'll see is something akin to Previously applied patch or reverse patch. If upstream fixed the issue in some other way the patch simply won't apply. Figuring exactly which lines of code changed and why is the work of a package maintainer. In this case you're assuming that role and you'll have to do that work. -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
Divyesh Raithatha wrote: Hello all, has anyone had success in building an RPM from the v2.x.x branch from http://git.freeradius.org? That should work I am following the information from http://wiki.freeradius.org/guide/Red-Hat-FAQ On a CentOS 6.4 x64 system I was able to build an RPM from 2.2.0 source successfully but I want to get all of the recent patches from the v2.x.x branch. Go to redhat/freeradius.spec, and delete the following line: Patch2: freeradius-radtest.patch That should cause it to build. Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
Re: Need help with making RPM from v2.x.x branch
Thanks Alan, I had to comment out both Patch 2 and 5 sections #%patch2 -p1 -b .radtest #%patch5 -p1 -b .radeapclient-ipv6 to get past the patch error messages but I get another error below: + cp README /home/divtest/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64//usr/share/doc/freeradius-2.2.0 cp: cannot stat `README': No such file or directory error: Bad exit status from /var/tmp/rpm-tmp.wG9x7h (%install) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.wG9x7h (%install) Here are the contents of the temp file: cat /var/tmp/rpm-tmp.wG9x7h #!/bin/sh RPM_SOURCE_DIR=/home/test/rpmbuild/SOURCES RPM_BUILD_DIR=/home/test/rpmbuild/BUILD RPM_OPT_FLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic RPM_ARCH=x86_64 RPM_OS=linux export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR=/usr/share/doc export RPM_DOC_DIR RPM_PACKAGE_NAME=freeradius RPM_PACKAGE_VERSION=2.2.0 RPM_PACKAGE_RELEASE=1.el6 export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE LANG=C export LANG unset CDPATH DISPLAY ||: RPM_BUILD_ROOT=/home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64 export RPM_BUILD_ROOT PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig export PKG_CONFIG_PATH set -x umask 022 cd /home/test/rpmbuild/BUILD [ $RPM_BUILD_ROOT != / ] rm -rf ${RPM_BUILD_ROOT} mkdir -p `dirname $RPM_BUILD_ROOT` mkdir $RPM_BUILD_ROOT cd 'freeradius-server-2.2.0' LANG=C export LANG unset DISPLAY mkdir -p $RPM_BUILD_ROOT//var/lib/radiusd # fix for bad libtool bug - can not rebuild dependent libs and bins #FIXME export LD_LIBRARY_PATH=$RPM_BUILD_ROOT//usr/lib64 make install R=$RPM_BUILD_ROOT # modify default configuration RADDB=$RPM_BUILD_ROOT/etc/raddb perl -i -pe 's/^#user =.*$/user = radiusd/' $RADDB/radiusd.conf perl -i -pe 's/^#group =.*$/group = radiusd/' $RADDB/radiusd.conf # logs mkdir -p $RPM_BUILD_ROOT/var/log/radius/radacct touch $RPM_BUILD_ROOT/var/log/radius/{radutmp,radius.log} install -D -m 755 /home/test/rpmbuild/SOURCES/freeradius-radiusd-init $RPM_BUILD_ROOT//etc/rc.d/init.d/radiusd install -D -m 644 /home/test/rpmbuild/SOURCES/freeradius-logrotate $RPM_BUILD_ROOT//etc/logrotate.d/radiusd install -D -m 644 /home/test/rpmbuild/SOURCES/freeradius-pam-conf $RPM_BUILD_ROOT//etc/pam.d/radiusd mkdir -p /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/var/run/ install -d -m 0710 /home/test/rpmbuild/BUILDROOT/freeradius-2.2.0-1.el6.x86_64/var/run/radiusd/ # remove unneeded stuff rm -rf doc/00-OLD rm -f $RPM_BUILD_ROOT/usr/sbin/rc.radiusd rm -rf $RPM_BUILD_ROOT//usr/lib64/freeradius/*.a rm -rf $RPM_BUILD_ROOT//usr/lib64/freeradius/*.la rm -rf $RPM_BUILD_ROOT//etc/raddb/sql/mssql rm -rf $RPM_BUILD_ROOT//etc/raddb/sql/oracle rm -rf $RPM_BUILD_ROOT//usr/share/dialup_admin/sql/oracle rm -rf $RPM_BUILD_ROOT//usr/share/dialup_admin/lib/sql/oracle rm -rf $RPM_BUILD_ROOT//usr/share/dialup_admin/lib/sql/drivers/oracle # remove header files, we don't ship a devel package and the # headers have multilib conflicts rm -rf $RPM_BUILD_ROOT//usr/include # remove unsupported config files rm -f $RPM_BUILD_ROOT//etc/raddb/experimental.conf # install doc files omitted by standard install for f in COPYRIGHT CREDITS INSTALL README; do cp $f $RPM_BUILD_ROOT//usr/share/doc/freeradius-2.2.0 done cp LICENSE $RPM_BUILD_ROOT//usr/share/doc/freeradius-2.2.0/LICENSE.gpl cp src/lib/LICENSE $RPM_BUILD_ROOT//usr/share/doc/freeradius-2.2.0/LICENSE.lgpl cp src/LICENSE.openssl $RPM_BUILD_ROOT//usr/share/doc/freeradius-2.2.0/LICENSE.openssl # add Red Hat specific documentation cat $RPM_BUILD_ROOT//usr/share/doc/freeradius-2.2.0/REDHAT EOF Red Hat, RHEL, Fedora, and CentOS specific information can be found on the FreeRADIUS Wiki in the Red Hat FAQ. http://wiki.freeradius.org/guide/Red_Hat_FAQ Please reference that document. EOF # Make sure our user/group is present prior to any package or subpackage installation /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/test/rpmbuild/BUILD/freeradius-server-2.2.0 /usr/lib/rpm/check-buildroot /usr/lib/rpm/redhat/brp-compress /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump /usr/lib/rpm/brp-python-bytecompile /usr/lib/rpm/redhat/brp-python-hardlink /usr/lib/rpm/redhat/brp-java-repack-jars On Mon, May 6, 2013 at 1:09 PM, Alan DeKok al...@deployingradius.comwrote: Divyesh Raithatha wrote: Hello all, has anyone had success in building an RPM from the v2.x.x branch from http://git.freeradius.org? That should work I am following the information from http://wiki.freeradius.org/guide/Red-Hat-FAQ On a CentOS 6.4 x64 system I was able to build an RPM from 2.2.0 source successfully but I want to get all of the recent patches from the v2.x.x branch. Go to redhat/freeradius.spec,
Re: Need help with making RPM from v2.x.x branch
On 05/06/2013 04:09 PM, Alan DeKok wrote: Divyesh Raithatha wrote: Hello all, has anyone had success in building an RPM from the v2.x.x branch from http://git.freeradius.org? That should work I am following the information from http://wiki.freeradius.org/guide/Red-Hat-FAQ On a CentOS 6.4 x64 system I was able to build an RPM from 2.2.0 source successfully but I want to get all of the recent patches from the v2.x.x branch. Go to redhat/freeradius.spec, and delete the following line: Patch2: freeradius-radtest.patch That should cause it to build. Alan DeKok. Why does FreeRADIUS maintain build configurations for Red Hat and Debian? I suppose it makes sense for the person who wants to build an RPM or Deb package from the latest repo. It does not make sense for someone who just wants an RPM package. These project maintained build configurations are best thought of as bleeding edge developer stuff. Make some change and you want to test on Fedora or Debian and need packages, then these build directories are the goto place, Or for those cases where a distribution has not caught up with upstream yet, then this can serve a useful purpose as well (as long as they stay generic, see below), another variant of the this is only for the latest and greatest. I can't speak for Debian, I'm not a Deb package maintainer, but at least in the Red Hat world there isn't just one Red Hat distribution, there are many and each can have different build requirements build configurations. Another problem is the spec file under ./redhat is forever getting out of sync (as evidenced by the OP). Patch sets are a superb example of this (compounded by the problem there is no single rpm spec file for all Red Hat versions). My suggestion is for upstream FreeRADIUS to maintain a generic Red Hat RPM spec file which is vanilla as possible without any patches whatsoever. In theory current upstream shouldn't need patches. Also any customization we might do really should come from us, not upstream. If one is building an RPM from the current FreeRADIUS version using the FreeRADIUS RPM spec file then one should get a vanilla FreeRADIUS build whose only customization extends to assuring the same file locations, package names, etc. are used. You pretty much get this for free. I would take an existing spec file strip out all the patches, changelog, etc. and then one only needs to take a look at the options passed to configure (I'm thinking about options which control which modules are built). The generic RPM spec file that upstream maintains should be exercised on regular basis. Far too often we've seen upstream changes that required spec file changes but which were never done (e.g. add/removing modules and/or other files). Would we like to maintain the ./redhat subdirectory? No, for two reasons. 1. It's impossible, as pointed out above there is no single spec file, each spec file is tied to a specific release. We maintain *independent* spec files for *every* distribution version we support, at the moment that numbers in the dozens :-( 2. We already maintain them and they are publicly available for anyone to download. Trying to maintain multiple copies in multiple repositories and assuring they all stay in sync doesn't seem justified. -- John Dennis jden...@redhat.com Looking to carve out IT costs? www.redhat.com/carveoutcosts/ - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html