Preparation (do once) -- Linux * work in your research partition (create a distribution version rather than using the normal gsdl working version), not home directory. * cvs checkout -P gsdl (make sure $CVSROOT and $CVS_RSH are set) * Run source setup.bash, in gsdl directory * Set version number (GSDL_VERSION) in lib/gsdlconf.h * Set version number for VERSION file near end of Install.sh, and commit * Make "dist" directory as a sibling (not child!!) of gsdl * cvs checkout -P gli, in gsdl directory * Update AboutDialog.Date in classes/dictionary*.properties, and commit o Get month strings from within the file (Dates.*) * Set PROGRAM_VERSION in src/org/greenstone/gatherer/util/Utility.java, and commit * Set Configuration version in classes/xml/config.xml and configRemote.xml, and commit * Change version numbers and dates in /home/nzdl/gsdl-docs/README*.TXT o Get month strings from the files /home/nzdl/for-distributions/dates.* * Change version number in /home/nzdl/gsdl-docs/Support.htm * Check PDF manuals are in /home/nzdl/gsdl-docs/docs * Copy /home/nzdl/for-distributions/bin/windows to become $GSDLHOME/bin/windows * In $GSDLHOME: * Add "-static" to LDFLAGS in configure.in (LDFLAGS=-static). no space!!! * Run autoconf configure.in > configure * Run ./configure * Fix up non-statically linked packages by adding "-static" to LDFLAGS in: o packages/expat/expat-1.95.8/Makefile o packages/isis-gdl/Makefile o packages/pdftohtml/pdftohtml_gs/src/Makefile o packages/wv/wv-gs/Makefile o packages/xlhtml/xlhtml-0.4.9.0/xlhtml/Makefile o packages/xlhtml/xlhtml-0.4.9.0/ppthtml/Makefile * Add "-static" to the end of the "rtftohtml" rule in packages/rtftohtml/rtftohtml_src/Makefile look for this line and add to the end: rtftohtml$(EXEEXT): $(LIBRARIES) $(OBJS) $(CC) $(CFLAGS) $(OBJS) $(LIBRARIES) -o rtftohtml$(EXEEXT) * Using an existing up-to-date Greenstone installation, build the demo collection, and copy to collect/demo * Get the Greenstone Installshield project: o Copy /home/nzdl/for-distributions/installers/gsdl directory to somewhere on your research partition. The parent directory is the installer directory mentioned below. o Edit the /gsdl/Greenstone Digital Library Software.uip file and change any absolute paths as needed. * Edit the paths in the installer: edit /home/nzdl/installshieldX/alias.properties o Set GSDL_DISTRIBUTION_SOURCE to .../dist/gsdl-x.xx-cdrom (dist is the directory you created earlier) o Set GSDL_WEB_DISTRIBUTION_EXTRAS to .../dist/gsdl-x.xx-unix o Set INSTALLERS_DIR to the installer directory from above * Run Installshield X (/home/nzdl/installshieldX/InstallShieldUniversal) o Using "open existing project", open /gsdl/Greenstone Digital Library Software.uip o Set Installation Information -> General Information: Version property o Change the version numbers for Text_GSDL_Version in Additional Tools -> String Table -> MyStrings. Do this for English, French, Spanish, Russian. (Could this use the Version property ???) * Save and exit for now. [edit] UNESCO cdroms only * Core languages are English (en), French (fr), Spanish (es) and Russian (ru). * Edit $GSDLHOME/collect/demo/etc/collect.cfg and remove non-core language strings o Overwrite /home/nzdl/for-distributions/collect/demo/etc/collect.cfg and commit if different * Edit $GSDLHOME/gli/classes/xml/languages.xml and remove mds="true" and gli="true" from non-core languages * Overwrite /home/nzdl/for-distributions/gli/classes/xml/languages.xml and commit if different * Check the /home/nzdl/for-distributions/etc/main.cfg against gsdl/etc/main.cfg - update the one in /home/nzdl if needed. (should be the same except language lines and language macro files commented out.) * Note: if you subsequently want to create a normal release, you need to delete $GSDLHOME/collect/demo/etc/collect.cfg and cvs update it to get the other languages back. [edit] Preparation (do once) -- Windows (kohekohe) * Run CMD.exe * Run H:\setupenv.bat, or (equivalently): o Set PATH to include CVS and SSH executables (H:\bin) o Set CVSROOT=:ext:@cvs.scms.waikato.ac.nz:/usr/local/global-cvs/gsdl-src o Set CVS_RSH=ssh o Set EDITOR=edit * cvs checkout -P gsdl (requires about 120MB once compiled) * Set version number (GSDL_VERSION) in gsdl\lib\gsdlconf.h * Unzip the Crypt, Expat, GDBM and STLPort packages in gsdl\packages\windows * cvs checkout -P winbin * Copy winbin\bin to become gsdl\bin\windows (i.e. Copy the bin directory from winbin into gsdl\bin\ and rename it to windows) * Delete winbin directory [edit] Preparation (do once) -- Mac OS X (shuttle) * Start a Terminal (Finder: Go -> Utilites) * export CVSROOT=:ext:@cvs.scms.waikato.ac.nz:/usr/local/global-cvs/gsdl-src * export CVS_RSH=ssh * cvs checkout -P gsdl * Set version number (GSDL_VERSION) in gsdl/lib/gsdlconf.h * In the gsdl directory, run ./configure --with-gdbm= (gdbm dir e.g. /Users/kjdon/gdbm-1.8.3) * In the following Makefiles, replace "-L/Users/kjdon/gdbm-1.8.3/lib -lgdbm" with "/Users/kjdon/gdbm-1.8.3/lib/libgdbm.a" in the specified variable o src/recpt, GDBM_LIBS o src/oaiservr, GDBM_LIBS o src/db2txt, LIBS o src/txt2db, LIBS * In the following Makefiles, replace "-L../../packages/expat/lib -lexpat" with "../../packages/expat/lib/libexpat.a" o src/recpt, LC_LIBS o src/oaiservr, LIBS * Create the Mac OS version of the gdbm database file for the demo collection (demo.bdb). Either: o Using an existing up-to-date Greenstone installation, build the demo collection, and copy index/text/demo.bdb to gsdl/collect/demo/index/text (Linux) o Or on Linux, in the demo collection, run "db2txt index/text/demo.ldb > out.txt", copy the out.txt file to the Mac, and run "txt2db demo.bdb < out.txt", then copy the demo.bdb file to gsdl/collect/demo/index/text/demo.dbd on Linux. [edit] Building (repeat as often as necessary) -- Mac OS X (shuttle) * cvs update -dP, in gsdl directory (retrieve any new changes) * Run make * Run make install * In cgi-bin, run library to check for segfaults, then copy it and oaiserver into ../bin/darwin * Run otool -L bin/darwin/* to check that no executables (db2txt, library, oaiserver, txt2db) are linked to local packages. (Its ok to link against libraries in /usr/lib/.) * Run strip bin/darwin/* * Copy all files in bin/darwin to $GSDLHOME/bin/darwin (Linux) [edit] Building (repeat as often as necessary) -- Windows (kohekohe) * cvs update -dP, in gsdl directory (retrieve any new changes) * If Windows 3.1 support is absolutely not needed, Greenstone can be compiled with VC6: o (Errors compiling httpreq.c are due to VC++ -> use a different version, eg. 12.00.8804) C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT nmake /f win32.mak nmake /f win32.mak LOCAL_LIBRARY=1 * Otherwise, compile Greenstone with VC4 (using the STLPort package): C:\MSDEV\bin\VCVARS32.BAT nmake /f win32.mak GSDL_VC4=1 nmake /f win32.mak GSDL_VC4=1 LOCAL_LIBRARY=1 * Move server.exe, cgi-bin\library.exe and cgi-bin\oaiserver.exe to bin\windows * Copy all files in bin\windows to $GSDLHOME/bin/windows (Linux) [edit] Building (repeat as often as necessary) -- Linux * cvs update -dP, in gsdl directory (retrieve any new changes) * Run make (from top level gsdl directory) * In packages/wget/wget-1.9/src, delete wget, run make, rerun gcc command with -static at end (and ignore the warnings) * Run make install (from top level gsdl directory) * In cgi-bin, run library to check for segfaults, then copy it and oaiserver into ../bin/linux * Check all executables are statically-linked: ldd bin/linux/* (ignore mgquery_old) * Strip all executables: strip bin/linux/* * GLI will be compiled by create_distributions.pl (it runs makegli.sh). But you need to make sure that it compiles with Java 1.5. If you do this in your release version, run clean.sh afterwards. * In the gsdl directory, run 'source setup.bash' if it hasn't already been run. * In the dist directory, remove any existing folders * Run /home/nzdl/for-distributions/bin/script/create_distributions.pl -version_num x.xx -output_dir `pwd` -no_cols o Before running this the first time, make sure you have done the Mac and Windows building at least once. o IMPORTANT: if you are generating a UNESCO CDROM release, use the -unesco option. This uses modified languages.xml, main.cfg, demo collect.cfg with only 4 languages o You can use the -NoChangeLog option while testing so the changelog is not generated each time. o This checks out greenstone into /tmp/gsdl and copies it over to ...dist. If you kill the process before it has been copied, you'll need to delete this directory, otherwise it will have a hissy fit next time. o NOTE: if you need to remake the installer with a couple of modified files, but not with all the source as it currently is: + Change the tag on the modified files: cvs tag -F tagname + Edit create_distributions.pl: want to export from the tag, not from 1 second ago. (x2, gsdl and gli) * Check no distribution contains non-core language interfaces (macrofiles, images) [edit] Web release [edit] Linux and MacOSx web distributions * Run Installshield X, open Greenstone Digital Library Software.uip o Media -> Releases: select Linux Web Distribution and Build o Media -> Releases: select Mac OS X Web Distribution and Build * Close Installshield X * Run finish-linux.sh linux-web (in /gsdl) * Rename linux-web/disk1 folder to linux-web/gsdl-x.xx-unix * Tar and gzip the gsdl-x.xx-unix folder as gsdl-x.xx-unix.tar.gz (tar czvf gsdl-x.xx-unix.tar.gz gsdl-x.xx-unix/) * Run finish-macOSx.sh macOSx-web * Rename macOSx-web/disk1 folder to macOSx-web/gsdl-x.xx-macOSx * Tar and gzip the gsdl-x.xx-macOSx folder as gsdl-x.xx-macOSx.tar.gz [edit] Windows web distribution * Edit Greenstone Digital Library Software.uip, replace all "storedAs">1< with "storedAs">0< (in emacs, Alt-X query-replace, then ! for all) * Run Installshield X, open Greenstone Digital Library Software.uip o Media -> Releases: select Windows Web Distribution and Build * Close Installshield X * Restore old Greenstone Digital Library Software.uip file * Rename the windows-web/disk1/setupwin32.exe file to gsdl-x.xx-win32.exe [edit] Source distribution * In the dist directory, tar and gzip the gsdl-x.xx-src directory as gsdl-x.xx-src.tar.gz [edit] CD-ROM release [edit] Linux and Windows CD-ROM distributions * Run Installshield X, open Greenstone Digital Library Software.uip o Media -> Releases: select Linux CD-ROM Distribution and Build o Media -> Releases: select Windows CD-ROM Distribution and Build * Close Installshield X * Run finish-windows.sh windows-cd * Run merge-cds.pl * Run finish-linux.sh merged-cd * Zip up contents of merged-cd/disk1 directory, copy to Windows, then write to CD-ROM o Don't forget any extra files for the CD (cd-files) + which are for tutorial versions, which for all versions?? packages/ImageMagick-5.5.7-16.tar.gz ImageMagick-5.5.7-Q8-windows-dll.exe j2re-1_4_2_07-linux-i586.bin j2re-1_4_2_07-windows-i586-p.exe extras/ ?? Greenstone Language pack/glp-x.xx-linux.bin glp-x.xx-win32.exe tutorial/sample_files Greenstone tutorial exercises.pdf workshop_1day_jun2004 workshop_4day_sep2005 workshop_files [edit] All * Test ad nauseum! * On windows, install into somewhere with spaces in the path [edit] Finalisation (do once) -- CD-ROM Release * Write data to CD o Use Sonic RecordNow DX, but don't use the Wizard. Click the Data icon at the top. o Under Options, for CD: + Recording type select "Disc At Once (Closed)" - this finalises the CD. + Make sure CD-ROMs are created as Joliet CD-ROMs (this should be the default) o Set the volume label for the CD: GSDL x.xx ??? o Add in any extra stuff required (cd-files folder) [edit] UNESCO CDs * To make an ISO image: ensure CD is finalized when written (see above) o On Linux: put the cd in the drive, then run "dd if=/dev/cdrom of=cd.iso" o Rename cd.iso to whatever is appropriate: + unesco-greenstone-cd-2006.iso o Zip up the iso image and upload to gsdl@sadl.uleth.ca:/var/ftp/pub/unesco * Downloading instructions for unesco: FTP site: sadl.uleth.ca Username: anonymous Password: your e-mail address Filename: pub/unesco/unesco-greenstone-cd-2006.iso.zip [edit] Finalisation (do once) -- Web Release * Upload binaries and ChangeLog to sourceforges ftp site: o ftp username is "anonymous", password is your e-mail address o rename the ChangeLog created by create_distributions (dist/gsdl-x.xx-src/gsdl/ChangeLog) to gsdl-x.xx-ChangeLog.txt ftp upload.sourceforge.net ftp> cd incoming ftp> bin ftp> put gsdl-x.xx-unix.tar.gz ftp> put gsdl-x.xx-win32.exe ftp> put gsdl-x.xx-macOSx.tar.gz ftp> put gsdl-x.xx-src.tar.gz ftp> put gsdl-x.xx-ChangeLog.txt * Add releases to sourceforge: o login, go to the Greenstone project (http://sourceforge.net/projects/greenstone), select Admin, select File Releases o Click on add releases for the appropriate one. o Release name is the version number e.g. 2.60. For unstable releases, add (Beta), eg 2.61 (Beta) o Type in release notes (or upload release notes file), check 'preserve preformat', and click Submit o Select files from ones you have uploaded, and add o Set file attributes (check previous release for values), and click update o Notify all watchers o Hide old releases unless doing an unstable release + Edit Release, set the status to Hidden, and Submit. o The ChangeLog goes as a file into the Source release. Don't add as change notes. * Update http://www.greenstone.org: o Add a new item to home.dm o change the download paths in base.dm * E-mail mailing lists with release notice (greenstone-users and greenstone-devel) o Skim the ChangeLog to find the important changes. o Send the message to each mailing list separately, that way when people reply, it won't go to both lists. * Take the updated DistDates file and commit it back into /home/nzdl/for-distributions * Tag the repository - in the gsdl directory, run cvs tag -F gsdl-x_xx-distribution * If you have made changes to the Installshield project, copy the /gsdl directory back to /home/nzdl/for-distributions/installers/gsdl * Advertise (say GNU/Linux instead of Linux!): o Open Source for Libraries: http://www.oss4lib.org - post a message o FreshMeat: http://freshmeat.net - log in and add a release [edit] Export to CD-ROM package * Create a new directory in your release directory, e.g. export * Copy the following files/directories from the gsdl/bin/windows directory into export: Win32s net16 net32 Setup.exe gssetup.exe server.exe * Copy /home/nzdl/for-distributions/export-README.txt to export/README.txt * Edit the README.txt file (change the distribution number) * Zip up the contents of the export directory (only the contents, don't include the export directory): cd export zip -r gsdl-x.xx-export.zip * * Upload to sourceforge like the greenstone ones. [edit] Greenstone Language Pack (old, no longer needed) * Checkout a fresh copy of the latest release version of greenstone, and add the non-core-images: cvs co -r gsdl-x_xx-distribution gsdl cd gsdl/images cvs co gsdl-non-core-images * Edit /home/nzdl/installshieldX/alias.properties o Set GLP_SOURCE to the gsdl directory from above * Copy the glp installer project from /home/nzdl/for-distributions/installers/glp to your previous installers directory * Edit the /glp/Greenstone Language Pack.uip file and change any absolute paths as needed * Run InstallShield X (/home/nzdl/installshieldX/InstallShieldUniversal) * Using "open existing project", open /glp/Greenstone Language Pack.uip * Edit version numbers in Installation Information -> General Information: Name and Version properties * Edit version numbers in Media -> Releases -> Default -> Distributions -> Linux/Mac/Windows distributions -> File Name * If new languages have been added since the last release, need to update the installer. o Check the gsdl ChangeLog to see whether new languages were added. o Organisation -> Installation Design: add the new interface * Media -> Releases: select the default build configuration, and Build * The releases are output in /glp/default/disk1 * Upload to sourceforge * email the mailing list * add a new item to greenstone.org and update download link [edit] Greenstone Classic Interface Pack * do we need to do that after 2.63?? Will the images have changed?? cvs export gsdl-non-core-images-repository cd gsdl-non-core-images-repository zip -r gcip-x.xx.zip * * upload the zip file to sourceforge, and add a new release to the classic interface package [edit] Tutorial Exercises * When these change, need to create a new release of them cvs co gsdl-tutorials cd gsdl-tutorials * edit the xsl files, and set mode to cd ./generate_html.sh cd ../ zip -r gsdl-tutorial-exercises-monYEAR.zip gsdl-tutorials/tutorial_files gsdl-tutorials/en gsdl-tutorials/fr gsdl-tutorials/es gsdl-tutorials/ru gsdl-tutorials/index.html * if the sample files have changed, make a new release of those. o all folders except beatles go into gsdl-tutorial-sample-files-monYEAR.zip o beatles folder goes into gsdl-tutorial-multimedia-files-monYEAR.zip * On sourceforge, the release name is Month Year, eg "March 2006" * If you want to regenerate the version on the wiki, see this page [edit] Notes * Linux installer (others too?) doesn't like being run from a path with spaces in it. But its OK installing greenstone into a path with spaces. o You get errors like: (Feb 15, 2006 11:36:15 AM), Install, com.installshield.product.actions.Files, err, java.io.IOException: File does not exist: /home/kjdon/istemp22540046113422/COPYING STACK_TRACE: 20 java.io.IOException: File does not exist: /home/kjdon/istemp22540046113422/COPYING at com.installshield.archive.ISMPFileURLStreamHandler.openConnection(Unknown Source) at java.net.URL.openConnection(URL.java:896) at java.net.URL.openStream(URL.java:913) at com.installshield.wizard.service.AbstractWizardServices.getSpannedResource(Unknown Source) at com.installshield.wizard.service.AbstractWizardServices.getSpannedResource(Unknown Source) at com.installshield.wizard.service.AbstractWizardServices.getExternalResource(Unknown Source) at com.installshield.product.ProductAction.getExternalResource(Unknown Source) at com.installshield.product.actions.Files.getResourceInputStream(Unknown Source) at com.installshield.product.actions.Files.install(Unknown Source) at com.installshield.product.service.product.PureJavaProductServiceImpl.installProductAction(Unknown Source) at com.installshield.product.service.product.PureJavaProductServiceImpl$InstallProduct. getResultForProductAction(Unknown Source) at com.installshield.product.service.product.InstallableObjectVisitor.visitComponent(Unknown Source) at com.installshield.product.service.product.InstallableObjectVisitor.visitInstallableComponents(Unknown Source) at com.installshield.product.service.product.InstallableObjectVisitor.visitProductBeans(Unknown Source) at com.installshield.product.service.product.PureJavaProductServiceImpl$InstallProduct.install(Unknown Source) at com.installshield.product.service.product.PureJavaProductServiceImpl$Installer.execute(Unknown Source) at com.installshield.wizard.service.AsynchronousOperation.run(Unknown Source) at java.lang.Thread.run(Thread.java:534)