Filelists and you

Here's how filelists work:

  1. Your package has a pkgdata/pkg_data_src.gpt file. This contains the build instructions for your package, listed as Build_Steps. For almost every java package, this just runs "ant -f build.xml"
  2. Your build.xml file does all the heavy lifting of your build. It installs everything straight into $GLOBUS_LOCATION. The filelist has nothing to do with your installation from source
  3. Your filelist is copied into the installation also, as part of your package's metadata
  4. When we make binaries of an installation, your filelist is referenced. Only files listed in your filelist are copied into your package's binaries.
  5. When someone installs from binaries, your source code (and build.xml file) are not present. Your binaries are simply untarred into the installation location.

Therefore! Here is how you keep GPT (and by proxy, me) happy:

When you add or remove files from your package's install image, *you* need to add or remove them from your filelist too. This includes stuff like .jar files, scripts that are created by etc/post-deploy.xml targets, client-config.wsdd files, what have you.

Buildbot has started keeping track of this stuff for your benefit. Go look at http://buildbot.globus.org/. It rebuilds HEAD everytime you check something in. If, after you check something in, a "bundle" step fails, go click on it. It will complain that some file was not found. If the file that wasn't found was something you removed, you also have to go remove it from your filelist. Otherwise GPT will be trying to add it to your binaries, but won't be able to.

Otherwise, just check the "filelist diff" stdio link every once in a while. If you see something with a minus sign in front of it that is part of your package (like "-/lib/common/super-important.jar"), that means that file was present in the source directory, but missing from your binaries. That means you need to go add it to your filelist so GPT knows to include it as part of your package.

If you have any questions, please let me know. Oh, and the reason this is so focused on Java is because GPT has hooks that look at Makefile.am files in C packages that usually let it construct filelists automatically. It has nothing to do with the relative merits of the languages.