From 97a180ef9fbd2154abcababc3ad46e32d5eca4dd Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sun, 28 Sep 2025 20:48:19 +1000 Subject: [PATCH] feat: add jsonnet and jsonnet-lint packages Add RPM packages for jsonnet v0.21.0 built from go-jsonnet: - jsonnet: main interpreter and jsonnetfmt formatter - jsonnet-lint: linter for Jsonnet files Both packages use Go 1.24.7 as required by go-jsonnet v0.21.0. --- rpms/jsonnet-lint/0.21.0/release | 1 + rpms/jsonnet-lint/Dockerfile | 19 ++++++++++++++ rpms/jsonnet-lint/resources/build.sh | 19 ++++++++++++++ rpms/jsonnet-lint/resources/nfpm.yaml | 30 ++++++++++++++++++++++ rpms/jsonnet/0.21.0/release | 1 + rpms/jsonnet/Dockerfile | 19 ++++++++++++++ rpms/jsonnet/resources/build.sh | 20 +++++++++++++++ rpms/jsonnet/resources/nfpm.yaml | 36 +++++++++++++++++++++++++++ 8 files changed, 145 insertions(+) create mode 100644 rpms/jsonnet-lint/0.21.0/release create mode 100644 rpms/jsonnet-lint/Dockerfile create mode 100755 rpms/jsonnet-lint/resources/build.sh create mode 100644 rpms/jsonnet-lint/resources/nfpm.yaml create mode 100644 rpms/jsonnet/0.21.0/release create mode 100644 rpms/jsonnet/Dockerfile create mode 100755 rpms/jsonnet/resources/build.sh create mode 100644 rpms/jsonnet/resources/nfpm.yaml diff --git a/rpms/jsonnet-lint/0.21.0/release b/rpms/jsonnet-lint/0.21.0/release new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/rpms/jsonnet-lint/0.21.0/release @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/rpms/jsonnet-lint/Dockerfile b/rpms/jsonnet-lint/Dockerfile new file mode 100644 index 0000000..f7d01bb --- /dev/null +++ b/rpms/jsonnet-lint/Dockerfile @@ -0,0 +1,19 @@ +# Start with the AlmaLinux 9 base image +FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest + +# Create output directory for RPMs +RUN mkdir -p /app/dist + +# Set working directory +WORKDIR /app + +ARG PACKAGE_RELEASE +ENV PACKAGE_RELEASE=${PACKAGE_RELEASE} +ARG PACKAGE_VERSION +ENV PACKAGE_VERSION=${PACKAGE_VERSION} + +# Copy resources from the context into the container +COPY resources /app/resources + +# Default command to build RPMs +CMD /app/resources/build.sh \ No newline at end of file diff --git a/rpms/jsonnet-lint/resources/build.sh b/rpms/jsonnet-lint/resources/build.sh new file mode 100755 index 0000000..76778fa --- /dev/null +++ b/rpms/jsonnet-lint/resources/build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/bash + +# Install dependencies and Go 1.24 +dnf install -y wget git make + +# Download and install Go 1.24.7 +wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz +rm -rf /usr/local/go +tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz +export PATH=/usr/local/go/bin:$PATH + +# Verify Go installation +go version + +# Build jsonnet-lint binary +GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet-lint@v${PACKAGE_VERSION} + +# Build RPM package +nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm \ No newline at end of file diff --git a/rpms/jsonnet-lint/resources/nfpm.yaml b/rpms/jsonnet-lint/resources/nfpm.yaml new file mode 100644 index 0000000..096fcf8 --- /dev/null +++ b/rpms/jsonnet-lint/resources/nfpm.yaml @@ -0,0 +1,30 @@ +# nfpm.yaml + +name: jsonnet-lint +version: ${PACKAGE_VERSION} +release: ${PACKAGE_RELEASE} +arch: amd64 +platform: linux +section: default +priority: extra +description: "Linter for Jsonnet" +maintainer: Google +homepage: https://github.com/google/go-jsonnet +license: Apache-2.0 + +disable_globbing: false + +replaces: + - jsonnet-lint + +provides: + - jsonnet-lint + +# Files to include in the package +contents: + - src: /app/jsonnet-lint + dst: /usr/bin/jsonnet-lint + file_info: + mode: 0755 + owner: root + group: root \ No newline at end of file diff --git a/rpms/jsonnet/0.21.0/release b/rpms/jsonnet/0.21.0/release new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/rpms/jsonnet/0.21.0/release @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/rpms/jsonnet/Dockerfile b/rpms/jsonnet/Dockerfile new file mode 100644 index 0000000..f7d01bb --- /dev/null +++ b/rpms/jsonnet/Dockerfile @@ -0,0 +1,19 @@ +# Start with the AlmaLinux 9 base image +FROM git.unkin.net/unkin/almalinux9-rpmbuilder:latest + +# Create output directory for RPMs +RUN mkdir -p /app/dist + +# Set working directory +WORKDIR /app + +ARG PACKAGE_RELEASE +ENV PACKAGE_RELEASE=${PACKAGE_RELEASE} +ARG PACKAGE_VERSION +ENV PACKAGE_VERSION=${PACKAGE_VERSION} + +# Copy resources from the context into the container +COPY resources /app/resources + +# Default command to build RPMs +CMD /app/resources/build.sh \ No newline at end of file diff --git a/rpms/jsonnet/resources/build.sh b/rpms/jsonnet/resources/build.sh new file mode 100755 index 0000000..ce021e5 --- /dev/null +++ b/rpms/jsonnet/resources/build.sh @@ -0,0 +1,20 @@ +#!/usr/bin/bash + +# Install dependencies and Go 1.24 +dnf install -y wget git make + +# Download and install Go 1.24.7 +wget https://go.dev/dl/go1.24.7.linux-amd64.tar.gz +rm -rf /usr/local/go +tar -C /usr/local -xzf go1.24.7.linux-amd64.tar.gz +export PATH=/usr/local/go/bin:$PATH + +# Verify Go installation +go version + +# Build jsonnet binaries +GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnet@v${PACKAGE_VERSION} +GOBIN=/app go install github.com/google/go-jsonnet/cmd/jsonnetfmt@v${PACKAGE_VERSION} + +# Build RPM package +nfpm pkg --config /app/resources/nfpm.yaml --target /app/dist --packager rpm \ No newline at end of file diff --git a/rpms/jsonnet/resources/nfpm.yaml b/rpms/jsonnet/resources/nfpm.yaml new file mode 100644 index 0000000..7448690 --- /dev/null +++ b/rpms/jsonnet/resources/nfpm.yaml @@ -0,0 +1,36 @@ +# nfpm.yaml + +name: jsonnet +version: ${PACKAGE_VERSION} +release: ${PACKAGE_RELEASE} +arch: amd64 +platform: linux +section: default +priority: extra +description: "A data templating language" +maintainer: Google +homepage: https://github.com/google/go-jsonnet +license: Apache-2.0 + +disable_globbing: false + +replaces: + - jsonnet + +provides: + - jsonnet + +# Files to include in the package +contents: + - src: /app/jsonnet + dst: /usr/bin/jsonnet + file_info: + mode: 0755 + owner: root + group: root + - src: /app/jsonnetfmt + dst: /usr/bin/jsonnetfmt + file_info: + mode: 0755 + owner: root + group: root \ No newline at end of file