From 7811533df6fd2f13f358c9bc62ef148368923298 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 07:24:28 +0000 Subject: [PATCH 1/8] Update dnfconfig to point to alma 9.2 repo --- configfiles/dnfconfig.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configfiles/dnfconfig.yaml b/configfiles/dnfconfig.yaml index 4ed9fbe8..50405472 100644 --- a/configfiles/dnfconfig.yaml +++ b/configfiles/dnfconfig.yaml @@ -17,9 +17,9 @@ repo-bundle: extras: enabled: false version-labels: - default: 9.1 + default: 9.2 # Don't use latest if you want reproducible builds, this is just for experiments - latest: 9.2 + latest: 9.3 epel9-subset: gpgcheck: true From 450cfa85a58b2857045c4354d4496a6c2951a145 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 07:25:16 +0000 Subject: [PATCH 2/8] Update eext base image to 9.3 minimal image --- barney.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barney.yaml b/barney.yaml index 5c660c03..e82ed9f5 100644 --- a/barney.yaml +++ b/barney.yaml @@ -7,7 +7,7 @@ images: internal/alma-9.1-bootstrap: units: - - image: barney.ci/docker%image/quay.io/almalinuxorg/9-minimal//9.1-20230222 + - image: barney.ci/docker%image/quay.io/almalinuxorg/9-minimal//9.3-20231124 - sources: [] build: | mkdir -p /dest/etc From 45ffba81ce41c9308fd3a5abf7824f680195cc52 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 07:47:12 +0000 Subject: [PATCH 3/8] Remove local-deps from manifest Instead of specifying local-deps in manifest, make it a commandline param. This way, when a generator is implemented, we can make it generate the command with --use-local-deps argument, when dependencies are specified in the generator spec. --- cmd/build.go | 6 ++++-- cmd/common.go | 1 + cmd/mock.go | 4 +++- impl/mock.go | 4 +++- impl/mock_cfg.go | 3 ++- impl/mock_cfg_test.go | 6 +----- manifest/manifest.go | 1 - manifest/testData/sampleManifest1.yaml | 2 -- manifest/testData/sampleManifest3.yaml | 1 - 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cmd/build.go b/cmd/build.go index c64ce031..8b44cb14 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -24,7 +24,8 @@ var buildCmd = &cobra.Command{ SkipBuildPrep: commonArgs.skipBuildPrep, } extraMockArgs := impl.MockExtraCmdlineArgs{ - NoCheck: commonArgs.noCheck} + NoCheck: commonArgs.noCheck, + UseLocalDeps: commonArgs.useLocalDeps} if err := impl.Build(repo, pkg, defaultArch(), extraCreateSrpmArgs, extraMockArgs); err != nil { @@ -37,7 +38,8 @@ var buildCmd = &cobra.Command{ func init() { buildCmd.Flags().StringVarP(&repoName, "repo", "r", "", "Repository name (OPTIONAL)") buildCmd.Flags().StringVarP(&pkgName, "package", "p", "", "package name (OPTIONAL)") - buildCmd.Flags().BoolVar(&commonArgs.noCheck, "nocheck", false, "Pass --nocheck to rpmbuild (OPTIONAL)") buildCmd.Flags().BoolVar(&commonArgs.skipBuildPrep, "skip-build-prep", false, "Skips build-prep during createSrpm for cases where build-prep requires dependencies not in container (OPTIONAL)") + buildCmd.Flags().BoolVar(&commonArgs.noCheck, "nocheck", false, "Pass --nocheck to rpmbuild (OPTIONAL)") + buildCmd.Flags().BoolVar(&commonArgs.useLocalDeps, "use-local-deps", false, "Configure file://RPMS as a high priority local-repo. Used to plumb in other eext packages as dependencies (OPTIONAL)") rootCmd.AddCommand(buildCmd) } diff --git a/cmd/common.go b/cmd/common.go index 4dd1b95d..e88cc4ff 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -13,6 +13,7 @@ var commonArgs = struct { skipBuildPrep bool arch string noCheck bool + useLocalDeps bool }{} func defaultArch() string { diff --git a/cmd/mock.go b/cmd/mock.go index 2bd491ec..7c6018d6 100644 --- a/cmd/mock.go +++ b/cmd/mock.go @@ -24,7 +24,8 @@ var mockCmd = &cobra.Command{ pkg, _ := cmd.Flags().GetString("package") extraArgs := impl.MockExtraCmdlineArgs{ NoCheck: commonArgs.noCheck, - OnlyCreateCfg: onlyCreateCfg} + OnlyCreateCfg: onlyCreateCfg, + UseLocalDeps: commonArgs.useLocalDeps} if err := impl.Mock(repo, pkg, commonArgs.arch, extraArgs); err != nil { return err } @@ -38,5 +39,6 @@ func init() { mockCmd.Flags().StringVarP(&commonArgs.arch, "target", "t", defaultArch(), "target architecture for the rpmbuild (OPTIONAL)") mockCmd.Flags().BoolVar(&onlyCreateCfg, "only-create-cfg", false, "Just create mock configuration, don't run mock (OPTIONAL)") mockCmd.Flags().BoolVar(&commonArgs.noCheck, "nocheck", false, "Pass --nocheck to rpmbuild (OPTIONAL)") + mockCmd.Flags().BoolVar(&commonArgs.useLocalDeps, "use-local-deps", false, "Configure file://RPMS as a high priority local-repo. Used to plumb in other eext packages as dependencies (OPTIONAL)") rootCmd.AddCommand(mockCmd) } diff --git a/impl/mock.go b/impl/mock.go index 2fa866d8..f18c8667 100644 --- a/impl/mock.go +++ b/impl/mock.go @@ -30,6 +30,7 @@ type mockBuilder struct { type MockExtraCmdlineArgs struct { NoCheck bool OnlyCreateCfg bool + UseLocalDeps bool } func (bldr *mockBuilder) log(format string, a ...any) { @@ -251,7 +252,7 @@ func (bldr *mockBuilder) runStages() error { return err } - if bldr.buildSpec.LocalDeps { + if bldr.useLocalDeps { bldr.setupStageErrPrefix("setupDeps") if err := bldr.setupDeps(); err != nil { return err @@ -342,6 +343,7 @@ func Mock(repo string, pkg string, arch string, extraArgs MockExtraCmdlineArgs) arch: arch, rpmReleaseMacro: rpmReleaseMacro, eextSignature: eextSignature, + useLocalDeps: extraArgs.UseLocalDeps, buildSpec: &pkgSpec.Build, dnfConfig: dnfConfig, errPrefix: errPrefix, diff --git a/impl/mock_cfg.go b/impl/mock_cfg.go index 1684e085..5865f270 100644 --- a/impl/mock_cfg.go +++ b/impl/mock_cfg.go @@ -32,6 +32,7 @@ type builderCommon struct { arch string rpmReleaseMacro string eextSignature string + useLocalDeps bool buildSpec *manifest.Build dnfConfig *dnfconfig.DnfConfig errPrefix util.ErrPrefix @@ -104,7 +105,7 @@ func (cfgBldr *mockCfgBuilder) populateTemplateData() error { } } - if cfgBldr.buildSpec.LocalDeps { + if cfgBldr.useLocalDeps { localRepo := &dnfconfig.DnfRepoParams{ Name: "local-deps", BaseURL: "file://" + getMockDepsDir(cfgBldr.pkg, arch), diff --git a/impl/mock_cfg_test.go b/impl/mock_cfg_test.go index 23915438..c3101670 100644 --- a/impl/mock_cfg_test.go +++ b/impl/mock_cfg_test.go @@ -57,11 +57,6 @@ func testMockConfig(t *testing.T, chained bool) { require.NoError(t, err) require.NotNil(t, manifestObj) - // Force chained attr in manifest - if chained { - manifestObj.Package[0].Build.LocalDeps = true - } - t.Log("Load dnfconfig.yaml") dnfConfig, loadErr := dnfconfig.LoadDnfConfig() require.NoError(t, loadErr) @@ -75,6 +70,7 @@ func testMockConfig(t *testing.T, chained bool) { eextSignature: "my-signature", buildSpec: &manifestObj.Package[0].Build, dnfConfig: dnfConfig, + useLocalDeps: chained, }, } diff --git a/manifest/manifest.go b/manifest/manifest.go index aecacf49..948c6338 100644 --- a/manifest/manifest.go +++ b/manifest/manifest.go @@ -29,7 +29,6 @@ type RepoBundle struct { type Build struct { Include []string `yaml:"include"` RepoBundle []RepoBundle `yaml:"repo-bundle"` - LocalDeps bool `yaml:"local-deps"` } // DetachedSignature spec diff --git a/manifest/testData/sampleManifest1.yaml b/manifest/testData/sampleManifest1.yaml index 06868e21..6401ba3f 100644 --- a/manifest/testData/sampleManifest1.yaml +++ b/manifest/testData/sampleManifest1.yaml @@ -29,7 +29,6 @@ package: - name: foo version: v1 - name: bar - local-deps: true - name: binutils upstream-sources: - source-bundle: @@ -60,4 +59,3 @@ package: - name: foo version: v1 - name: bar - local-deps: true diff --git a/manifest/testData/sampleManifest3.yaml b/manifest/testData/sampleManifest3.yaml index 8dab3ddc..75e66ea7 100644 --- a/manifest/testData/sampleManifest3.yaml +++ b/manifest/testData/sampleManifest3.yaml @@ -16,4 +16,3 @@ package: - name: foo version: v1 - name: bar - local-deps: true From 2a0ecf99395d868eeeaac2c65c63aee028e7225b Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 09:00:11 +0000 Subject: [PATCH 4/8] Add manifest spec for eextgen --- manifest/manifest.go | 59 ++++++++++++++++++++++++-- manifest/testData/sampleManifest1.yaml | 35 +++++++++++++++ 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/manifest/manifest.go b/manifest/manifest.go index 948c6338..05a1aafc 100644 --- a/manifest/manifest.go +++ b/manifest/manifest.go @@ -24,11 +24,65 @@ type RepoBundle struct { DnfRepoParamsOverride map[string]dnfconfig.DnfRepoParamsOverride `yaml:"override"` } +// MultilibRpmFilenamePattern spec +// +// Patterns: Specifies a list of patterns of RPM filenames. +// Remove: Specifies if the patterns are to be removed/kept. +type MultilibRpmFilenamePattern struct { + Patterns []string `yaml:"patterns"` + Remove bool `yaml:"remove"` +} + +// MultiLib spec for a specific native arch +// +// NativeArchPattern specifies list of patterns of native-arch RPMs +// to be removed/kept in the multilib image. +// +// OtherArchPattern specifies list of patterns of other-arch RPMs +// to be removed/kept in the multilib image. +type Multilib struct { + NativeArchPattern MultilibRpmFilenamePattern `yaml:"native-arch"` + OtherArchPattern MultilibRpmFilenamePattern `yaml:"other-arch"` +} + +// Dependency spec +// Used to specify a dependency to be consumed by the generator +// +// Dependency is a tuple of repo and package. +// +// Repo can specify some other barney repo like "code.arista.io/eos/eext/" +// It can also point to current repo with "." +// +// Package can be left empty when the specified repo has only one package. +type Dependency struct { + Repo string `yaml:"repo"` + Package string `yaml:"package"` +} + +// Generator spec +// Used only by the eextgen barney generator to generate eext commands to build barney images +// +// CmdOptions specifies extra options to be added to the default command. It's index by +// the command name(mock/create-srpm) and the value is a list of extra-options. +// +// Valid options for mock are [ --nocheck ] +// Valid options for create-srpm are [ --skip-build-prep ] +// +// # Dependencies is a list of other eext package dependencies for this package +// +// MultiLib specifies MultiLib spec to generate multilib. It's indexed by native-arch (i686/x86_64). +type Generator struct { + CmdOptions map[string][]string `yaml:"cmd-options"` + Multilib map[string]Multilib `yaml:"multilib"` + Dependencies []Dependency `yaml:"dependencies"` +} + // Build spec // mock cfg is generated for each target depending on this type Build struct { Include []string `yaml:"include"` RepoBundle []RepoBundle `yaml:"repo-bundle"` + Generator Generator `yaml:"eextgen"` } // DetachedSignature spec @@ -63,9 +117,8 @@ type UpstreamSrc struct { } // Package spec -// In the general case, there will only be one package/ -// But each git repo can have multiple packages if there is -// a dependency order to be maintained. +// In the general case, there will only be one package. +// But we can have a bundle repo with multiple pakcages too. type Package struct { Name string `yaml:"name"` Subdir bool `yaml:"subdir"` diff --git a/manifest/testData/sampleManifest1.yaml b/manifest/testData/sampleManifest1.yaml index 6401ba3f..8e2be125 100644 --- a/manifest/testData/sampleManifest1.yaml +++ b/manifest/testData/sampleManifest1.yaml @@ -29,6 +29,16 @@ package: - name: foo version: v1 - name: bar + eextgen: + cmd-options: + mock: + - "--nocheck" + create-srpm: + - "--skip-build-prep" + dependencies: + - repo: . + package: libpcap + - repo: code.arista.io/eos/eext/glibc - name: binutils upstream-sources: - source-bundle: @@ -59,3 +69,28 @@ package: - name: foo version: v1 - name: bar + - name: iptables + upstream-sources: + - source-bundle: + name: srpm + override: + version: 1.1 + type: srpm + build: + repo-bundle: + - name: foo + version: v1 + - name: bar + eextgen: + multilib: + i686: + native-arch: + remove: false + patterns: + - "iptables-devel*" + - "iptables-libs*" + other-arch: + remove: true + patterns: + - "iptables-devel*" + From 1e61df0ca91e0f883c51709be6848821e298b7ce Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 09:09:26 +0000 Subject: [PATCH 5/8] Remove bad file --- g | 107 -------------------------------------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 g diff --git a/g b/g deleted file mode 100644 index be03b0b8..00000000 --- a/g +++ /dev/null @@ -1,107 +0,0 @@ -commit f50be4fe9b4f01028b89f8c5aafa3f19feef0545 (HEAD -> aajith-add-epel-relase) -Author: Arun Ajith S -Date: Fri Sep 1 10:46:28 2023 +0000 - - dnfconfig: Remove epel9 bundle - - The epel9 repo-bundle pointed to a moving dnf repository which is bad - for reproducible eext builds. - - Instead of epel9, use a new repo-bundle epel9-subset which is a - frozen/versioned subset of epel9 managed locally. It only has a few epel - packages like quilt, hiredis etc required by existing eext third-party - repos as on the date of this change. - -commit 6d01f12a0bb8aef44bc48a0b7fba87ec94459916 -Author: Arun Ajith S -Date: Fri Sep 1 10:45:26 2023 +0000 - - mock_cfg: Sort packages in chroot setup - -commit 7fbc29a0483a981c7ddb1ae5032ad871a296041c -Author: Arun Ajith S -Date: Fri Sep 1 10:40:30 2023 +0000 - - base-image: Add epel-release into the base image - - This makes sure that /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9 is installed in - the image to be used later by mock for gpgcheck. - -commit 9b9101a508995e0d1bc073e719ff80ea2d4ccbc3 -Author: Arun Ajith S -Date: Fri Sep 1 02:51:38 2023 -0700 - - bootstrap: Rename externaldeps to epel9 - -commit 87c2bd6e394ec9265563570f1fa7a9100f90b4c9 (origin/main, origin/aajith-new-features, origin/HEAD, main, aajith-new-features) -Author: Arun Ajith S -Date: Sun Aug 20 02:15:01 2023 -0700 - - cmd/testData: Fix yamllint issues - -commit 507d1e249bd044306e197ae1a6009d9e568c3ad9 -Author: Arun Ajith S -Date: Sun Aug 20 01:57:55 2023 -0700 - - Don't use container image based mock chroot - - mock-5.0 and above uses a podman container for bootstrap chroot. - See: https://rpm-software-management.github.io/mock/Feature-container-for-bootstrap - - Avoid this to make sure we don't another container layer for the barney - builds. - -commit 96972b22a668c891fd8e080a51f7eb66e0e72c03 -Author: Arun Ajith S -Date: Sun Aug 20 08:38:31 2023 +0000 - - Make eext base image build reproducible - - 1. Use alma-vault as the base repo for already frozen release 9.1 - 2. Exclude podman from the repos so that mock doesn't accidentally use - podman based builds. Note that this is weak dependency for mock. - 3. Since epel keeps getting updates, don't use epel, instead use a local - repo created manually which a subset of epel packages needed for eext. - -commit 00285e29082a13a78ade9adc7380f5df36e23821 -Author: Arun Ajith S -Date: Wed Aug 16 03:44:06 2023 -0700 - - Enable build for unmodified-srpms - - Add new package types `unmodified-srpm` and `standalone`. - - In unmodified-srpm, we expect no spec file or sources in the git - repository. We'll just build the upstream srpm directly. - - For standalone srpms, there might be no upstream sources with all - sources specified locally. - - Fixes: BUG838063 - -commit f93539ce72efef198032a6a96941a31747203441 -Author: Arun Ajith S -Date: Mon Aug 14 04:30:42 2023 -0700 - - eext: Implement chained builds - - Add a new attribute `local-deps` in the build spec of the manifest. - Add a new config DepsDir which is the directory containing local RPM - dependencies, default it to /RPMS so that barney build output of - dependencies can be pulled directly in to the build floor. - - When building packages with local-deps, all the dependencies in DepsDir - are copied over to a sub-path in the working directory, then createrepo - is run there to generate the yum metadata, and the auto-generated mock - configuration has a new `local-deps` repo setup to point to this - directory with the dependency RPMs and yum metadata with a `file://` - URL. - - Enhanced mock_cfg_test to verify that the new repo is generated when the - manifest specifies a chained build. Also added a separate test to make - sure the deps are copied over and that the yum metadata is generated. - - Fixes: BUG837043 - -commit 99f73df50d0d3cecf4ab358169d37da3b55561af -Author: Arun Ajith S From cb2e521fc342ec536f118459ac052641924eb6f8 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Mon, 18 Sep 2023 23:20:44 -0700 Subject: [PATCH 6/8] Update Dockerfile --- Dockerfile | 51 +++++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index e80cd016..1c4ccdd8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,43 +1,42 @@ # syntax=docker/dockerfile:1.3 -FROM rockylinux:9.0.20220720 AS base +FROM quay.io/almalinuxorg/9-minimal:9.3-20231124 AS base +RUN microdnf install -y dnf RUN dnf install -y epel-release-9* git-2.* jq-1.* \ openssl-3.* python3-pip-21.* python3-pyyaml-5.* \ rpmdevtools-9.* sudo-1.* && \ - dnf install -y mock-3.* automake-1.16.* && \ - dnf install -y wget-1.21.* && dnf clean all + dnf install -y mock-5.* automake-1.16.* && \ + dnf install -y wget-1.21.* && \ + dnf install -y vim-enhanced emacs && dnf clean all RUN useradd -s /bin/bash mockbuild -p "$(openssl passwd -1 mockbuild)" CMD ["bash"] FROM base as builder -ARG EEXT_ROOT=. USER root -RUN dnf install -y golang-1.18.* && dnf clean all -RUN mkdir -p src && mkdir -p bin -WORKDIR /src -COPY ./${EEXT_ROOT}/go.mod ./ -COPY ./${EEXT_ROOT}/go.sum ./ +RUN dnf install -y golang && dnf clean all +RUN mkdir -p /src/code.arista.io/eos/tools/eext && mkdir -p /usr/bin +WORKDIR /src/code.arista.io/eos/tools/eext +COPY ./go.mod ./ +COPY ./go.sum ./ +COPY ./*.go ./ +COPY ./cmd/ cmd/ +COPY ./impl/ impl/ +COPY ./util/ util/ +COPY ./testutil/ testutil/ +COPY ./manifest/ manifest/ +COPY ./dnfconfig/ dnfconfig/ +COPY ./srcconfig/ srcconfig/ RUN go mod download -COPY ./${EEXT_ROOT}/*.go ./ -COPY ./${EEXT_ROOT}/cmd/ cmd/ -COPY ./${EEXT_ROOT}/impl/ impl/ -COPY ./${EEXT_ROOT}/util/ util/ -COPY ./${EEXT_ROOT}/testutil/ testutil/ -COPY ./${EEXT_ROOT}/manifest/ manifest/ -COPY ./${EEXT_ROOT}/dnfconfig/ dnfconfig/ -RUN go build -o /bin/eext && \ - go test ./... && \ - GO111MODULE=off go get -u golang.org/x/lint/golint && \ - PATH="$PATH:$HOME/go/bin" golint -set_exit_status ./... && \ - go vet ./... && \ - test -z "$(gofmt -l .)" +RUN go build -o /usr/bin/eext FROM base as deploy -ARG EEXT_ROOT=. ARG CFG_DIR=/usr/share/eext ARG MOCK_CFG_TEMPLATE=mock.cfg.template ARG DNF_CFG_FILE=dnfconfig.yaml +ARG DNF_CFG_FILE=srcconfig.yaml COPY --from=builder /bin/eext /usr/bin/ -COPY ./${EEXT_ROOT}/configfiles/${MOCK_CFG_TEMPLATE} ${CFG_DIR}/${MOCK_CFG_TEMPLATE} -COPY ./${EEXT_ROOT}/configfiles/${DNF_CFG_FILE} ${CFG_DIR}/${DNF_CFG_FILE} +COPY ./configfiles/${MOCK_CFG_TEMPLATE} ${CFG_DIR}/${MOCK_CFG_TEMPLATE} +COPY ./configfiles/${DNF_CFG_FILE} ${CFG_DIR}/${DNF_CFG_FILE} +COPY ./configfiles/${SRC_CFG_FILE} ${CFG_DIR}/${SRC_CFG_FILE} RUN mkdir -p /etc/pki/eext -COPY ./${EEXT_ROOT}/pki/*.pem /etc/pki/eext/ +COPY ./pki /etc/pki/eext +RUN mkdir /var/eext && chmod 0777 /var/eext && mkdir /dest && chmod 0777 /dest From 782a2fdc1787b5b5774274eb2d3529b2b7f364c2 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 02:53:53 -0800 Subject: [PATCH 7/8] Fix Dockerfile lint --- Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1c4ccdd8..dda392d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,18 @@ # syntax=docker/dockerfile:1.3 FROM quay.io/almalinuxorg/9-minimal:9.3-20231124 AS base -RUN microdnf install -y dnf +RUN microdnf install -y dnf-4.* && microdnf clean all RUN dnf install -y epel-release-9* git-2.* jq-1.* \ openssl-3.* python3-pip-21.* python3-pyyaml-5.* \ rpmdevtools-9.* sudo-1.* && \ dnf install -y mock-5.* automake-1.16.* && \ dnf install -y wget-1.21.* && \ - dnf install -y vim-enhanced emacs && dnf clean all + dnf install -y vim-enhanced-2:8.2.* emacs-27.* && dnf clean all RUN useradd -s /bin/bash mockbuild -p "$(openssl passwd -1 mockbuild)" CMD ["bash"] FROM base as builder USER root -RUN dnf install -y golang && dnf clean all +RUN dnf install -y golang-1.20.* && dnf clean all RUN mkdir -p /src/code.arista.io/eos/tools/eext && mkdir -p /usr/bin WORKDIR /src/code.arista.io/eos/tools/eext COPY ./go.mod ./ @@ -25,8 +25,7 @@ COPY ./testutil/ testutil/ COPY ./manifest/ manifest/ COPY ./dnfconfig/ dnfconfig/ COPY ./srcconfig/ srcconfig/ -RUN go mod download -RUN go build -o /usr/bin/eext +RUN go mod download && go build -o /usr/bin/eext FROM base as deploy ARG CFG_DIR=/usr/share/eext From c588859475affe226f4bed8d057fb66b329bacb7 Mon Sep 17 00:00:00 2001 From: Arun Ajith S Date: Tue, 2 Jan 2024 03:05:35 -0800 Subject: [PATCH 8/8] Fix yaml lint issues --- manifest/testData/sampleManifest1.yaml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/manifest/testData/sampleManifest1.yaml b/manifest/testData/sampleManifest1.yaml index 8e2be125..2debb169 100644 --- a/manifest/testData/sampleManifest1.yaml +++ b/manifest/testData/sampleManifest1.yaml @@ -84,13 +84,12 @@ package: eextgen: multilib: i686: - native-arch: - remove: false - patterns: - - "iptables-devel*" - - "iptables-libs*" - other-arch: - remove: true - patterns: - - "iptables-devel*" - + native-arch: + remove: false + patterns: + - "iptables-devel*" + - "iptables-libs*" + other-arch: + remove: true + patterns: + - "iptables-devel*"