Skip to content

Commit

Permalink
DEVELOPER.md: update upgrading and release instructions
Browse files Browse the repository at this point in the history
  • Loading branch information
bxparks committed Jul 27, 2024
1 parent 874a00a commit 056e25c
Showing 1 changed file with 42 additions and 23 deletions.
65 changes: 42 additions & 23 deletions DEVELOPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ library.
* [Step 3: Fix Transition Times](#Step3FixTransitionTimes)
* [Step 4: Generate Start Until Times](#Step4GenerateStartUntilTimes)
* [Step 5: Calculate Abbreviations](#Step5CalculateAbbreviations)
* [Upgrading ZoneInfo Files to a New TZDB Version](#UpgradingZoneInfoFiles)
* [Upgrading TZDB](#UpgradingZoneInfoFiles)
* [Release Process](#ReleaseProcess)

<a name="ProjectRepoDependency"></a>
Expand Down Expand Up @@ -792,7 +792,7 @@ field is a static array of 7 characters (to account for the terminating NUL
character).

<a name="UpgradingZoneInfoFiles"></a>
## Upgrading ZoneInfo Files to a New TZDB Version
## Upgrading TZDB

About 2-4 times a year, a new TZDB version is released. Here are some notes
(mostly for myself) on how to create a new release after a new TZDB version is
Expand All @@ -805,29 +805,48 @@ available.
- `$ git pull`
- Check that the correct tag is pulled (e.g. `2020c` tag if that's the
version that we want to upgrade to).
- Update the Hinnant date repo (https://github.com:HowardHinnant/date). This
- Update the Hinnant `date` repo (https://github.com:HowardHinnant/date). This
should be a sibling to the `AceTime` repo:
- `$ cd ../date`
- `$ git pull`
- Update the zonedb files for `acetimepy` (needed by AcetzBasicTest and
AcetzExtendedTest):
- `$ cd acetimepy/src/acetime`
- `$ vi zonedb*/Makefile`
- `$ cd acetimepy`
- `$ vi src/zonedb*/Makefile`
- Update the `TZ_VERSION` variable in the various makefiles.
- `$ make zonedbs`
- `$ make all`
- Update the zonedb files for `acetimec` (needed by AcetimecBasicTest and
AcetimecExtendedTest)
- `$ cd acetimec/src`
- `$ vi zonedb*/Makefile`
- Update the `TZ_VERSION` variable in the various makefiles.
- `$ make zonedbs`
- `$ make` to update the `acetimec.a` lib file
- `$ cd ../tests`
- `$ make -j2`
- `$ make runtests`
- Update the zonedb files for `acetimego`
- `$ cd acetimego`
- `$ vi zonedb*/Makefile`
- Update the `TZ_VERSION` variable in the various makefiles.
- `$ make zonedbs`
- `$ make all`
- `$ make test`
- Update the zonedb files for `AceTime`:
- `$ cd AceTime/src`
- `$ vi zonedb*/Makefile`
- Update the `TZ_VERSION` variable in the makefiles.
- `$ make zonedbs`
- `$ cd ../tests`
- `$ make clean`
- `$ make -j2 tests`
- `$ make runtests`
- Recompile the binaries in `AceTimeValidation` tools
- `$ cd AceTimeValidation/tools`
- `$ make clean`
- `$ make`
- Verify that `AceTimeValidation` passes. This compares AceTime with 3 other
libraries: acetimec, acetimepy, and the Hinnant `date` library:
- `$ make -j2`
- Verify that `AceTimeValidation/tests` pass.
- `$ cd AceTimeValidation/tests`
- `$ make clean`
- `$ vi {Acetimec,Acetz,Hinnant}{Basic,Extended}*/Makefile`
Expand All @@ -838,32 +857,32 @@ available.
- `AcetzExtendedTest/Makefile`
- `HinnantBasicTest/Makefile`
- `HinnantExtendedTest/Makefile`
- Validate against one library, acetimec:
- Validate against the other libraries:
- `$ make -j2 tests`
- `$ make runtests`
- (Debugging) To validate against one library, e.g. acetimec:
- `$ make -C AcetimecExtendedTest clean`
- `$ make -C AcetimecExtendedTest all`
- `$ make -C AcetimecExtendedTest run`
- Validate against the other libraries:
- `$ make clean`
- `$ make -j4 tests`
- `$ make runtests`
- Update the various zoneinfo files for AceTime:
- `$ cd AceTime/src`
- `$ vi zonedb*/Makefile`
- Update the `TZ_VERSION` variable in the makefiles.
- `$ make zonedbs`
- Verify that `AceTimeValidation/validation` passes.
- `$ cd AceTimeValidation/validation`
- `$ make clean`
- `$ make -j2 validation`
- Update CHANGELOGs
- Copy a summary of the TZDB release notes from
https://mm.icann.org/pipermail/tz-announce/ to the various CHANGELOG.md
files.
- AceTime/CHANGELOG.md
- acetimec/CHANGELOG.md
- acetimego/CHANGELOG.md
- acetimepy/CHANGELOG.md
- AceTimeValidation/CHANGELOG.md
- Commit and push the changes for the following repos: AceTime, acetimec,
acetimepy, AceTimeValidation
- `$ git add ...`
- `$ git commit -m "..."`
- `$ git push`
- Commit and push the changes for the following repos:
- AceTime
- acetimec
- acetimego
- acetimepy
- AceTimeValidation

There are 12 other validation tests in the AceTimeValidation project that
compare AceTime with various other third party libraries:
Expand Down

0 comments on commit 056e25c

Please sign in to comment.