Skip to content

Commit 67f7596

Browse files
committed
Improve support for SOURCE_DATE_EPOCH by forcing UTC timezone
The patch in PR #69 and its extension in commit 39936be did not address the reproducibility issues that arise when different timezones are used. The Reproducible Builds project suggests forcing the use of the UTC timezone whenever `SOURCE_DATE_EPOCH` is used.
1 parent 89f335e commit 67f7596

File tree

6 files changed

+11
-0
lines changed

6 files changed

+11
-0
lines changed

main/java/BitsNPicas/src/com/kreative/bitsnpicas/Font.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@ public void autoFillNames() {
450450
if (sourceDateEpochEnv != null) {
451451
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
452452
now.setTimeInMillis(sourceDateEpoch * 1000L);
453+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
453454
}
454455
names.put(NAME_UNIQUE_ID, "BitsNPicas: " + pname + ": " + now.get(Calendar.YEAR));
455456
}

main/java/BitsNPicas/src/com/kreative/bitsnpicas/edit/TimestampGlyphGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.GregorianCalendar;
44
import java.util.List;
5+
import java.util.TimeZone;
56
import com.kreative.bitsnpicas.BitmapFontGlyph;
67
import com.kreative.bitsnpicas.Font;
78

@@ -17,6 +18,7 @@ public Result generate(Font<BitmapFontGlyph> font, List<GlyphLocator<BitmapFontG
1718
if (sourceDateEpochEnv != null) {
1819
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
1920
now.setTimeInMillis(sourceDateEpoch * 1000L);
21+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
2022
}
2123

2224
BitmapFontGlyph[] glyphs = getTimestampGlyphs(font, now);

main/java/BitsNPicas/src/com/kreative/bitsnpicas/exporter/OTBBitmapFontExporter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.HashMap;
1313
import java.util.List;
1414
import java.util.Map;
15+
import java.util.TimeZone;
1516
import com.kreative.bitsnpicas.BitmapFont;
1617
import com.kreative.bitsnpicas.BitmapFontExporter;
1718
import com.kreative.bitsnpicas.BitmapFontGlyph;
@@ -256,6 +257,7 @@ private static final HeadTable makeHeadTable(BitmapFont bf, ThingsToKeepTrackOf
256257
if (sourceDateEpochEnv != null) {
257258
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
258259
now.setTimeInMillis(sourceDateEpoch * 1000L);
260+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
259261
}
260262

261263
double fontVersion;

main/java/BitsNPicas/src/com/kreative/bitsnpicas/exporter/TTFBitmapFontExporter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.GregorianCalendar;
1111
import java.util.HashMap;
1212
import java.util.Map;
13+
import java.util.TimeZone;
1314
import com.kreative.bitsnpicas.BitmapFont;
1415
import com.kreative.bitsnpicas.BitmapFontExporter;
1516
import com.kreative.bitsnpicas.BitmapFontGlyph;
@@ -234,6 +235,7 @@ private static final HeadTable makeHeadTable(BitmapFont bf, ThingsToKeepTrackOf
234235
if (sourceDateEpochEnv != null) {
235236
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
236237
now.setTimeInMillis(sourceDateEpoch * 1000L);
238+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
237239
}
238240

239241
double fontVersion;

main/java/BitsNPicas/src/com/kreative/bitsnpicas/geos/CBMDirectoryBlock.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.io.UnsupportedEncodingException;
77
import java.util.Calendar;
88
import java.util.GregorianCalendar;
9+
import java.util.TimeZone;
910

1011
public class CBMDirectoryBlock implements CBMConstants {
1112
public static final String COMMENT_PRG = "PRG formatted GEOS file";
@@ -53,6 +54,7 @@ public void clear() {
5354
if (sourceDateEpochEnv != null) {
5455
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
5556
now.setTimeInMillis(sourceDateEpoch * 1000L);
57+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
5658
}
5759

5860
year = now.get(Calendar.YEAR);

main/java/BitsNPicas/src/com/kreative/bitsnpicas/main/ConvertBitmap.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Map;
1212
import java.util.Scanner;
1313
import java.util.Set;
14+
import java.util.TimeZone;
1415
import java.util.regex.Pattern;
1516
import java.util.regex.PatternSyntaxException;
1617
import com.kreative.bitsnpicas.BitmapFont;
@@ -582,6 +583,7 @@ private static void transformFont(BitmapFont font, Options o) {
582583
if (sourceDateEpochEnv != null) {
583584
long sourceDateEpoch = Long.parseLong(sourceDateEpochEnv);
584585
now.setTimeInMillis(sourceDateEpoch * 1000L);
586+
now.setTimeZone(TimeZone.getTimeZone("UTC"));
585587
}
586588

587589
BitmapFontGlyph[] glyphs = TimestampGlyphGenerator.getTimestampGlyphs(font, now);

0 commit comments

Comments
 (0)