Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad timezone for Marocco with @go_image_base//image #2246

Open
engineering-this opened this issue Apr 13, 2023 · 1 comment
Open

Bad timezone for Marocco with @go_image_base//image #2246

engineering-this opened this issue Apr 13, 2023 · 1 comment
Labels
Can Close? Will close in 30 days unless there is a comment indicating why not

Comments

@engineering-this
Copy link

engineering-this commented Apr 13, 2023

🐞 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?

Copy link

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 github-actions bot added the Can Close? Will close in 30 days unless there is a comment indicating why not label Dec 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Can Close? Will close in 30 days unless there is a comment indicating why not
Projects
None yet
Development

No branches or pull requests

1 participant