Commits on Dec 21, 2009
  1. inno_setup.rb: Allow version checking preprocessor directives

    We need the ability to add Inno Setup version checks to our installer
    template files.  This patch adds support for Inno Setup preprocessor
    version checks, though for our implementation, it always considers the
    version to be greater than the one checked against.  It also adds an
    implementation of the #error directive, so that we can ignore it if we
    encounters it in an inactive state.
    committed Dec 21, 2009
Commits on Nov 14, 2009
  1. inno_setup.rb: Allow the same file to be installed to multiple locations

    After the big Halyard reorganization, when we update programs from
    before the reorg, we may be left with various broken shortcuts from
    old installs.  To fix this, we would like to simply copy the same
    source file to two different destinations in the installer and
    This is supported by Inno Setup, but inno_setup.rb represented files
    to install as a hash table with sources mapping to destinations, which
    prevented the same source file from mapping to multiple destination
    files.  This patch changes it to instead an array of FileCopy structs,
    with a source and dest.
    committed Nov 14, 2009
  2. Refactor and comment FileSet.apply_exclusions based on code review

    While reviewing this code with Robinson, I found there were several things
    that needed explanation.  This patch does a bit of refactoring and renaming
    to hopefully make the code more clear, as well as adding some comments
    explaining what's going on.
    committed Nov 14, 2009
Commits on Nov 13, 2009
  1. Bugfix: Compare Inno Setup exclude globs against all components of path

    In my last patch to make our Inno Setup code compare excludes against
    paths by components, I introduced a bug in which they wouldn't be
    compared against the last component of the path (the filename itself).
    Our existing unit tests had included such excludes in their
    sample.iss, but no files that were matched by those excludes to make
    sure they were actually working.  This patch fixes the problem and
    adds a file to be excluded to ensure that we don't break this again.
    committed Nov 13, 2009
  2. Add support for Inno Setup Excludes containing \

    In order to exclude some nested directories from IML libs in our programs,
    we need to be able to match against more than one path component.  This
    patch adds support for exclusions with multiple components, as documented
    in the Inno Setup documentation[1], with the exact details worked out
    by experimentation.
    committed Nov 13, 2009
Commits on Feb 28, 2009
  1. commands.rb: Ignore .git directories instead of .svn when uploading u…

    When doing the migration to git, we neglected to modify the exclude
    list for the updater upload from .svn to .git.  This means that we're
    copying all of the history up as well, which substantially slows the
    build process.  This patch changes the exclude from .git to .svn.
    committed Feb 28, 2009
  2. Add tools for staging and releasing updates on server

    Our build script pushes updates to the update server, but the last
    step of the process, moving an update from staging to release, has so
    far been manual.  This patch automates this process, based on several
    of the preceding patches.
    This patch adds a new script, tools/release_update.rb, which is
    intended to be run from within a project.  It acts somewhat like the
    build script update installer build process, in that it copies the
    entire build script library up to the server and runs scripts from it.
    Depending on its arguments, it runs either
    tools/release_update_from_staging.rb, or tools/stage_update.rb, both
    of which are thin wrappers around equivalent functionality in
    This gets its configuration from the new config/project.conf that is
    read by project_config.rb.  Some of the project-specific configuration
    variables in the build script should probably be factored out into
    calling the ProjectConfig parser.
    committed Feb 28, 2009
  3. project_config.rb: Add support for [sections], and better errors

    For the update release scripts, I had added a project.conf for storing
    configuration values needed to ssh in to the server and set up the
    environment properly.  These had been a simple key=value format,
    intended to be a subset of the relatively common INI file format.
    This patch adds support for a larger subset of the INI file format,
    including [sectons] and blank lines.  It also adds explicit errors
    on common INI syntax that it doesn't understand, such as quoted
    strings, comments, and \ escapes.
    After reading a section heading, the parser will treat all keys
    until the next section heading as if they were prefixed by the
    section name followed by a ".".
    committed Feb 28, 2009
  4. project_config.rb: Add new parser for project configuration

    In order to support project specific configuration, for such things as
    ssh servers and usernames to be used for releasing updates, this patch
    introduces a project config file, parsed by project_config.rb.  This
    is a fairly simple file consisting of lines of "key=value" pairs, and
    must be at config/project.conf.  This could probably be generalized
    further, but at this stage, the simple version is sufficient for our
    committed Feb 28, 2009
  5. Update server installer: Remove test case line that fails on Cygwin

    For some reason, the test for whether the manifest directory is
    writable is failing on Cygwin.  Since locking the manifest directory
    is not an essential feature, we will remove this test for now.
    committed Feb 28, 2009
  6. Update server installer: Remove unnecessary require

    We don't ever actually use the child_process module in our update
    server installer, so remove the require.
    committed Feb 26, 2009
  7. Update server installer: Allow username to be passed in

    In order to facilitate logging with the username on the users workstation,
    rather than on the server, this patch adds keyword arguments indicating
    the current user to the various pieces of the update server installer.
    committed Feb 28, 2009
  8. Update server installer: Keep log of all changes to spec files

    We would like to keep a log of all changes to our staging.spec and
    release.spec files, so that we can more easily audit them, restore
    previous versions if we need to, etc.  This patch adds a
    staging.spec.log and release.spec.log, which contain lines from oldest
    to newest in the following format:
    old-build-id new-build-id username datetime notes
    Thus, each line contains both the build ID of the file being replaced,
    and the build ID of the new file (if the file is new, '<null>' is used
    in place of the old-build-id).  The username is intended to be the
    best guess at the username of the person pushing this version;
    currently it is the username of the current user, though that will
    likely not be useful if this is a shared account.  It includes a date
    and time, in RFC 3339 (ISO 8601) format, and any notes associated with
    this change (can be a version number if this was done while tagging a
    release, or can be an explanation for why we're rolling back, or may
    be empty).
    committed Feb 28, 2009
Commits on Feb 27, 2009
  1. Update server installer: Make pool files not writable

    The contents of files in the pool should never change, as they are named
    based on a hash of their contents.  So, we chmod them to be writable by
    no one, to help protect against simple mistakes.
    committed Feb 27, 2009
  2. Update server installer: Make manifests and .spec files not writable

    In the past, I have accidentally overwritten .spec files through a
    mistake while administering the update server.  Since .spec files and
    manifest files should never change after a release is built, this
    patch chmods them all to be writable by no one, to avoid basic
    committed Feb 27, 2009
  3. Update server installer: Refactor tests to eliminate common code

    We had two tests of the update server installer; one for the base case
    of doing an update.  They shared a lot of code.  This patch splits out
    the shared code, and also splits out the tests for the base case into
    a few smaller tests that are more specific.
    committed Feb 27, 2009
Commits on Feb 23, 2009
  1. commands.rb: Add command for cloning from Git

    Our programs are managed in Git now, so this patch adds a command to
    commands.rb for cloning from Git and pushing a tag based on the
    release ID to origin.
    committed Feb 23, 2009
Commits on Feb 21, 2009
  1. README.txt: Update build instructions

    We should have buildscript configured so that you don't have to muck with
    your RUBYLIB in order to include it, so this patch removes the section
    in the setup instructions for that (which happened to be misnumbered as
    committed Feb 21, 2009
Commits on Feb 5, 2009
  1. reorg: Move TRUST-PRECOMPILED to config/

    Note that you'll need a matching change in your engine.  That change has
    not yet been merged to the master branch.
    Eric Kidd committed Feb 5, 2009
Commits on Feb 4, 2009
  1. Add copyright headers to *.rb files

    We've never had copyright headers on these files, but Brian suggested
    (rightly) that we probably should.
    Eric Kidd committed Feb 4, 2009
Commits on Feb 2, 2009
  1. Use command-line mode while building .zos

    We should use command line mode (-c) instead of runtime mode (-e) when
    building our compiled files, so that we will also get our source file
    count written out.
    Reviewed-by: Robinson Tryon <>
    committed Feb 2, 2009
Commits on Jan 29, 2009
  1. Update buildscript to work with modern project layout

    We have done several reorganizaitons over the past year, and buildscript
    has gotten out of date with the layout.  This patch fixes three things:
      1) Adds '..' to the lib path when running rake test, since we now list
         all requires as relative to the 'lib' directory instead of the
         'buildscript' directory.
      2) Updates to use engine/win32/Halyard.exe instead of Tamale
      3) Adds base_dir argument to InnoSetup::SourceFile::initialize so
         we can treat our files as releative to the current directory when
         doing our actual builds, but treat them as relative to 'fixtures'
         when running unit tests.
    Reviewed-by: Robinson Tryon <>
    committed Jan 29, 2009
Commits on Jul 25, 2008
  1. Prefix internal requires with 'buildscript/'

    Previously, we expected for the 'buildscript' directory to be directly
    added to $LOAD_PATH.  Now, we assume that the 'buildscript' directory is
    contained in another directory, which is itself in our load path.  This is
    considerably more polite.
    Eric Kidd committed Jul 25, 2008
Commits on Apr 8, 2008
  1. Add a .gitignore file

    committed Apr 8, 2008
  2. Add support for including or excluding files from tarballs and ZIPs

    In order to support our new, submodule based distribution strategy for
    Halyard, we need to be able to include or exclude our libs direcotry
    when building tarballs.  This patch adds the ability to specify a list
    of files in a tarball, and/or a list of excludes.  It also adds the
    ability to specify a list of excludes when building ZIP files.
    Also, we exclude any version control files.  tar includes a
    --exclude-vcs that will automatically exclude .git, .gitignore, CVS,
    .cvsignore, .svn, and various other version control files.  For the
    make_zipfile command, we manually exclude .git and .gitignore files.
    committed Apr 8, 2008
Commits on Apr 7, 2008
  1. Add git command

    Adds a git command, parallel to the cvs and svn commands.
    committed Apr 7, 2008
Commits on Mar 28, 2008
  1. Recent rubygems no longer supports require_gem

    Eric Kidd committed Mar 28, 2008
Commits on Mar 14, 2008
Commits on Mar 11, 2008
  1. Added make_tarball command

    Bug-ID: 3110
    committed Mar 11, 2008
Commits on Dec 17, 2007
  1. Added ssh username to ssh and rsync commands so we can let everyone l…

    …og in as iml_updater, and have builds actually work properly without permission issues. I've left the chmod stuff that was supposed to work around the problem in for now, under the theory that I should be changing as little as possible, and it doesn't hurt to chmod the files.
    Bug-ID: 1382
    committed Dec 17, 2007
Commits on Dec 14, 2007
  1. Change SHA1 verification to use the form of the hexdigest function th…

    …at is supported in current versions of Ruby.
    Bug-ID: 1404
    committed Dec 14, 2007
Commits on Dec 1, 2007
  1. Store a symlink to the *.spec.sig file next to the *.spec file itself…

    …, so that we don't need to traverse the URL in the *.spec file until we've actually validated it.
    Bug-ID: 878
    Eric Kidd committed Dec 1, 2007
  2. Support for using GPG to sign updates produced by a buildscript.

    If you need to modify either updater-fixtures/base/release.spec.sig, or updater-fixtures/update/release.spec.sig, you should be able to regenerate these signatures using any GPG key you want.
    Bug-ID: 878
    Eric Kidd committed Dec 1, 2007
  3. Adding FogBugz/TortoiseSVN integration.

    Eric Kidd committed Dec 1, 2007