Bad timezone for Marocco with @go_image_base//image
engineering-this opened this issue Β· comments
π bug report
Affected Rule
The issue is caused by the rule: go_image
Is this a regression?
Not regression
Description
A clear and concise description of the problem...I'm not really sure if its the right place to report issues related to image itself, however here this image is referenced here a lot, so I assume either you are responsible for image, or at least you can forward to however is.
Golang resolves timezones using system files. In case of @go_image_base//image
file /usr/share/zoneinfo/
is used, and it return wrong date. According to wikipedia Marocco changed it's DST rules in 2018: https://en.wikipedia.org/wiki/Daylight_saving_time_in_Morocco
According to https://www.timeanddate.com/time/zone/morocco/casablanca for 2023-04-26
Marocco uses UTC+01, meanwhile go program inside docker container with base as above resolves this date as UTC+00.
π¬ Minimal Reproduction
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("Africa/Casablanca")
if err != nil || loc == nil {
panic(err)
}
t, err := time.ParseInLocation("2006-01-02 15:04", "2023-04-26 22:05", loc)
if err != nil {
panic(err)
}
fmt.Printf("time: %s\n", t)
}
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@io_bazel_rules_docker//container:container.bzl", "container_push")
load("@io_bazel_rules_docker//go:image.bzl", "go_image")
go_library(
name = "go_default_library",
srcs = [
"main.go",
],
importpath = "github.com/FatNinjas/SkyLane/src/scrapers/temp",
visibility = ["//visibility:private"],
)
go_binary(
name = "bin-dev",
embed = [":go_default_library"],
visibility = ["//visibility:public"],
)
go_image(
name = "dev-img",
base = "@go_image_base//image",
binary = ":bin-dev",
)
container_push(
name = "push-dev",
format = "Docker",
image = ":dev-img",
registry = "gcr.io",
repository = "my-repo/test",
tag = "latest",
)
When running file locally correct timezone is printed:
2023-04-26 22:05:00 +0100 +01
However when running it inside docker container using base = "@go_image_base//image"
wrong timezone is printed: 2023-04-26 22:05:00 +0000 +00
π₯ Exception or Error
π Your Environment
Operating System:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
Output of bazel version
:
Build label: 5.1.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Apr 8 15:49:48 2022 (1649432988)
Build timestamp: 1649432988
Build timestamp as int: 1649432988
Rules_docker version:
Anything else relevant?