Spec URL: http://www.reneploetz.de/fedora/tcl-mysqltcl.spec SRPM URL: http://www.reneploetz.de/fedora/tcl-mysqltcl-3.05-1.fc9.src.rpm Description: Mysqltcl is an extension to the Tool Command Language (Tcl) that provides high-level access to a MySQL database server. This is my first package, so I need a sponsor.
Hi, this is not an official review (practice review): rpmlint outputs the following: [lua:~/rhrpms] rpmlint tcl-mysqltcl-3.05-1.fc8.x86_64.rpm tcl-mysqltcl.x86_64: W: no-version-in-last-changelog 1 packages and 0 specfiles checked; 0 errors, 1 warnings. [lua:~/rhrpms] rpmlint tcl-mysqltcl-debuginfo-3.05-1.fc8.x86_64.rpm tcl-mysqltcl-debuginfo.x86_64: W: spurious-executable-perm /usr/src/debug/mysqltcl-3.05/generic/mysqltcl.c tcl-mysqltcl-debuginfo.x86_64: E: wrong-script-end-of-line-encoding /usr/src/debug/mysqltcl-3.05/generic/mysqltcl.c tcl-mysqltcl-debuginfo.x86_64: W: no-version-in-last-changelog 1 packages and 0 specfiles checked; 1 errors, 2 warnings. Therefore you need to: 1) add a version in the changelog section %changelog * Thu Oct 7 2008 Rene Ploetz <RenePloetz> 3.05-1 - Initial mysqltcl 2) remove the execution bit of mysqltcl.c in the %%prep section: chmod -x generic/mysqltcl.c 3) You should not use Requires: tcl tcl(abi) = 8.5 mysql F8 has tcl(abi) = 8.4, for instance, and mysql in not necessary, because one of its shared libraries is a dependency anyway. 4) The license seems to be BSD and not MIT, but I did not check it yet. [lua:~/temp/temp/mysqltcl-3.05] more COPYING Some other old historical license notes can be fond in READMY-msqltcl , mysqltcl.c and mysqltcl.n It seems that it is BSD-like licence 5) You should obsolete mysqltcl, in case someone is using an old package named this way. 6) Add mysqltcl.html to the documentation. 7) Claim ownership of directory %{mysqltcl}-%{version} 8) My comments were based on: https://fedoraproject.org/wiki/Packaging/ReviewGuidelines This link should help you in the future. I would suggest a spec like the one below. It builds cleanly in mock for F8 and F9 i386 or x86_64: mock -r fedora-8-i386 rebuild tcl-mysqltcl-3.05-2.fc8.src.rpm --define "tcl_version 8.4" --------------------------------------------------------------------------- # We used to define this dynamically, but the Fedora buildsystem chokes on # using this for the versioned Requires on tcl(abi), so we hardcode it. # This sucks, but there is no other clean way around it, because tcl # (and tclsh) aren't in the default buildroot. %{!?tcl_version: %define tcl_version 8.5} %{!?tcl_sitearch: %define tcl_sitearch tcl%{tcl_version}} %define real_name mysqltcl Summary: MySQL interface for Tcl Name: tcl-mysqltcl Version: 3.05 Release: 2%{?dist} License: BSD Group: Development/Languages Source: http://www.xdobry.de/mysqltcl/%{real_name}-%{version}.tar.gz URL: http://www.xdobry.de/mysqltcl BuildRequires: mysql-devel BuildRequires: tcl-devel >= 8.3.1 Requires: tcl(abi) = %{tcl_version} Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Provides: %{real_name} = %{version}-%{release} Obsoletes: %{real_name} < %{version}-%{release} %description Mysqltcl is an extension to the Tool Command Language (Tcl) that provides high-level access to a MySQL database server. %prep %setup -q -n %{real_name}-%{version} chmod -x generic/mysqltcl.c %build %configure --with-tcl=%{_libdir} \ --with-mysql-lib=%{_libdir}/mysql \ --enable-threads make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} pushd %{buildroot}%{_libdir} mkdir %{tcl_sitearch} mv %{real_name}-%{version} %{tcl_sitearch} popd %clean rm -rf %{buildroot} %files %defattr(0644,root,root,0755) %doc README README-msqltcl ChangeLog COPYING AUTHORS doc/mysqltcl.html %defattr (-,root,root,-) %{_libdir}/%{tcl_sitearch}/%{real_name}-%{version} %{_mandir}/mann/* %changelog * Thu Oct 7 2008 Rene Ploetz <RenePloetz> 3.05-1 - Initial mysqltcl spec file.
In fact, best to drop the Requires: tcl(abi) entirely, as rpm should pick up the correct one automatically. What are the Provides and Obsoletes for? What in Fedora is this replacing?
(In reply to comment #2) > In fact, best to drop the Requires: tcl(abi) entirely, as rpm should pick up > the correct one automatically. What are the Provides and Obsoletes for? What > in Fedora is this replacing? Please check https://fedoraproject.org/wiki/Packaging/Tcl#Extensions
Now that's weird, but it makes sense. Sorry I missed it, carry on.
comment #2 https://bugzilla.redhat.com/show_bug.cgi?id=466047#c2 is accurate -- this patch permits building on say, RHEL 5 [herrold@centos-5 tcl-mysqltcl]$ diff -u tcl-mysqltcl.spec-ORIG tcl-mysqltcl.spec --- tcl-mysqltcl.spec-ORIG 2008-10-29 14:31:00.000000000 -0400 +++ tcl-mysqltcl.spec 2008-10-29 14:31:00.000000000 -0400 @@ -14,7 +14,8 @@ Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: tcl-devel mysql-devel -Requires: tcl tcl(abi) = 8.5 mysql +# Requires: tcl tcl(abi) = 8.5 +# Requires: mysql Provides: mysqltcl = %{version}-%{release}
(In reply to comment #3) > (In reply to comment #2) > > In fact, best to drop the Requires: tcl(abi) entirely, as rpm should pick up > > the correct one automatically. What are the Provides and Obsoletes for? What > > in Fedora is this replacing? > > Please check https://fedoraproject.org/wiki/Packaging/Tcl#Extensions Hi, I based my spec file on this (recent) .src.rpm from F9: tcl-tile-0.8.2-5.fc9.src.rpm I thought it was created according to Fedora rules. It seems I was wrong... -------------------------------------------- # We used to define this dynamically, but the Fedora buildsystem chokes on # using this for the versioned Requires on tcl(abi), so we hardcode it. # This sucks, but there is no other clean way around it, because tcl # (and tclsh) aren't in the default buildroot. %{!?tcl_version: %define tcl_version 8.5} %{!?tcl_sitearch: %define tcl_sitearch %{_libdir}/tcl%{tcl_version}} %define realname tile Name: tcl-%{realname} Version: 0.8.2 Release: 5%{?dist} Summary: Modified Tk styling engine Group: System Environment/Libraries License: TCL URL: http://tktable.sourceforge.net/ Source0: http://downloads.sourceforge.net/tktable/%{realname}-%{version}.tar.gz BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) Provides: %{realname} = %{version}-%{release} Provides: tk-%{realname} = %{version}-%{release} BuildRequires: tcl-devel, tk-devel, libX11-devel Requires: tcl(abi) = %{tcl_version} ---------------------------------------------------------------- The Provides and Obsoletes are meant for a package named mysqltcl, the upstream name. It does not exist in Fedora, but it may have come from a 3th party repo. This is the only way of uninstalling it during an upgrade.
I have a better understanding of the tcl guidelines.
yeah -- tcl-tile is not well formed either such that it gratuitously will fail a rebuild on RHEL 5 as well. I'll file a bug [herrold@centos-5 tcl-tile]$ sudo rpm -Uvh --test /home/herrold/rpmbuild/RPMS/x86_64/tcl-tile-0.8.2-5orc.x86_64.rpm [sudo] password for herrold: error: Failed dependencies: tcl(abi) = 8.5 is needed by tcl-tile-0.8.2-5orc.x86_64 [herrold@centos-5 tcl-tile]$
filed at: https://bugzilla.redhat.com/show_bug.cgi?id=469083 optionally, if a versioned tcl(api) is desired by you, it is a general solution patch I added there. -- Russ herrold
I am kind of lost here. If I build the package with tcl(abi) = 8.5 I cannot install it in, say, F8 (tcl(abi) = 8.4). Using the spec file I published here, I can build and install the rpm in F8, by using mock, and defining the tcl_version I want: mock -r fedora-8-i386 rebuild tcl-mysqltcl-3.05-2.fc8.src.rpm --define "tcl_version 8.4" But this does not work (install) for F6, or EL5 (I tried). In this case, as Jon said, the solution is not using any tcl(abi). What is the solution? Different .src.rpm?
see bug #469083 spot asserts that koji is too weak a tool to prevent a need for manual spec file edits to satisfy your use case. that bug was cloased, and I reopened and moved it to the koji component
This way, at least I can create the rpm for F6, F8 or F9 passing the appropriate option to mock: --without abi or --define "tcl_version 8.4" ----------------------------------- %bcond_without abi # We used to define this dynamically, but the Fedora buildsystem chokes on # using this for the versioned Requires on tcl(abi), so we hardcode it. # This sucks, but there is no other clean way around it, because tcl # (and tclsh) aren't in the default buildroot. %{!?tcl_version: %define tcl_version 8.5} %{!?tcl_sitearch: %define tcl_sitearch tcl%{tcl_version}} %define real_name mysqltcl Summary: MySQL interface for Tcl Name: tcl-mysqltcl Version: 3.05 Release: 2%{?dist} License: BSD Group: Development/Languages Source: http://www.xdobry.de/mysqltcl/%{real_name}-%{version}.tar.gz URL: http://www.xdobry.de/mysqltcl BuildRequires: mysql-devel BuildRequires: tcl-devel >= 8.3.1 %{?with_abi:Requires: tcl(abi) = %{tcl_version}} Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Provides: %{real_name} = %{version}-%{release} Obsoletes: %{real_name} < %{version}-%{release}
Thanks for all your replies, I updated the spec file and srpm with the suggestions made in comment #1 I also added the "--without abi" switch which I hope is sufficient for both the tcl guidelines and building on EL5. The file locations are: Spec URL: http://www.reneploetz.de/fedora/tcl-mysqltcl.spec SRPM URL: http://www.reneploetz.de/fedora/tcl-mysqltcl-3.05-2.fc9.src.rpm
Oops, I somehow missed this when I opened the review request for bz #491815. Looks like this hasn't been touched in several months however. Rene, are you still interested in moving forward with maintaining this package?
Link to my review request is https://bugzilla.redhat.com/show_bug.cgi?id=491815
Well, I'm still interested in getting this package into Fedora (and getting sponsored), but as you said this review request hasn't been touched in months. I have no problems handing this request over to you hoping that this will speed up the inclusion process as the chances are slim that anyone will look at this after nearly a year of silence.
Some notes for 3.05-2: * Source - SOURCE0 included in your srpm differs from what I could download from the URL written in SOURCE0: ----------------------------------------------------------- 198755 2008-04-06 03:40 mysqltcl-3.05.tar.gz 198617 2008-09-24 08:54 tcl-mysqltcl-3.05-2.fc9.src/mysqltcl-3.05.tar.gz ----------------------------------------------------------- * License - Actually this is "MIT", not "BSD". * Version specific BuildRequires - I don't think there is any sense to write tcl-devel version dependency (i.e. >= 8.3.1) where tcl abi dependency is also specified. * Cflags ----------------------------------------------------------- 139 gcc -pipe -DPACKAGE_NAME=\"mysqltcl\" -DPACKAGE_TARNAME=\"mysqltcl\" -DPACKAGE_VERSION=\"3.05\" -DPACKAGE_STRING=\"mysqltcl\ 3.05\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DTCL_THREADS=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_TYPE=long\ long -DHAVE_STRUCT_STAT64=1 -DHAVE_OPEN64=1 -DHAVE_LSEEK64=1 -DHAVE_TYPE_OFF64_T=1 -DUSE_TCL_STUBS=1 -I"/usr/include" -I/usr/include/mysql -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -O2 -fomit-frame-pointer -Wall -Wno-implicit-int -fPIC -c `echo ./generic/mysqltcl.c` -o mysqltcl.o ----------------------------------------------------------- - "-fomit-frame-pointer" makes debugging very difficult and is not allowed on Fedora. * %defattr ----------------------------------------------------------- %defattr (0644,root,root,0755) %doc README ChangeLog COPYING AUTHORS README-msqltcl doc/mysqltcl.html ----------------------------------------------------------- - Well, I would recommend to change the permissions of these files at %prep explicitly rather than to use this %defattr hack. ----------------------------------------------------------- %defattr (-,root,root) ----------------------------------------------------------- - We now recommend %defattr(-,root,root,-)
*** Bug 491815 has been marked as a duplicate of this bug. ***
One more notes * tests/ directory - This package contains tests/ directory. If some test program exists, please create %check stage and execute the test program there.
Thank you for your reply, I updated the file locations: Spec URL: http://www.reneploetz.de/fedora/tcl-mysqltcl.spec SRPM URL: http://www.reneploetz.de/fedora/tcl-mysqltcl-3.05-3.fc11.src.rpm > * Source > - SOURCE0 included in your srpm differs from what I could > download from the URL written in SOURCE0: > ----------------------------------------------------------- > 198755 2008-04-06 03:40 mysqltcl-3.05.tar.gz > 198617 2008-09-24 08:54 tcl-mysqltcl-3.05-2.fc9.src/mysqltcl-3.05.tar.gz > ----------------------------------------------------------- > > * License > - Actually this is "MIT", not "BSD". > > * Version specific BuildRequires > - I don't think there is any sense to write tcl-devel version > dependency (i.e. >= 8.3.1) where tcl abi dependency is also > specified. FIXED > - "-fomit-frame-pointer" makes debugging very difficult and is > not allowed on Fedora. I added "--enable-symbols" to the configure call. > * %defattr > ----------------------------------------------------------- > %defattr (0644,root,root,0755) > %doc README ChangeLog COPYING AUTHORS README-msqltcl doc/mysqltcl.html > ----------------------------------------------------------- > - Well, I would recommend to change the permissions of these > files at %prep explicitly rather than to use this > %defattr hack. > ----------------------------------------------------------- > %defattr (-,root,root) > ----------------------------------------------------------- > - We now recommend %defattr(-,root,root,-) FIXED > * tests/ directory > - This package contains tests/ directory. If some test program exists, > please create %check stage and execute the test program there. I would like to do that, but unfortunately the tests require that you provide at least a username for a mysql server. Is there server which could be used by koji? I wasn't able to find anything about that in the material for packagers. Koji-Build: http://koji.fedoraproject.org/koji/taskinfo?taskID=1698454
One thing I forgot to ask: * Obsoletes - Would you explain why you want "Obsoletes: %{real_name} < %{version}-%{release}" on Fedora? (In reply to comment #20) > > * tests/ directory > > - This package contains tests/ directory. If some test program exists, > > please create %check stage and execute the test program there. > > I would like to do that, but unfortunately the tests require that you provide > at least a username for a mysql server. Is there server which could be used by > koji? I wasn't able to find anything about that in the material for packagers. - Understood. Then: ------------------------------------------------------------- NOTE: Before being sponsored: This package will be accepted with another few work. But before I accept this package, someone (I am a candidate) must sponsor you. Once you are sponsored, you have the right to review other submitters' review requests and approve the packages formally. For this reason, the person who want to be sponsored (like you) are required to "show that you have an understanding of the process and of the packaging guidelines" as is described on : http://fedoraproject.org/wiki/PackageMaintainers/HowToGetSponsored Usually there are two ways to show this. A. submit other review requests with enough quality. B. Do a "pre-review" of other person's review request (at the time you are not sponsored, you cannot do a formal review) When you have submitted a new review request or have pre-reviewed other person's review request, please write the bug number on this bug report so that I can check your comments or review request. Fedora package collection review requests which are waiting for someone to review can be checked on my wiki page: http://fedoraproject.org/wiki/User:Mtasaka#B._Review_request_tickets (Check "No one is reviewing") Review guidelines are described mainly on: http://fedoraproject.org/wiki/Packaging/ReviewGuidelines http://fedoraproject.org/wiki/Packaging/Guidelines http://fedoraproject.org/wiki/Packaging/ScriptletSnippets ------------------------------------------------------------
ping?
Sorry for the delay in my response. I did a review about a week ago, but was unable to do other reviews in the last days, so I did not want to bother you by replying many times with a status update. I've done the following reviews: https://bugzilla.redhat.com/show_bug.cgi?id=522613#c2 https://bugzilla.redhat.com/show_bug.cgi?id=526122#c1 I'm willing to do either more reviews and/or submit other packages if you feel I need more experience before sponsoring me.
Well, would you answer this question? (In reply to comment #21) > One thing I forgot to ask: > > * Obsoletes > - Would you explain why you want "Obsoletes: > %{real_name} < %{version}-%{release}" on Fedora?
The guidelines do not seem to say anything about Obsoletes, but the main reason behind is that you obviously remove all packages which do provide an unversioned %{real_name} as well as the versioned ones below this release. There are only few use-cases for this, the main one is to remove any user-built (or third party) rpm versions which were installed before. If you do not see that this will be necessary I can easily remove the line.
(In reply to comment #25) > The guidelines do not seem to say anything about Obsoletes, but the main reason > behind is that you obviously remove all packages which do provide an > unversioned %{real_name} as well as the versioned ones below this release. > There are only few use-cases for this, the main one is to remove any user-built > (or third party) rpm versions which were installed before. > If you do not see that this will be necessary I can easily remove the line. Usually we don't have to take care of user-built/or third party rpms (and actually it is almost impossible). Usually if such Obsoletes are not needed for Fedora users, they should simply removed.
I removed the unnecessary Obsoletes tag: Spec URL: http://www.reneploetz.de/fedora/tcl-mysqltcl.spec SRPM URL: http://www.reneploetz.de/fedora/tcl-mysqltcl-3.05-4.fc11.src.rpm
Okay. ----------------------------------------------------------- This package (tcl-mysqltcl) is APPROVED by mtasaka ----------------------------------------------------------- I checked FAS and it seems that the mail address used in FAS differs from what is used in bugzilla in upper/lowercase. Is this expected?
Well, I registered myself to bugzilla long before to FAS, and I was using the lowercase version of my email address at this time. But as there is no difference in capitalized and uncapitalized mail addresses and because my whole name would be clearly visible just by looking at the address, I decided to capitalize surname and name a while ago. But, as I don't find any method to change the address in bugzilla, I changed it in FAS to prevent any confusion in the future.
Okay. Now I am sponsoring you. Please follow the procedure written on: http://fedoraproject.org/wiki/PackageMaintainers/Join from "Install the Client Tools (Koji)". If you want to import this package into Fedora 10/11/12, you also have to look at http://fedoraproject.org/wiki/Infrastructure/UpdatesSystem/Bodhi-info-DRAFT (after once you rebuilt this package on koji Fedora rebuilding system). If you have questions, please ask me. Removing NEEDSPONSOR.
New Package CVS Request ======================= Package Name: tcl-mysqltcl Short Description: MySQL interface for Tcl Owners: renep Branches: F-11 F-12 InitialCC: renep
Please consider branching for EPEL (4 & 5), or, add me as a co-maintainer and I will be happy to maintain for EPEL.
cvs done.
I will submit a CVS change request to enable the EPEL 4 and 5 branches. The only issue of this is that EPEL4 does not have the %bcond_without macro so I have to redefine it (which is not a problem, but will change the original reviewed spec file).
Package Change Request ====================== Package Name: tcl-mysqltcl New Branches: EL-4 EL-5 Owners: renep
tcl-mysqltcl-3.05-6.el4 has been submitted as an update for Fedora EPEL 4. http://admin.fedoraproject.org/updates/tcl-mysqltcl-3.05-6.el4
tcl-mysqltcl-3.05-6.el5 has been submitted as an update for Fedora EPEL 5. http://admin.fedoraproject.org/updates/tcl-mysqltcl-3.05-6.el5
Closing.
tcl-mysqltcl-3.05-8.el4 has been submitted as an update for Fedora EPEL 4. http://admin.fedoraproject.org/updates/tcl-mysqltcl-3.05-8.el4
tcl-mysqltcl-3.05-8.el5 has been submitted as an update for Fedora EPEL 5. http://admin.fedoraproject.org/updates/tcl-mysqltcl-3.05-8.el5
tcl-mysqltcl-3.05-8.el5 has been pushed to the Fedora EPEL 5 stable repository. If problems still persist, please make note of it in this bug report.
tcl-mysqltcl-3.05-8.el4 has been pushed to the Fedora EPEL 4 stable repository. If problems still persist, please make note of it in this bug report.