From mike Tue Aug 23 09:00:42 2005 MIME-Version: 1.0 Envelope-to: mike@indexdata.com Delivery-date: Mon, 22 Aug 2005 23:17:55 +0200 Date: Mon, 22 Aug 2005 15:17:48 -0600 From: Chris Hubick Subject: CQL Java Distribution. To: Mike Taylor Cc: mike@indexdata.com, mike@z3950.org Organization: Athabasca University X-Spam-Checker-Version: SpamAssassin 3.0.0 (2004-09-13) on bagel.indexdata.dk X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.0.0 X-Spam-Level: X-StripMime: Non-text section removed by stripmime Content-type: text/plain Hi. First off, I have been using your CQL Java parser in my Metadata Repository software for a few years now, and it's great! Much Thanks! Second, sorry for CC spamming all the email addy's for you, I have no idea which still works and you use for this type of thing. Recently, we are moving our software into a production environment, which means, as per our internal policy, I need to create RPM's for all software involved (we use RedHat Enterprise Linux). So, as part of this effort, I sat down to create an RPM for CQL-Java. I *could* create an RPM spec file to just package up the lib/cql-java.jar file, but as part of good practice creating RPM's, the software should ideally be compiled from it's source into source and binary RPM's. This led to a number of problems, and my eventual overhaul of your project structure. Attached is a zip file which, compared to the original distribution, does the following: - Move from tar.gz to .zip for easier access on Windows. - Remove all binary and generated content from the distribution. - Refactor project directory structure to follow the more straightforward Maven 2 conventions: http://maven.apache.org/reference/conventions.html There is only one dir in the root of the source distribution, 'src', and ALL content is generated into subdirs of 'target'. The src dir is further subdivided into 'main' and 'test', which are further divided by file type (java, resources, scripts), as per Maven guidelines (these are great, and are the future - more projects using them every day). - Remove all Makefiles! Make is dead, everyone, and every IDE, uses Ant (http://ant.apache.org/) for building Java... - Include an Ant build.xml file. This should make it possible to build on Windows or Unix, etc. - Rename documentation file base-name's to closer model GNU standards: http://www.gnu.org/prep/standards/html_node/Releases.html - Add extensions to ALL files in the distribution. Make all shell scripts end in .sh, and Perl scripts in .pl. Text files as .txt. - Rename all scripts to use lowercase unix naming, and prefix with cql-java, to avoid conflicts when installed in global system dirs (/bin). - Move to standard X.Y.Z-R three digit version-release versioning, to be more inline with every other package in the world. - Include a specfile to build RPMs. This uses requirements and standards laid out by JPackage.org: http://www.jpackage.org/ - which will be required by the RPM. You get three RPM's, cql-java, cql-java-javadoc, and cql-java-scripts - which install to all the standard JPackage and Filesystem Hierarchy Standard locations. - Rewrite Parser/Lexer/Generator scripts to use JPackage utils and conventions. (should work on multiple distros, using multiple Java VM's, and follow global installation guidelines now, etc). - Modify source code to fix many trivial Eclipse compiler warnings about non-static variable references and unused imports. - Include .cvsignore file to ignore Eclipse projects files and the target dir. Problems: - I only use the Parser Java classes in my code, and never mess with any of the test infrastructure code/scripts. The test files were all renamed and put in better Maven'ized places, but this broke it all in a big BIG way. These should either not be included in the general distribution, or rewritten to create and run tests in a system standard location-independent non-root fashion. This is non-trivial, or I would have done it :) - The Parser (and other) classes main() functions are written in such a way as to not be tolerant of other command line arguments to the JVM, such as -classpath (which is required by the way JPackage does things). This is bad. It means they don't work right with the rewritten scripts. The scripts are correct, but the Java should be fixed. The scripts/code launch and work correctly with no arguments. I never use the command line stuff, so I didn't bother to do this either. The BIG question: Do you even exist and work on this stuff anymore (last update was years ago:), and if so, do you care to integrate any of this work into the z3950.org distribution??? (I know I was quite disruptive in my changes) If not, I may just rewrite the spec to install the binary jar from your standard dist, and be done with it. Thanks :) -- Chris Hubick mailto:chrish@athabascau.ca http://adlib.athabascau.ca/~hubick/ __ This communication is intended for the use of the recipient to whom it is addressed, and may contain confidential, personal, and or privileged information. Please contact us immediately if you are not the intended recipient of this communication, and do not copy, distribute, or take action relying on it. Any communications received in error, or subsequent reply, should be deleted or destroyed. --- --- StripMime Report -- processed MIME parts --- multipart/mixed text/plain (text body -- kept) application/zip --- From mike@miketaylor.org.uk Mon Aug 29 16:45:11 2005 Date: Mon, 29 Aug 2005 16:45:01 +0100 From: Mike Taylor To: chrish@athabascau.ca In-reply-to: message from Chris Hubick on Mon, 22 Aug 2005 15:17:48 -0600 Subject: Re: CQL Java Distribution. > Date: Mon, 22 Aug 2005 15:17:48 -0600 > From: Chris Hubick > > Hi. Hi, Chris, sorry for the delay in replying. We're in the middle of a complicated house-move, so I am less in contact that usual. > First off, I have been using your CQL Java parser in my Metadata > Repository software for a few years now, and it's great! Much > Thanks! Thank _you_. It's always nice to read this kind of thing. What is your software called? I don't think we've heard of it, but if it support SRW/U (as I guess it does if you're using CQL), then it has the nice property of Just Working with our metasearch engine, Keystone -- a fact that may be to both of our advantages to mention to possible customers. > Second, sorry for CC spamming all the email addy's for you, I have > no idea which still works and you use for this type of thing. No problem -- they all worked :-) > Recently, we are moving our software into a production environment, > which means, as per our internal policy, I need to create RPM's for > all software involved (we use RedHat Enterprise Linux). So, as part > of this effort, I sat down to create an RPM for CQL-Java. That's a nice development. Thanks. > I *could* create an RPM spec file to just package up the > lib/cql-java.jar file, but as part of good practice creating RPM's, > the software should ideally be compiled from it's source into source > and binary RPM's. This led to a number of problems, and my eventual > overhaul of your project structure. Attached is a zip file which, > compared to the original distribution, does the following: > [snip snip snippety snap] > The BIG question: Do you even exist and work on this stuff anymore > (last update was years ago:), and if so, do you care to integrate > any of this work into the z3950.org distribution??? (I know I was > quite disruptive in my changes) Wow, that is a LOT of changes. To answer your questions: yes, I exist, but I don't really work with Java any more (though I hope to have a smallish Java project come in RSN). I don't work on this stuff right now, but if the smallish job comes in as it promises to, then I will. I'm afraid I just don't have time to make changes of this volume to a project that I'm (currently) not being paid for. I hate to discard what you've done when it was clearly so much work, but I just not in a position to do the additional work necessary to understand it. Sorry. > If not, I may just rewrite the spec to install the binary jar from > your standard dist, and be done with it. If you can bear it, I think that might be the best solution. _/|_ ___________________________________________________________________ /o ) \/ Mike Taylor http://www.miketaylor.org.uk )_v__/\ "But I've _tested_ this code! How can it go wrong?" -- Chris Martin.