Skip to content

Commit

Permalink
Fix JRUBY-4982: jruby embeds outdated timezone data via joda-time
Browse files Browse the repository at this point in the history
Adds the ant task 'update-tzdata' and the tasks it depends on. 'update-tzdata' is a completely independent task, so it does not disrupt the current release process. So a call to the 'jar' task is still required for JRuby to see the new tzdata.

As described in http://ant.apache.org/manual/Tasks/ftp.html you'll need jakarta-commons-net-1.4.0 or later in a place ant can find.
  • Loading branch information
BanzaiMan committed Aug 24, 2010
1 parent 0e9c956 commit 0a8dc0a
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
60 changes: 60 additions & 0 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1442,6 +1442,7 @@
<delete dir="${api.docs.dir}"/>
<delete dir="src_gen"/>
<antcall target="clean-ng"/>
<antcall target="clean-tzdata" />
</target>

<!-- FIXME: Cannot run Rake on clean until minijruby so keep this target -->
Expand Down Expand Up @@ -1499,4 +1500,63 @@
<target name="test-rails-stable" depends="jar"><rake task="test:rails"/></target>
<target name="test-prawn" depends="jar"><rake task="test:prawn"/></target>
<target name="bench-language" depends="jar"><rake task="bench:language"/></target>

<target name="fetch-tzdata" description="Fetch tzdata into build/tzdata">
<mkdir dir="${tzdata.builddir}/src" />
<ftp server="${tzdata.ftpserver}"
action="get"
verbose="yes"
passive="yes"
userid="anonymous"
password="${tzdata.ftp.anonymous.userid}"
remotedir="/pub"
newer="yes">
<fileset dir="${tzdata.builddir}/src">
<include name="tzdata${tzdata.version}.tar.gz" />
</fileset>
</ftp>
</target>

<target name="expand-tzdata" depends="fetch-tzdata" description="Expand tzdata into build/tzdata">
<untar src="${tzdata.builddir}/src/tzdata${tzdata.version}.tar.gz"
compression="gzip"
dest="${tzdata.builddir}/src"
/>
</target>

<!-- basically a copy of joda-time's compile.zoneinfo task -->
<target name="compile-tzdata" depends="expand-tzdata" description="Compile tzdata in build/tzdata">
<mkdir dir="${tzdata.builddir}/build" />
<mkdir dir="${tzdata.builddir}/build/org/joda/time/tz/data" />
<java classname="org.joda.time.tz.ZoneInfoCompiler"
fork="true"
failonerror="false">
<classpath path="${build.lib.dir}/joda-time-1.6.1.jar" />
<!-- Override default provider since data directory doesn't exist yet -->
<sysproperty key="org.joda.time.DateTimeZone.Provider"
value="org.joda.time.tz.UTCProvider" />
<!-- Specify source and destination directories -->
<arg line="-src ${tzdata.builddir}/src -dst ${tzdata.builddir}/build/org/joda/time/tz/data" />
<!-- Specify all the data files to compile -->
<arg value="africa" />
<arg value="antarctica" />
<arg value="asia" />
<arg value="australasia" />
<arg value="europe" />
<arg value="northamerica" />
<arg value="southamerica" />
<arg value="pacificnew" />
<arg value="etcetera" />
<arg value="backward" />
<arg value="systemv" />
</java>
</target>

<target name="update-tzdata" depends="compile-tzdata" description="Update joda-time's zone info with one we compiled">
<jar update="yes" destfile="${build.lib.dir}/joda-time-1.6.1.jar" basedir="${tzdata.builddir}/build" />
</target>

<target name="clean-tzdata" description="Remove files used for updating time zone information">
<delete dir="${tzdata.builddir}" failonerror="no" />
</target>
</project>
4 changes: 4 additions & 0 deletions default.build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,7 @@ version.ruby1_9.revision=27758
version.jruby=1.6.0.dev
mspec.revision=7e5d31bc7030458722efc4362af85bfe8955634c
rubyspecs.revision=9036db900b98eb2607a057384bb31e81e9b59798
tzdata.builddir=build/tzdata
tzdata.ftpserver=elsie.nci.nih.gov
tzdata.ftp.anonymous.userid=jruby@jruby.org
tzdata.version=2010l

0 comments on commit 0a8dc0a

Please sign in to comment.