rules_docker icon indicating copy to clipboard operation
rules_docker copied to clipboard

Bad timezone for Marocco with @go_image_base//image

Open engineering-this opened this issue 2 years ago • 1 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?

engineering-this avatar Apr 13 '23 08:04 engineering-this

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!

github-actions[bot] avatar Dec 10 '24 02:12 github-actions[bot]