Spec URL: http://dmalcolm.fedorapeople.org/testopia.spec SRPM URL: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1.tr2.0_RC1.fc10.src.rpm Description: Testopia is a test case management system built as an extension of Bugzilla, allowing test plans and result reporting to be integrated into the Bugzilla web UI. This package is a version of Bugzilla built with the Testopia extensions; if you wish to deploy Testopia, install this package rather than "bugzilla". As with the regular "bugzilla" package it requires a database engine installed - either MySQL or PostgreSQL. Without one of these database engines, Testopia will not work. Testopia (http://www.mozilla.org/projects/testopia/) is an extension of Bugzilla (http://www.bugzilla.org/) that adds test-case management, allowing test plans and result reporting to be integrated into the Bugzilla web UI. It patches the core of Bugzilla, and hence has to be built as part of the core package, rather than a separate srpm. Not all Bugzilla deployments will want Testopia, so for now I'm packaging Testopia in Fedora as a separate package. The "testopia" package is deliberately as close as possible to the "bugzilla" package for simplicity's sake; it is intended that a sysadmin will install one or the other, and hence the testopia package conflict with bugzilla packages. See bug 449401 for a discussion of this
Created attachment 308382 [details] For reference, patch showing what I did to bugzilla.spec to get to testopia.spec
Successful scratch build here: http://koji.fedoraproject.org/koji/taskinfo?taskID=646051
taking review
OK - Package meets naming and packaging guidelines OK? - Spec file matches base package name. OK Spec has consistant macro usage. OK Meets Packaging Guidelines. SEE NOTES - License MUSTFIX - License field in spec matches MUSTFIX - License file included in package OK - Spec in American English OK - Spec is legible. OK - Sources match upstream md5sum: 29847f8f095d56212e167a0bde1b2d70 testopia-2.0-RC1.tar.gz 29847f8f095d56212e167a0bde1b2d70 ../build/SOURCES/testopia-2.0-RC1.tar.gz -- f55a3f3cde9cf1bf56492d18c8f7afe4 ../bugzilla-3.0.4.tar.gz f55a3f3cde9cf1bf56492d18c8f7afe4 ../build/SOURCES/bugzilla-3.0.4.tar.gz N/A - Package needs ExcludeArch OK - BuildRequires correct N/A - Spec handles locales/find_lang N/A - Package is relocatable and has a reason to be. OK - Package has %defattr and permissions on files is good. OK - Package has a correct %clean section. OK - Package has correct buildroot %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) OK- Package is code or permissible content. OK - Doc subpackage needed/used. OK - Packages %doc files don't affect runtime. N/A - Headers/static libs in -devel subpackage. N/A - Spec has needed ldconfig in post and postun N/A - .pc files in -devel subpackage/requires pkgconfig N/A - .so files in -devel subpackage. N/A - -devel package Requires: %{name} = %{version}-%{release} N/A - .la files are removed. N/A - Package is a GUI app and has a .desktop file OK - Package compiles and builds on at least one arch. OK - Package has no duplicate files in %files. SEE NOTES - Package doesn't own any directories other packages own. OK- Package owns all the directories it creates. SEE NOTES- No rpmlint output: [jstanley@rugrat testopia]$ rpmlint testopia-3.0.4-1.tr2.0_RC1.fc10.noarch.rpm testopia.noarch: E: non-executable-script /usr/share/bugzilla/cron.daily 0644 testopia.noarch: E: non-standard-gid /etc/bugzilla apache testopia.noarch: E: non-standard-dir-perm /etc/bugzilla 0750 testopia.noarch: W: invalid-license MPL OK - final provides and requires are sane: (include output of for i in *rpm; do echo $i; rpm -qp --provides $i; echo =; rpm -qp --requires $i; echo; done manually indented after checking each line. I also remove the rpmlib junk and anything provided by glibc.) testopia-3.0.4-1.tr2.0_RC1.fc10.noarch.rpm config(testopia) = 3.0.4-1.tr2.0_RC1.fc10 perl(Bugzilla) perl(Bugzilla::Attachment) perl(Bugzilla::Attachment::PatchReader) perl(Bugzilla::Auth) perl(Bugzilla::Auth::Login) perl(Bugzilla::Auth::Login::CGI) perl(Bugzilla::Auth::Login::Cookie) perl(Bugzilla::Auth::Login::Env) perl(Bugzilla::Auth::Login::Stack) perl(Bugzilla::Auth::Persist::Cookie) perl(Bugzilla::Auth::Verify) perl(Bugzilla::Auth::Verify::DB) perl(Bugzilla::Auth::Verify::LDAP) perl(Bugzilla::Auth::Verify::Stack) perl(Bugzilla::Bug) perl(Bugzilla::BugMail) perl(Bugzilla::CGI) perl(Bugzilla::Chart) perl(Bugzilla::Classification) perl(Bugzilla::Component) perl(Bugzilla::Config) perl(Bugzilla::Config::Admin) perl(Bugzilla::Config::Attachment) perl(Bugzilla::Config::Auth) perl(Bugzilla::Config::BugChange) perl(Bugzilla::Config::BugFields) perl(Bugzilla::Config::BugMove) perl(Bugzilla::Config::Common) perl(Bugzilla::Config::Core) perl(Bugzilla::Config::DependencyGraph) perl(Bugzilla::Config::GroupSecurity) perl(Bugzilla::Config::L10n) perl(Bugzilla::Config::LDAP) perl(Bugzilla::Config::MTA) perl(Bugzilla::Config::PatchViewer) perl(Bugzilla::Config::Query) perl(Bugzilla::Config::ShadowDB) perl(Bugzilla::Config::Testopia) perl(Bugzilla::Config::UserMatch) perl(Bugzilla::Constants) perl(Bugzilla::DB) perl(Bugzilla::DB::Mysql) perl(Bugzilla::DB::Pg) perl(Bugzilla::DB::Schema) perl(Bugzilla::DB::Schema::Mysql) perl(Bugzilla::DB::Schema::Pg) perl(Bugzilla::Error) perl(Bugzilla::Field) perl(Bugzilla::Flag) perl(Bugzilla::FlagType) perl(Bugzilla::Group) perl(Bugzilla::Hook) perl(Bugzilla::Install) perl(Bugzilla::Install::DB) perl(Bugzilla::Install::Filesystem) perl(Bugzilla::Install::Localconfig) perl(Bugzilla::Install::Requirements) perl(Bugzilla::Keyword) perl(Bugzilla::Mailer) perl(Bugzilla::Milestone) perl(Bugzilla::Object) perl(Bugzilla::Product) perl(Bugzilla::Search) perl(Bugzilla::Search::Quicksearch) perl(Bugzilla::Search::Saved) perl(Bugzilla::Series) perl(Bugzilla::Template) perl(Bugzilla::Template::Plugin::Bugzilla) perl(Bugzilla::Template::Plugin::Hook) perl(Bugzilla::Template::Plugin::User) perl(Bugzilla::Testopia::Attachment) perl(Bugzilla::Testopia::Build) perl(Bugzilla::Testopia::Category) perl(Bugzilla::Testopia::Classification) perl(Bugzilla::Testopia::Constants) perl(Bugzilla::Testopia::Environment) perl(Bugzilla::Testopia::Environment::Category) perl(Bugzilla::Testopia::Environment::Element) perl(Bugzilla::Testopia::Environment::Property) perl(Bugzilla::Testopia::Environment::Xml) perl(Bugzilla::Testopia::Product) perl(Bugzilla::Testopia::Report) perl(Bugzilla::Testopia::Search) perl(Bugzilla::Testopia::Table) perl(Bugzilla::Testopia::TestCase) perl(Bugzilla::Testopia::TestCaseRun) perl(Bugzilla::Testopia::TestPlan) perl(Bugzilla::Testopia::TestRun) perl(Bugzilla::Testopia::TestTag) perl(Bugzilla::Testopia::Util) perl(Bugzilla::Testopia::Xml) perl(Bugzilla::Testopia::XmlReferences) perl(Bugzilla::Testopia::XmlTestCase) perl(Bugzilla::Token) perl(Bugzilla::Update) perl(Bugzilla::User) perl(Bugzilla::User::Setting) perl(Bugzilla::User::Setting::Skin) perl(Bugzilla::Util) perl(Bugzilla::Version) perl(Bugzilla::WebService) perl(Bugzilla::WebService::Bug) perl(Bugzilla::WebService::Bugzilla) perl(Bugzilla::WebService::Constants) perl(Bugzilla::WebService::Product) perl(Bugzilla::WebService::Testopia::Build) perl(Bugzilla::WebService::Testopia::Environment) perl(Bugzilla::WebService::Testopia::Product) perl(Bugzilla::WebService::Testopia::TestCase) perl(Bugzilla::WebService::Testopia::TestCaseRun) perl(Bugzilla::WebService::Testopia::TestPlan) perl(Bugzilla::WebService::Testopia::TestRun) perl(Bugzilla::WebService::User) perl(Bugzilla::WebService::XMLRPC::Transport::HTTP::CGI) perl(Support::Files) perl(Support::Systemexec) perl(Support::Templates) testopia = 3.0.4-1.tr2.0_RC1.fc10 = /bin/sh /bin/sh /usr/bin/env /usr/bin/perl config(testopia) = 3.0.4-1.tr2.0_RC1.fc10 mod_perl patchutils perl >= 0:5.008 perl >= 0:5.008001 perl(AnyDBM_File) perl(Apache2::Const) perl(Apache2::ServerUtil) perl(Apache2::SizeLimit) perl(Bugzilla) perl(Bugzilla::Attachment) perl(Bugzilla::Attachment::PatchReader) perl(Bugzilla::Auth) perl(Bugzilla::Auth::Login::Stack) perl(Bugzilla::Auth::Persist::Cookie) perl(Bugzilla::Auth::Verify::Stack) perl(Bugzilla::Bug) perl(Bugzilla::BugMail) perl(Bugzilla::CGI) perl(Bugzilla::Chart) perl(Bugzilla::Classification) perl(Bugzilla::Component) perl(Bugzilla::Config) perl(Bugzilla::Config::Common) perl(Bugzilla::Constants) perl(Bugzilla::DB) perl(Bugzilla::DB::Schema) perl(Bugzilla::Error) perl(Bugzilla::Field) perl(Bugzilla::Flag) perl(Bugzilla::FlagType) perl(Bugzilla::Group) perl(Bugzilla::Hook) perl(Bugzilla::Install::Filesystem) perl(Bugzilla::Install::Localconfig) perl(Bugzilla::Install::Requirements) perl(Bugzilla::Keyword) perl(Bugzilla::Mailer) perl(Bugzilla::Milestone) perl(Bugzilla::Product) perl(Bugzilla::Search) perl(Bugzilla::Search::Quicksearch) perl(Bugzilla::Search::Saved) perl(Bugzilla::Series) perl(Bugzilla::Template) perl(Bugzilla::Testopia::Attachment) perl(Bugzilla::Testopia::Build) perl(Bugzilla::Testopia::Category) perl(Bugzilla::Testopia::Classification) perl(Bugzilla::Testopia::Constants) perl(Bugzilla::Testopia::Environment) perl(Bugzilla::Testopia::Environment::Category) perl(Bugzilla::Testopia::Environment::Element) perl(Bugzilla::Testopia::Environment::Property) perl(Bugzilla::Testopia::Environment::Xml) perl(Bugzilla::Testopia::Product) perl(Bugzilla::Testopia::Report) perl(Bugzilla::Testopia::Search) perl(Bugzilla::Testopia::Table) perl(Bugzilla::Testopia::TestCase) perl(Bugzilla::Testopia::TestCaseRun) perl(Bugzilla::Testopia::TestPlan) perl(Bugzilla::Testopia::TestRun) perl(Bugzilla::Testopia::TestTag) perl(Bugzilla::Testopia::Util) perl(Bugzilla::Testopia::Xml) perl(Bugzilla::Testopia::XmlReferences) perl(Bugzilla::Testopia::XmlTestCase) perl(Bugzilla::Token) perl(Bugzilla::Update) perl(Bugzilla::User) perl(Bugzilla::User::Setting) perl(Bugzilla::Util) perl(Bugzilla::Version) perl(Bugzilla::WebService) perl(Bugzilla::WebService::Constants) perl(CGI) perl(Class::CSV) perl(Class::Struct) perl(Cwd) perl(DBD::Pg) perl(DBI) perl(Data::Dumper) perl(Date::Format) perl(Date::Parse) perl(Email::Address) perl(Email::MIME) perl(Email::MIME::Attachment::Stripper) perl(Email::MIME::Modifier) perl(Email::Reply) perl(Email::Send) perl(Encode) perl(Encode::MIME::Header) perl(Errno) perl(Exporter) perl(Fcntl) perl(File::Basename) perl(File::Find) perl(File::Path) perl(File::Spec) perl(File::Spec::Functions) perl(File::Temp) perl(Getopt::Long) perl(Hash::Util) perl(IO::Dir) perl(IO::File) perl(IO::Handle) perl(JSON) perl(List::Util) perl(MIME::Base64) perl(MIME::Parser) perl(ModPerl::RegistryLoader) perl(Net::LDAP) perl(POSIX) perl(Pod::Usage) perl(Safe) perl(Socket) perl(Storable) perl(Template::Stash) perl(Test::Harness) perl(Text::Diff) perl(Time::Zone) perl(XML::Twig) perl(XMLRPC::Transport::HTTP) perl(base) perl(constant) perl(diagnostics) perl(fields) perl(integer) perl(lib) perl(strict) perl(vars) perl(warnings) perl-Email-Address perl-Email-MIME perl-Email-MIME-Attachment-Stripper perl-Email-MIME-Modifier perl-Email-Reply perl-Email-Send perl-Email-Simple perl-MIME-tools perl-SOAP-Lite perl-Template-Toolkit rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 smtpdaemon webserver which SHOULD Items: OK- Should build in mock. OK - Should build on all supported archs OK - Should function as described. OK - Should have sane scriptlets. SHOULDFIX - Should have subpackages require base package with fully versioned depend. OK - Should have dist tag OK - Should package latest version Issues: 1. License tag is not correct. Should be at least MPLv1.1, if not 'MPLv1.1 and GPLv3' 2. Licensing is a bit murky. Testopia uses EXT-JS to provide the Ajax web interface, and it is dual-licensed commercial and GPLv3. Bugzilla is not a Mozilla tri-licensed product per http://www.mozilla.org/MPL/#source-code so I'm not sure what they're doing here. 3. There are several 'error' outputs from rpmlint that I think are OK - /etc/bugzilla contains passwords, etc. 4. Change the cron.daily script to be executable per the rpmlint output Blocking FE-LEGAL due to item 2, hopefully this can be resolved quickly. Maybe just a quick note to upstream will help.
Some things I forgot :) 5. The package owns directories that the bugzilla package proper owns, however, there's a Conflicts, so I don't think that's a big problem. 6. The license text is not included as a %doc in the package 7. The subpackages don't require the base package
This particular package doesn't actually install and work. I've e-mailed Davve about it, it exhibits various states of fail (though maybe it's the operator) :).
No, it was me; I broke the schema installation of the testopia-specific tables; I'd only been testing on pre-created databases. Will investigate; sorry
Problem was in my patching of bz_locations; extensionsdir was pointing at: /var/lib/bugzilla/extensions (empty) rather than: /usr/share/bugzilla/extensions (which has testopia/code/db_schema-abstract_schema.pl); hence not finding the testopia extenstion and thus not extending the schema to cover the Testopia tables in Bugzilla/DB/Schema.pm:_initialize Working on a revised version, and on the other issues.
Created attachment 308756 [details] extjs license as it appears in testopia tarball The testopia/extjs/LICENSE.txt license as it appears in the testopia tarball seems to indicate that it is LGPLv3. However the license text on http://extjs.com/products/license-faq.php seems to indicate GPLv3
Updated SRPM here: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_1.tr2.0_RC1.fc10.src.rpm and specfile at: http://dmalcolm.fedorapeople.org/testopia.spec This is still a work-in-progress, I'm afraid; it uses the correct extensions location and thus correctly populates the schema, but seeing some issues trying to actually creating test plans and cases. Fixing the extensions location revealed that Testopia adds a hard requirement on GD-Graph3D which stops checkinstall.pl It appears to only be referenced in the code at ./template/en/default/testopia/reports/completion.png.tmpl: USE my_graph = GD.Graph.bars3d(275,250); i.e. in one particular report, so shouldn't impact full functionality of the package beyond that. The above srpm patches out the requirement for now. perl-GD-Graph3D doesn't seem to be packaged for Fedora yet. Probably should fix that before clearing review.
Issue with extensionsdir filed against bugzilla package as bug 450636
I don't think the fact that it doesn't work is entirely your fault :). I found (via filing at b.m.o) that the latest version of perl-JSON doesn't work with Testopia. Greg is aiming to having this resolved by the time 2.0 final comes out, but it's a little hairy, In the meanwhile, I've posted F9 and EL-5 versions of what does work at http://i.am.jds2001.org/temp
Oh, and the install at http://i.am.jds2001.org/bugzilla/ is alive and kicking with this new module (and you have admin rights to that bugzilla installation). The one thing that I've found is that if you add a component to an environment, for some reason you can't rename it.
Oh, and it's too early iin the morning - perl-GDGraph3d-0.63-9.fc9.noarch is packaged for Fedora. $ rpm -q --provides perl-GDGraph3d-0.63-9.fc9.noarch perl(GD::Graph3d) = 0.63 perl(GD::Graph::axestype3d) = 0.63 perl(GD::Graph::bars3d) = 0.63 perl(GD::Graph::cylinder) = 0.63 perl(GD::Graph::cylinder3d) = 0.63 perl(GD::Graph::lines3d) = 0.63 perl(GD::Graph::pie3d) = 0.63 perl-GD-Graph3d = 0.63-9.fc9 perl-GDGraph3d = 0.63-9.fc9 $
Thanks; the bug you filed on mozilla.org _was_ the issue I'm seeing; for later reference you filed it on b.m.o as 437828, resolved as dup of 409309; adding reference to latter to this bug
Re perl-GD-Graph3d: doh! Updated specfile at same location: http://dmalcolm.fedorapeople.org/testopia.spec and SRPM: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_2.tr2.0_RC1.fc10.src.rpm
I've been experimenting with the python client-side helper module for XML-RPC interface in the contrib subpackage, and moved it to its own -python subpackage, installing it to site-libs so that it's accessible easily with "import testopia" in client code. Some notes on doing this are at: https://fedoraproject.org/wiki/QA/Testopia/XmlRpc Updated specfile at same location: http://dmalcolm.fedorapeople.org/testopia.spec and SRPM at: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_3.tr2.0_RC1.fc10.src.rpm
I've reworked things to try to make this parallel-installable with bugzilla, and use /testopia on the server Updated specfile at same location: http://dmalcolm.fedorapeople.org/testopia.spec and SRPM at: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_4.tr2.0_RC1.fc10.src.rpm
Upstream released 2.0-RC2; have uploaded new spec to: http://dmalcolm.fedorapeople.org/testopia.spec and new SRPM to: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_5.tr2.0_RC2.fc10.src.rpm From the ChangeLog: * Wed Jun 25 2008 David Malcolm <dmalcolm> - 3.0.4-1_5.tr2.0_RC2 - 2.0-RC2; needs perl-JSON >= 2.10 - introduce -selftests subpackage to avoid having main package pull in all of the various dependencies of the upstream Testopia test suite - add perl(testopia::t::Constants) to the unwanted autogenerated requirements
Upstream released 2.0 final today; have uploaded new spec to: http://dmalcolm.fedorapeople.org/testopia.spec and new SRPM to: http://dmalcolm.fedorapeople.org/testopia-3.0.4-1_6.tr2.0.fc10.src.rpm From the %changelog: * Thu Jul 3 2008 David Malcolm <dmalcolm> - 3.0.4-1_6.tr2.0 - 2.0 - add import_example.csv to -doc subpackage
Lawyer says that, to the extent that ExtJS is licensed under GPLv3, there is a license incompatibility here because of GPLv3/MPL incompatibility, and thus the risk of violation of ExtJS's copyright. If LGPLv3 is the license, on the other hand, there is no compatibility problem. At one point, ExtJS was released under LGPLv3, but they've since changed to release under GPLv3. Unfortunately, the testopia code doesn't give any indication of when they pulled in their local copy of ExtJS, and all of the code refers back to the website for licensing, which says GPLv3, so we can only safely assume GPLv3. The options here are: 1. Find a checkout of ExtJS that we know was released under the LGPLv3 and replace what is in testopia with that. 2. Prove that the ExtJS bits in testopia were released under the LGPLv3 license. 3. Move testopia to use OpenExt (http://sourceforge.net/projects/openext/) 4. Don't put testopia in Fedora. This package is legal blocked until one of those outcomes is reached.
There is a discussion of licensing issues upstream at https://bugzilla.mozilla.org/show_bug.cgi?id=430138
A 6384971 byte zipfile is downloadable from the extjs website from this URL: http://extjs.com/deploy/ext-2.0.2.zip with this m5dsum: afb2619b828f8b6d947aff3c02340159 ext-2.0.2.zip I've uploaded the LICENSE.txt from that zipfile to https://bugzilla.redhat.com/attachment.cgi?id=311307 The md5sums of the extjs files in the testopia tarball don't all match that of the zipfile from extjs.com, so I don't think we can attain option 2 this way. Aiming for option 1, I've packaged the content of the zipfile up for review here: https://bugzilla.redhat.com/show_bug.cgi?id=454480 naming it "extjs-lgpl", since the license appears to be the LGPL, however, I am not a lawyer. I've tested removing the extjs files from testopia and replacing with a symlink to the extjs-lgpl payload, and it works, providing that I delete the .htacess file. We could add a Requires to the testopia package accordingly.
extjs.com have hinted at allowing an exception for FLOSS yet GPL-incompatible applications at http://extjs.com/blog/2008/04/27/open-source-license-exception-for-extensions/ In the hope that this reaches fruition I've filed a review request for the GPLv3 version of extjs as bug 455474.
There's a draft of the FLOSS exception available at http://extjs.com/products/floss-exception.php It looks like ExtJS 2.2 will be licensed like this (which looks fine to me, but IANAL)
Any chance that the current situation can be clarified here? Are we simply waiting for the draft document here: http://extjs.com/products/floss-exception.php ...to become final? What's the status?
Yep, but as I read that exception, it will only apply to new versions of ExtJS. So here's what we'd need to do: 1) Package the new ExtJS in Fedora (Testopia bundles ExtJS with the tarball, however, we don't allow private copies of libs in packages) 2) Either wait for upstream or help upstream port to the new version of ExtJS that this exception applies to (probably not hard - might not even need porting) After that, we can have Testopia! Spot - you never commented on the legal status of that exception, were it to become final - here's our opportunity to influence it :)
Note that ExtJS published a new version of their exception today over at http://extjs.com/products/floss-exception.php
Had a mini-conversation with spot on IRC today: (edited to show relevant parts, there was another conversation ongoing). 11:26 < jds2001> btw, extjs 2.2 was released on monday 11:26 < jds2001> with the FLOSS exception 11:26 < jds2001> need spot to opine on that :) 11:27 < spot> do not want 11:27 < spot> RH Legal says stay far far far away from ExtJS. Exception, or no exception. As a result of this, closing this review CANTFIX. However, it would be great if we could port this to use some other JavaScript library, since that's really the only problem with it.
Unfortunately, there are about 15kloc of JavaScript in there, which are heavily dependent on ExtJS. A port of Testopia to a different js lib would be a major engineering effort, and a fork from upstream.