# -*- makefile -*-
# -----------------------------------------------------------------------
# Copyright 2016-2024 Open Networking Foundation (ONF) and the ONF Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -----------------------------------------------------------------------

# ---------------------------------------------------------------------------
# Alternates to try when APK is having repository problems.
# http://dl-cnd.alpinelinux.org
# http://dl-3.alpinelinux.org
# http://dl-4.alpinelinux.org
# ---------------------------------------------------------------------------
#9 0.263 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKIND4EX.tar.gz
#9 5.269 ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.13/main: temporary error (try again later)
#9 5.269 WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: No such file or directory
#9 5.269 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
# ---------------------------------------------------------------------------

# -------------
# Build stage

FROM golang:1.23.1-alpine3.20 AS dev

# Install required packages

RUN apk --update update && \
    apk --update add --no-cache build-base=0.5-r3

# Use Standard go build directory structure
WORKDIR /go/src

# Copy common files.
COPY db ./db
COPY vendor ./vendor

# -----------------------------------------------------------------------
# Chicken-n-egg problem: See Dockerfile.rw_core
#   required by testing (-coverprofile fails w/o this)
#   test output, does not exist during build
# -----------------------------------------------------------------------
# [TODO] Create two distinct docker files to break the artifical
#        dependency loop
# -----------------------------------------------------------------------
COPY tests/results/go-test-coverage.out ./tests/results/go-test-coverage.out

# Copy files
COPY rw_core ./rw_core
COPY go.mod ./
COPY go.sum ./

ARG EXTRA_GO_BUILD_TAGS=""

ARG CGO_PARAMETER="CGO_ENABLED=0"

ARG org_label_schema_version=unknown
ARG org_label_schema_vcs_url=unknown
ARG org_label_schema_vcs_ref=unknown
ARG org_label_schema_build_date=unknown
ARG org_opencord_vcs_commit_date=unknown
ARG org_opencord_vcs_dirty=unknown

# Build
WORKDIR /go/src/rw_core
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN \
export ${CGO_PARAMETER?} && go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /app/rw_core \
-ldflags \
"-X github.com/opencord/voltha-lib-go/v7/pkg/version.version=$org_label_schema_version \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.vcsRef=$org_label_schema_vcs_ref  \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.vcsDirty=$org_opencord_vcs_dirty \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.goVersion=$(go version 2>&1 | sed -E  's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/g') \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.os=$(go env GOHOSTOS) \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.arch=$(go env GOHOSTARCH) \
-X github.com/opencord/voltha-lib-go/v7/pkg/version.buildTime=$org_label_schema_build_date" \
.

WORKDIR /app

# -------------
# Image creation stage
FROM gcr.io/distroless/static:nonroot as prod

# Set the working directory
WORKDIR /app

# Copy required files
COPY --from=dev /app/rw_core /app/rw_core

# Label image
ARG org_label_schema_version=unknown
ARG org_label_schema_vcs_url=unknown
ARG org_label_schema_vcs_ref=unknown
ARG org_label_schema_build_date=unknown
ARG org_opencord_vcs_commit_date=unknown
ARG org_opencord_vcs_dirty=unknown

LABEL \
org.label-schema.schema-version=1.0 \
org.label-schema.name=voltha-rw-core \
org.label-schema.version=$org_label_schema_version \
org.label-schema.vcs-url=$org_label_schema_vcs_url \
org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
org.label-schema.build-date=$org_label_schema_build_date \
org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
org.opencord.vcs-dirty=$org_opencord_vcs_dirty

USER nonroot:nonroot
