Bad timezone for Marocco with @go_image_base//image
🐞 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?
This issue has been automatically marked as stale because it has not had any activity for 180 days. It will be closed if no further activity occurs in 30 days. Collaborators can add an assignee to keep this open indefinitely. Thanks for your contributions to rules_docker!