Spec URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0.rc9-2.fc14.src.rpm Description: FreeMind is a premier free mind-mapping software written in Java. The recent development has hopefully turned it into high productivity tool. So you want to write a completely new metaphysics? Why don't you use FreeMind? You have a tool at hand that remarkably resembles the tray slips of Robert Pirsig, described in his sequel to Zen and the Art of Motorcycle Maintenance called Lila. Do you want to refactor your essays in a similar way you would refactor software? Or do you want to keep personal knowledge base, which is easy to manage? Why don't you try FreeMind? Do you want to prioritize, know where you are, where you've been and where you are heading, as Stephen Covey would advise you? Have you tried FreeMind to keep track of all the things that are needed for that?
Spec URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0.rc9-3.fc14.src.rpm Made an extra sub-directory for all freemind jars.
Ok just finished some work: Spec URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-4.rc10.fc14.src.rpm I removed the latex plugin and the dependency on HotEqn. Also I finally made the svg export plugin work. So perhaps someone is willing to do the review. I would really appreciate any hints to improve the package... Kind regards, Johannes
I have a quick glance. There are some things to fix: * The release in the Release tag and in the Changelog do not match. * The release scheme used is wrong: https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Pre-Release_packages * You must have a 'Requires: hicolor-icon-theme', which owns the %{_datadir}/icons/hicolor directory. * Since the .desktop file has a MimeType key, and you are installing icons in %{_datadir}/icons/hicolor, you need to use the appropriate scriptlets. See: https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#desktop-database and https://fedoraproject.org/wiki/Packaging/ScriptletSnippets#GTK.2B_icon_cache * You are missing Java minimum BuildRequires and Requires: https://fedoraproject.org/wiki/Packaging:Java#BuildRequires_and_Requires * Why the package is not marked as NoArch? * HotEqn is still required in the wrapper script.
Ok I hope that I've fixed all problems so far. Sorry for making such basic mistakes, I was busy getting all those deps working. ;-) I don't know what you meant with the wrapper script. If this is the *.sh file I just removed HotEqn from the classpath. I am not sure if I'll need to add more patches to add the right class path in every build*.xml. I'll try to figure it out after my exams. SPEC URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.1.rc10.fc14.src.rpm
I'll do the review since I like freemind :-)
Few notes before I start official review: * Group should probably be Application/Productivity * Package doesn't build in rawhide now (jakarta-* packages renamed to apache-*) * Instead of patching paths in build.xml files, use build-jar-repository * FYI: you can use "attr(755,root,root) binfile" instead of chmodding script during install * From spec file it seems you don't own %{_javadir}/%{name} (which you should). So instead of all those separate files in %files section why not simply do: %{_javadir}/%{name} * You mix RPM_BUILD_ROOT and buildroot But I'd say the package looks very good otherwise and with few minor modifications we'll have freemind in Fedora. (yay!)
Ok I tried to switch over to the build-jar-repository method but wasn't fully successful. The package builds just fine on my local f14 machine but not in rawhide even with apache-* instead of jakarta-*. I'm not sure what's causing this. SPEC URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.2.rc10.fc14.src.rpm
Hmm, right now it fails to build in mock/rawhide with: build: [echo] Plugin plugins/help. [javac] Compiling 1 source file to /builddir/build/BUILD/bin/classes build: [echo] Plugin plugins/script. [javac] Compiling 6 source files to /builddir/build/BUILD/bin/classes [javac] Note: /builddir/build/BUILD/freemind/plugins/script/ScriptingSecurityManager.java uses or overrides a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. build: [echo] Plugin plugins/svg. [javac] Compiling 3 source files to /builddir/build/BUILD/bin/classes [javac] /builddir/build/BUILD/freemind/plugins/svg/ExportPdf.java:76: cannot access org.apache.avalon.framework.configuration.Configurable [javac] class file for org.apache.avalon.framework.configuration.Configurable not found [javac] pdfTranscoder.addTranscodingHint(PDFTranscoder.KEY_MAX_HEIGHT, new Float(19200)); [javac] ^ [javac] 1 error BUILD FAILED /builddir/build/BUILD/freemind/build.xml:162: The following error occurred while executing this line: /builddir/build/BUILD/freemind/plugins/build.xml:33: The following error occurred while executing this line: /builddir/build/BUILD/freemind/plugins/build.xml:17: The following error occurred while executing this line: /builddir/build/BUILD/freemind/plugins/build_import.xml:10: Compile failed; see the compiler error output for details. Total time: 20 seconds In the meantime...there are new packaging guidelines, so no need for %clean section and rm -rf at the beginning of %install section. Also the jar files in %{_javadir} no longer need -%{version} in filename (so just install jar as unversioned). Same thing for javadoc directory. One more suggestion (not needed, just thought to mention this): When you are converting icons, it might be good idea to do it in a "for" cycle over "16 32 48" :-) I'd say if this was building right now I'd probably give you a + right away. Nice packaging considering how big freemind is and how many BRs it has. I really like that you commented on reasons for symlinking and basically any non-standard thing you had to do in the spec file. When you fix the build, I'll do the official review.
I guess that build can be fixed just by adding avalon-framework to classpath. I guess you'll need that patch anyway in the end :-) Might as well consider removing versions from classpaths so you won't have to rename symlinks created by build-jar-repository (completely up to you of course)
Ok, managed to build it in rawhide today... :-) Your hint with avalon-framework helped a lot. I will try to polish the spec more and make it as good as possible before you start reviewing. Hope this is ok! ;-) Thanks for your positive feedback!
I've found some time today and tried to fix everything. SPEC URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.3.rc10.fc14.src.rpm I also started a koji build but the weird thing is that it won't build on koji but builds just fine in my local mock environment: http://koji.fedoraproject.org/koji/taskinfo?taskID=2614142 rpmlint freemind.spec 0 packages and 1 specfiles checked; 0 errors, 0 warnings. mock -r fedora-rawhide-x86_64 rebuild /home/johannes/rpmbuild/SRPMS/freemind-0.9.0-0.3.rc10.fc14.src.rpm INFO: mock.py version 1.1.6 starting... State Changed: init plugins INFO: selinux disabled State Changed: start INFO: Start(/home/johannes/rpmbuild/SRPMS/freemind-0.9.0-0.3.rc10.fc14.src.rpm) Config(fedora-rawhide-x86_64) State Changed: lock buildroot State Changed: clean INFO: chroot (/var/lib/mock/fedora-rawhide-x86_64) unlocked and deleted State Changed: init State Changed: lock buildroot Mock Version: 1.1.6 INFO: Mock Version: 1.1.6 INFO: enabled root cache State Changed: unpacking root cache INFO: enabled yum cache State Changed: cleaning yum metadata INFO: enabled ccache State Changed: running yum State Changed: setup State Changed: build INFO: Done(/home/johannes/rpmbuild/SRPMS/freemind-0.9.0-0.3.rc10.fc14.src.rpm) Config(fedora-rawhide-x86_64) 6 minutes 48 seconds INFO: Results and/or logs in: /var/lib/mock/fedora-rawhide-x86_64/result
Package Review ============== Key: - = N/A x = Check ! = Problem ? = Not evaluated === REQUIRED ITEMS === [!] Rpmlint output: freemind.noarch: W: spelling-error %description -l en_US refactor -> redactor, reactor, refractor freemind.noarch: E: non-standard-executable-perm /usr/share/freemind/freemind.sh 0744L freemind.noarch: W: no-manual-page-for-binary freemind freemind.noarch: W: class-path-in-manifest /usr/share/java/freemind/freemind.jar freemind.noarch: W: class-path-in-manifest /usr/share/freemind/lib/freemind.jar freemind.src: W: spelling-error %description -l en_US refactor -> redactor, reactor, refractor freemind.src: W: strange-permission freemind.sh 0755L freemind-javadoc.noarch: W: spelling-error Summary(en_US) Javadocs -> Java docs, Java-docs, Javanese 3 packages and 0 specfiles checked; 1 errors, 7 warnings. /usr/share/freemind directory contains several unnecessary files (*bat, *sh, even *exe) and more importantly jar files instead of symlinks to external jars in /usr/share/java. These will have to be replaced. Plus there is doc/javadoc subdirectory (that should not exist in main package obviously). class-path-in-manifest also needs to be fixed by removing Class-Path from MANIFEST.MF [x] Package is named according to the Package Naming Guidelines[1]. [x] Spec file name must match the base package name, in the format %{name}.spec. [x] Package meets the Packaging Guidelines[2]. [x] Package successfully compiles and builds into binary rpms. [!] Buildroot definition is not present Buildroot is no longer needed on Fedoras [x] Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines[3,4]. [x] License field in the package spec file matches the actual license. License type: GPLv2 and MIT [!] If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package is included in %doc. You include 'license' file, but forgot to include LICENSE.MIT from accessories [x] All independent sub-packages have license of their own [x] Spec file is legible and written in American English. [x] Sources used to build the package matches the upstream source, as provided in the spec URL. MD5SUM this package : MD5SUM upstream package: [x] All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines[5]. [x] Package must own all directories that it creates. [x] Package requires other packages for directories it uses. [x] Package does not contain duplicates in %files. [!] Permissions on files are set properly. freemind.sh should be chmodded to 644 (you are stting it to +x during install anyway) [!] Package does NOT have a %clean section which contains rm -rf %{buildroot} (or $RPM_BUILD_ROOT). (not needed anymore) You don't need %clean section at all on recent Fedoras [x] Package consistently uses macros (no %{buildroot} and $RPM_BUILD_ROOT mixing) [x] Package contains code, or permissable content. [x] Fully versioned dependency in subpackages, if present. [x] Package contains a properly installed %{name}.desktop file if it is a GUI application. [x] Package does not own files or directories owned by other packages. [x] Javadoc documentation files are generated and included in -javadoc subpackage just need to be removed from main package.. [!] Javadocs are placed in %{_javadocdir}/%{name} (no -%{version} symlinks) javadocs should not be versioned anymore [x] Packages have proper BuildRequires/Requires on jpackage-utils [x] Javadoc subpackages have Require: jpackage-utils You should remove Requires on main package though. [-] Package uses %global not %define [-] If package uses tarball from VCS include comment how to re-create that tarball (svn export URL, git clone URL, ...) [x] If source tarball includes bundled jar/class files these need to be removed prior to building [x] All filenames in rpm packages must be valid UTF-8. [x] Jar files are installed to %{_javadir}/%{name}.jar (see [6] for details) [-] If package contains pom.xml files install it (including depmaps) even when building with ant [-] pom files has correct add_to_maven_depmap call which resolves to the pom file (use "JPP." and "JPP-" correctly) === Other suggestions === [x] If possible use upstream build method (maven/ant/javac) [x] Avoid having BuildRequires on exact NVR unless necessary [x] Package has BuildArch: noarch (if possible) [x] Latest version is packaged. [x] Reviewer should test that the package builds in mock. Tested on: fedora-rawhide-x86_64 [1] https://fedoraproject.org/wiki/Packaging:NamingGuidelines [2] https://fedoraproject.org/wiki/Packaging:Guidelines [3] https://fedoraproject.org/wiki/Packaging:LicensingGuidelines [4] https://fedoraproject.org/wiki/Licensing:Main [5] https://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2 [6] https://fedoraproject.org/wiki/Packaging:Java#Filenames
Ok I tried to fix everything, it was more work because I needed to copy /bin/dist selectively and used symlinks where needed. But I managed to reduce the size of the final rpm enormously by removing unnecessary files and folders. What I don't understand is the point of changing the permission of the sh file because it was part of those files I removed anyway or did you mean the executable in /usr/bin? SPEC URL: http://hannes.fedorapeople.org/freemind/freemind.spec SRPM URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.4.rc10.fc14.src.rpm Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=2619462 still fails
Now we have: freemind.noarch: W: wrong-file-end-of-line-encoding /usr/share/doc/freemind-0.9.0/LICENSE.MI sed -i 's/\r//' should do the trick... freemind.src: W: strange-permission freemind.sh 0755L that's what I meant with those permissions. Your local freemind.sh is 0755 and it's included like that in srpm. There should be no executable in srpm, that's why rpmlint complains. freemind.src:14: W: mixed-use-of-spaces-and-tabs (spaces: line 14, tab: line 1) Also quite obvious I guess. I suggest to set-up your editor :-) Dangling symlinks can't be avoided, no problem there. Plus there is the issue of: /usr/bin/build-classpath: error: Could not find jibx/run-1.2.2 Java extension for this JVM /usr/bin/build-classpath: error: Some specified jars were not found This is caused by you missing jibx in Requires and using exact versions in freemind.sh BASE_JARS. Also when doing build-jar-repository. Instead of: build-jar-repository -p -s jibx bcel commons-logging log4j xpp3 jibx/bind-1.2.2 jibx/extras-1.2.2 jibx/run-1.2.2 jaxme/jaxmejs do: build-jar-repository -p -s jibx bcel commons-logging log4j xpp3 jibx/bind jibx/extras jibx/run jaxme/jaxmejs One small (cosmetic) detail: It's best to keep line width under 80 chars, so that one long build-jar-repository can be done like this: build-jar-repository -p -s . batik/batik-awt-util batik/batik-bridge \ batik/batik-css batik/batik-dom batik/batik-extension \ .... ....
Ok, now I just added jibx as requirement and tried to fix also the other things. Hope this is everything. :-) SRPM-URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.5.rc10.fc14.src.rpm SPEC-URL: http://hannes.fedorapeople.org/freemind/freemind.spec rpmlint output: rpmlint ../RPMS/noarch/freemind-0.9.0-0.5.rc10.fc14.noarch.rpm freemind.noarch: W: spelling-error %description -l en_US refactor -> redactor, reactor, refractor freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-gvt.jar /usr/share/java/batik/batik-gvt.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/SimplyHTML/gnu-regexp-1.1.4.jar /usr/share/java/gnu-regexp-1.1.4.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/commons-lang-2.0.jar /usr/share/java/commons-lang.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-ext.jar /usr/share/java/batik/batik-ext.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/junit.jar /usr/share/java/junit.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-gui-util.jar /usr/share/java/batik/batik-gui-util.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-script.jar /usr/share/java/batik/batik-script.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-awt-util.jar /usr/share/java/batik/batik-awt-util.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-bridge.jar /usr/share/java/batik/batik-bridge.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/forms-1.0.5.jar /usr/share/java/jgoodies-forms.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-extension.jar /usr/share/java/batik/batik-extension.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-swing.jar /usr/share/java/batik/batik-swing.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-dom.jar /usr/share/java/batik/batik-dom.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/avalon-framework.jar /usr/share/java/avalon-framework.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/bcel.jar /usr/share/java/bcel.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-xml.jar /usr/share/java/batik/batik-xml.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jarbundler-2.0.0.jar /usr/share/java/jarbundler.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-transcoder.jar /usr/share/java/batik/batik-transcoder.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/xpp3.jar /usr/share/java/xpp3.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/commons-logging-1.0.4.jar /usr/share/java/commons-logging.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/xml-apis.jar /usr/share/java/xml-commons-apis-1.4.01.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-parser.jar /usr/share/java/batik/batik-parser.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-util.jar /usr/share/java/batik/batik-util.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/script/groovy-all-1.5.6.jar /usr/share/java/groovy.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/SimplyHTML/SimplyHTML.jar /usr/share/java/SimplyHTML/SimplyHTML.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/jaxme-js-0.3.jar /usr/share/java/jaxme/jaxmejs.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/pdf-transcoder.jar /usr/share/java/pdf-transcoder.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-svg-dom.jar /usr/share/java/batik/batik-svg-dom.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/jibx-bind.jar /usr/share/java/jibx/bind-1.2.2.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/help/jhall.jar /usr/share/java/javahelp2.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-css.jar /usr/share/java/batik/batik-css.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-squiggle.jar /usr/share/java/batik-squiggle.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/xerces_2_5_0.jar /usr/share/java/xerces-j2.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/log4j-1.2.8.jar /usr/share/java/log4j.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/js.jar /usr/share/java/js.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/plugins/svg/batik-svggen.jar /usr/share/java/batik/batik-svggen.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/jibx-run.jar /usr/share/java/jibx/run-1.2.2.jar freemind.noarch: W: dangling-symlink /usr/share/freemind/lib/jibx/jibx-extras.jar /usr/share/java/jibx/extras-1.2.2.jar freemind.noarch: W: no-manual-page-for-binary freemind freemind.noarch: W: class-path-in-manifest /usr/share/java/freemind/freemind.jar 1 packages and 0 specfiles checked; 0 errors, 41 warnings. Do you have any idea why the koji build fails? I mean this will be a showstopper if I try to get it into the repos. http://koji.fedoraproject.org/koji/taskinfo?taskID=2628676
Ok, once again ;-) SRPM-URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.6.rc10.fc14.src.rpm SPEC-URL: http://hannes.fedorapeople.org/freemind/freemind.spec It finally builds in koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=2628703 Yeah!
Update to recent upstream version: SRPM-URL: http://hannes.fedorapeople.org/freemind/freemind-0.9.0-0.7.rc11.fc14.src.rpm SPEC-URL: http://hannes.fedorapeople.org/freemind/freemind.spec
I've looked at the package and see nothing that would prevent me from giving you a "+" :-) A few notes though (for future): * You have most things nicely aligned, but few lines are not (Name, Version, Buildarch...) * you are doing: mv jibx/jibxbind-1.2.2.jar jibx/jibx-bind.jar a more error-resilient form would be: mv jibx/jibxbind-*.jar jibx/jibx-bind.jar * you still have xml-commons-apis-1.4.01 (versioned) in build-jar-repository All of these are just small things that can be fixed with next package update. Thanks for good work on this! APPROVED
Package Name: freemind Short Description: Free mind mapping software Owners: hannes Branches: f14 f13
You seem to have deviated from the request format given in http://fedoraproject.org/wiki/Package_SCM_admin_requests Please submit a proper request and re-raise the fedora-cvs flag.
New Package SCM Request ======================= Package Name: freemind Short Description: Free mind mapping software Owners: hannes Branches: f14 f13
*** Bug 428413 has been marked as a duplicate of this bug. ***
Great work Johannes, I was trying to package freemind about half year ago but ended up on building JiBX.
Git done (by process-git-requests).
build in rawhide: http://koji.fedoraproject.org/koji/taskinfo?taskID=2634828
freemind-0.9.0-0.7.rc11.fc13 has been submitted as an update for Fedora 13. https://admin.fedoraproject.org/updates/freemind-0.9.0-0.7.rc11.fc13
freemind-0.9.0-0.7.rc11.fc14 has been submitted as an update for Fedora 14. https://admin.fedoraproject.org/updates/freemind-0.9.0-0.7.rc11.fc14
freemind-0.9.0-0.7.rc11.fc14 has been pushed to the Fedora 14 stable repository. If problems still persist, please make note of it in this bug report.
freemind-0.9.0-0.7.rc11.fc13 has been pushed to the Fedora 13 stable repository. If problems still persist, please make note of it in this bug report.