This is an old revision of the document!
Building the Standalone Client
After initial inquiry in a Zotero forum thread, and some trial-and-error, I was able to build the Zotero Standalone client from source using the bash scriptlet shown below). The main things I needed to learn were:
- Location of the source: https://www.zotero.org/svn/standalone/trunk/
- Location of build script: the root directory of the source contains the
build_sa
bash script - Build prerequisites
- Tools:
subversion
,bash
andperl
- Non-source inputs: XULRunner.
build_sa
mentions a requirement for XULRunner runtime 2.0.*. However, Ubuntu does not package a 2.x XULRunner before 11.04, which is currently pre-release. For now, Pre-release xulrunner-2.x runtimes can be obtained from http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/.build_sa
states implicitly that it requires separate runtimes for each target architecture, and expects to find each such runtime in a directory with a conventional name (see bash scriptlet below).
- Build control:
build_sa
uses no config file, takes no arguments, and is non-interactive.build_sa
will build one or more of the target OSs (linux
,mac
orwin32
), but it decides which architectures are built for each. - Location of the build:
${BUILD_PATH}/Zotero_${BUILD_ARCH}/zotero
(found withls -alt ${BUILD_PATH} $(find -executable -type f) | grep -ve '.so$
').
Bash Scriptlet
I automated a build on 64-bit Ubuntu with the following bash scriptlet:
START="$(date)" # edit following vars as desired for your build DOWNLOAD_ROOT="/tmp/xulrunner" BUILD_ARCH="linux-x86_64" BUILD_ROOT="${HOME}/bin/zotero/standalone" BUILD_DIR="20101228" BUILD_PATH="${BUILD_ROOT}/${BUILD_DIR}" BUILD_SCRIPT="build_sa" BUILD_SCRIPT_BAK="${BUILD_SCRIPT}.0" XULR_SOURCE_ROOT="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk" XULR_TARGET_PATH="${BUILD_PATH}/xulrunner_${BUILD_ARCH}" XULR_VERSION="2.0b9pre.en-US" XULR_CHECKSUMS_NAME="xulrunner-${XULR_VERSION}.${BUILD_ARCH}.checksums" XULR_CHECKSUMS_SOURCE="${XULR_SOURCE_ROOT}/${XULR_CHECKSUMS_NAME}" XULR_CHECKSUMS_TARGET="${DOWNLOAD_ROOT}/${XULR_CHECKSUMS_NAME}" XULR_ARCHIVE_NAME="xulrunner-${XULR_VERSION}.${BUILD_ARCH}.tar.bz2" XULR_ARCHIVE_SOURCE="${XULR_SOURCE_ROOT}/${XULR_ARCHIVE_NAME}" XULR_ARCHIVE_TARGET="${DOWNLOAD_ROOT}/${XULR_ARCHIVE_NAME}" ZOTERO_SOURCE_ROOT="https://www.zotero.org/svn/standalone/trunk/" ZOTERO_TARGET_EXEC="${BUILD_PATH}/Zotero_${BUILD_ARCH}/zotero" # setup xulrunner # download xulrunner mkdir -p ${DOWNLOAD_ROOT} wget -O ${XULR_CHECKSUMS_TARGET} ${XULR_CHECKSUMS_SOURCE} wget -O ${XULR_ARCHIVE_TARGET} ${XULR_ARCHIVE_SOURCE} # verify xulrunner pushd ${DOWNLOAD_ROOT} # sha512sum -c < ${XULR_CHECKSUMS_TARGET} # fails with # > sha512sum: standard input: no properly formatted SHA512 checksum lines found # I tried (offline) some other invocations, which similarly all failed # $ sha512sum -c < /tmp/xulrunner/xulrunner-2.0b9pre.en-US.linux-x86_64.checksums # sha512sum: standard input: no properly formatted SHA512 checksum lines found # $ pushd ${DOWNLOAD_ROOT} # $ sha512sum -c < ${XULR_CHECKSUMS_NAME} # sha512sum: standard input: no properly formatted SHA512 checksum lines found # $ sha512sum -c < xulrunner-2.0b9pre.en-US.linux-x86_64.checksums # sha512sum: standard input: no properly formatted SHA512 checksum lines found # $ sha512sum -c xulrunner-2.0b9pre.en-US.linux-x86_64.checksums # sha512sum: xulrunner-2.0b9pre.en-US.linux-x86_64.checksums: no properly formatted SHA512 checksum lines found # unpack xulrunner tar xjf ${XULR_ARCHIVE_NAME} mkdir -p ${BUILD_PATH} # ASSERT: archives expand to ./xulrunner mv ./xulrunner ${XULR_TARGET_PATH} popd # setup sources, including script # checkout sources pushd ${BUILD_ROOT} svn co ${ZOTERO_SOURCE_ROOT} ${BUILD_DIR} popd pushd ${BUILD_PATH} # backup unhacked build script cp ${BUILD_SCRIPT} ${BUILD_SCRIPT_BAK} chmod 444 ${BUILD_SCRIPT_BAK} # hack build script to build only linux chmod 755 ${BUILD_SCRIPT} sed -si 's/BUILD_MAC=1/BUILD_MAC=0/g' ${BUILD_SCRIPT} sed -si 's/BUILD_WIN32=1/BUILD_WIN32=0/g' ${BUILD_SCRIPT} sed -si 's/BUILD_LINUX=0/BUILD_LINUX=1/g' ${BUILD_SCRIPT} diff -u ${BUILD_SCRIPT_BAK} ${BUILD_SCRIPT} # CHECK: you should see stdout like # --- build_sa.0 2010-12-28 16:45:21.000000000 -0500 # +++ build_sa 2010-12-28 16:45:21.000000000 -0500 # @@ -1,7 +1,7 @@ # #!/bin/bash # -BUILD_MAC=1 # +BUILD_MAC=0 # BUILD_WIN32=0 # -BUILD_LINUX=0 # +BUILD_LINUX=1 # build BUILD_START="$(date)" ./${BUILD_SCRIPT} echo -e "build end=$(date)" echo -e "build start=${BUILD_START}" # run the built sa ${ZOTERO_TARGET_EXEC} & echo -e " end=$(date)" echo -e "start=${START}"
The (penultimate) build step produced the output
Getting latest Zotero revision Got Zotero r7528 Building translators.zip Building styles.zip Retrieving Zotero OpenOffice.org Integration Building Zotero_linux-i686 # several errors here, as I did not have the xulrunner for this arch Building Zotero_linux-x86_64
The run step puts up a Zotero window similar to that normally seen in Firefox. When initially run separately from the terminal, it produced the output
$ ./Zotero_linux-x86_64/zotero & ERROR: There is no such extension deployed: org.Zotero.integration.openoffice unopkg failed.
but I have not observed that subsequently.
Unfortunately I don't currently know how to test the build (much less on how to use it with Chrome) aside from the following smoketest: if I
- Run the executable (e.g.,
${ZOTERO_TARGET_EXEC}
,./Zotero_linux-x86_64/zotero
). - Wait for the Zotero window, then select “Zotero Quick Start” in the center column.
- Hit button=View in the right column.
a browser launches and and opens the quick start guide. That's comforting, but I'd prefer to know:
- Is there a more extensive test suite? E.g., what do the Zotero development team do pre-commit?
- How to load up my own (backed up) Zotero data (from my Firefox profile, or wherever else it might be) and do actual work?