mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
lib/time: update to 2022g/2022g
Commit generated by update.bash. For #22487. Change-Id: I6a995a3baea7c511b9bd5155f81d8b8e2cdff09d Reviewed-on: https://go-review.googlesource.com/c/go/+/455356 Reviewed-by: Heschi Kreinick <heschi@google.com> Run-TryBot: Russ Cox <rsc@golang.org> Auto-Submit: Russ Cox <rsc@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
7dc9fcb13d
commit
10bb003401
94
lib/time/mkzip.go
Normal file
94
lib/time/mkzip.go
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
//go:build ignore
|
||||||
|
|
||||||
|
// Mkzip writes a zoneinfo.zip with the content of the current directory
|
||||||
|
// and its subdirectories, with no compression, suitable for package time.
|
||||||
|
//
|
||||||
|
// Usage:
|
||||||
|
//
|
||||||
|
// go run ../../mkzip.go ../../zoneinfo.zip
|
||||||
|
//
|
||||||
|
// We use this program instead of 'zip -0 -r ../../zoneinfo.zip *' to get
|
||||||
|
// a reproducible generator that does not depend on which version of the
|
||||||
|
// external zip tool is used or the ordering of file names in a directory
|
||||||
|
// or the current time.
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"archive/zip"
|
||||||
|
"bytes"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"hash/crc32"
|
||||||
|
"io/fs"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func usage() {
|
||||||
|
fmt.Fprintf(os.Stderr, "usage: go run mkzip.go ../../zoneinfo.zip\n")
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
log.SetPrefix("mkzip: ")
|
||||||
|
log.SetFlags(0)
|
||||||
|
flag.Usage = usage
|
||||||
|
flag.Parse()
|
||||||
|
args := flag.Args()
|
||||||
|
if len(args) != 1 || !strings.HasSuffix(args[0], ".zip") {
|
||||||
|
usage()
|
||||||
|
}
|
||||||
|
|
||||||
|
var zb bytes.Buffer
|
||||||
|
zw := zip.NewWriter(&zb)
|
||||||
|
seen := make(map[string]bool)
|
||||||
|
err := filepath.WalkDir(".", func(path string, d fs.DirEntry, err error) error {
|
||||||
|
if d.IsDir() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
data, err := os.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(path, ".zip") {
|
||||||
|
log.Fatalf("unexpected file during walk: %s", path)
|
||||||
|
}
|
||||||
|
name := filepath.ToSlash(path)
|
||||||
|
w, err := zw.CreateRaw(&zip.FileHeader{
|
||||||
|
Name: name,
|
||||||
|
Method: zip.Store,
|
||||||
|
CompressedSize64: uint64(len(data)),
|
||||||
|
UncompressedSize64: uint64(len(data)),
|
||||||
|
CRC32: crc32.ChecksumIEEE(data),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if _, err := w.Write(data); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
seen[name] = true
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if err := zw.Close(); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
if len(seen) == 0 {
|
||||||
|
log.Fatalf("did not find any files to add")
|
||||||
|
}
|
||||||
|
if !seen["US/Eastern"] {
|
||||||
|
log.Fatalf("did not find US/Eastern to add")
|
||||||
|
}
|
||||||
|
if err := os.WriteFile(args[0], zb.Bytes(), 0666); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
@ -5,35 +5,83 @@
|
|||||||
|
|
||||||
# This script rebuilds the time zone files using files
|
# This script rebuilds the time zone files using files
|
||||||
# downloaded from the ICANN/IANA distribution.
|
# downloaded from the ICANN/IANA distribution.
|
||||||
# Consult https://www.iana.org/time-zones for the latest versions.
|
#
|
||||||
|
# To prepare an update for a new Go release,
|
||||||
|
# consult https://www.iana.org/time-zones for the latest versions,
|
||||||
|
# update CODE and DATA below, and then run
|
||||||
|
#
|
||||||
|
# ./update.bash -commit
|
||||||
|
#
|
||||||
|
# That will prepare the files and create the commit.
|
||||||
|
#
|
||||||
|
# To review such a commit (as the reviewer), use:
|
||||||
|
#
|
||||||
|
# git codereview change NNNNNN # CL number
|
||||||
|
# cd lib/time
|
||||||
|
# ./update.bash
|
||||||
|
#
|
||||||
|
# If it prints "No updates needed.", then the generated files
|
||||||
|
# in the CL match the update.bash in the CL.
|
||||||
|
|
||||||
# Versions to use.
|
# Versions to use.
|
||||||
CODE=2022f
|
CODE=2022g
|
||||||
DATA=2022f
|
DATA=2022g
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
cd $(dirname $0)
|
||||||
rm -rf work
|
rm -rf work
|
||||||
mkdir work
|
mkdir work
|
||||||
|
go build -o work/mkzip mkzip.go # build now for correct paths in build errors
|
||||||
cd work
|
cd work
|
||||||
mkdir zoneinfo
|
mkdir zoneinfo
|
||||||
curl -L -O https://www.iana.org/time-zones/repository/releases/tzcode$CODE.tar.gz
|
curl -sS -L -O https://www.iana.org/time-zones/repository/releases/tzcode$CODE.tar.gz
|
||||||
curl -L -O https://www.iana.org/time-zones/repository/releases/tzdata$DATA.tar.gz
|
curl -sS -L -O https://www.iana.org/time-zones/repository/releases/tzdata$DATA.tar.gz
|
||||||
tar xzf tzcode$CODE.tar.gz
|
tar xzf tzcode$CODE.tar.gz
|
||||||
tar xzf tzdata$DATA.tar.gz
|
tar xzf tzdata$DATA.tar.gz
|
||||||
|
|
||||||
make CFLAGS=-DSTD_INSPIRED AWK=awk TZDIR=zoneinfo posix_only
|
if ! make CFLAGS=-DSTD_INSPIRED AWK=awk TZDIR=zoneinfo posix_only >make.out 2>&1; then
|
||||||
|
cat make.out
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
cd zoneinfo
|
cd zoneinfo
|
||||||
rm -f ../../zoneinfo.zip
|
../mkzip ../../zoneinfo.zip
|
||||||
zip -0 -r ../../zoneinfo.zip *
|
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
||||||
go generate time/tzdata
|
go generate time/tzdata
|
||||||
|
|
||||||
echo
|
files="update.bash zoneinfo.zip ../../src/time/tzdata/zipdata.go"
|
||||||
|
modified=true
|
||||||
|
if git diff --quiet $files; then
|
||||||
|
modified=false
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$1" = "-work" ]; then
|
if [ "$1" = "-work" ]; then
|
||||||
echo Left workspace behind in work/.
|
echo Left workspace behind in work/.
|
||||||
|
shift
|
||||||
else
|
else
|
||||||
rm -rf work
|
rm -rf work
|
||||||
fi
|
fi
|
||||||
echo New time zone files in zoneinfo.zip.
|
|
||||||
|
if ! $modified; then
|
||||||
|
echo No updates needed.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo Updated for $CODE/$DATA: $files
|
||||||
|
|
||||||
|
commitmsg="lib/time: update to $CODE/$DATA
|
||||||
|
|
||||||
|
Commit generated by update.bash.
|
||||||
|
|
||||||
|
For #22487.
|
||||||
|
"
|
||||||
|
|
||||||
|
if [ "$1" = "-commit" ]; then
|
||||||
|
echo "Creating commit. Run 'git reset HEAD^' to undo commit."
|
||||||
|
echo
|
||||||
|
git commit -m "$commitmsg" $files
|
||||||
|
echo
|
||||||
|
git log -n1 --stat
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user