summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordd <dd@wx.tnyzeq.icu>2024-11-17 13:00:10 +0100
committerdd <dd@wx.tnyzeq.icu>2024-11-17 13:00:10 +0100
commite1df0ee38721b8dad205d2e2f059b7cd7eff55e1 (patch)
treea16c95413aa95469ae97e7c53c1b41f7f5b310ec
parent139332ce2257a178796996e3635958627a21ffd0 (diff)
parent1e038ab2024ac4b03e1ca909f89e9ffb122cd5a7 (diff)
downloadvyos-build-e1df0ee38721b8dad205d2e2f059b7cd7eff55e1.tar.gz
vyos-build-e1df0ee38721b8dad205d2e2f059b7cd7eff55e1.zip
Merge branch 'vyos:current' into current
-rw-r--r--.github/workflows/trigger_rebuild_packages.yml12
-rw-r--r--docker/Dockerfile1
-rw-r--r--scripts/package-build/amazon-cloudwatch-agent/.gitignore7
l---------scripts/package-build/amazon-cloudwatch-agent/build.py1
-rw-r--r--scripts/package-build/amazon-cloudwatch-agent/package.toml14
-rw-r--r--scripts/package-build/amazon-ssm-agent/.gitignore7
l---------scripts/package-build/amazon-ssm-agent/build.py1
-rw-r--r--scripts/package-build/amazon-ssm-agent/package.toml16
-rwxr-xr-xscripts/utils/merge-flavors73
9 files changed, 132 insertions, 0 deletions
diff --git a/.github/workflows/trigger_rebuild_packages.yml b/.github/workflows/trigger_rebuild_packages.yml
index 4355ecb8..6ccdd878 100644
--- a/.github/workflows/trigger_rebuild_packages.yml
+++ b/.github/workflows/trigger_rebuild_packages.yml
@@ -23,6 +23,10 @@ jobs:
with:
base: ${{ github.ref_name }}
filters: |
+ amazon-cloudwatch-agent:
+ - 'scripts/package-build/amazon-cloudwatch-agent/**'
+ amazon-ssm-agent:
+ - 'scripts/package-build/amazon-ssm-agent/**'
aws-gwlbtun:
- 'scripts/package-build/aws-gwlbtun/**'
ddclient:
@@ -99,6 +103,14 @@ jobs:
}
# Trigger builds based on detected changes
+ if [ "${{ steps.changes.outputs.amazon-cloudwatch-agent }}" == "true" ]; then
+ trigger_build "amazon-cloudwatch-agent"
+ fi
+
+ if [ "${{ steps.changes.outputs.amazon-ssm-agent }}" == "true" ]; then
+ trigger_build "amazon-ssm-agent"
+ fi
+
if [ "${{ steps.changes.outputs.aws-gwlbtun }}" == "true" ]; then
trigger_build "aws-gwlbtun"
fi
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 2bc4c1ac..4f2afe03 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -103,6 +103,7 @@ RUN apt-get update && apt-get install -y \
python3-flake8 \
python3-autopep8 \
python3-tomli \
+ python3-tomli-w \
yq \
debootstrap \
live-build \
diff --git a/scripts/package-build/amazon-cloudwatch-agent/.gitignore b/scripts/package-build/amazon-cloudwatch-agent/.gitignore
new file mode 100644
index 00000000..7f8e0127
--- /dev/null
+++ b/scripts/package-build/amazon-cloudwatch-agent/.gitignore
@@ -0,0 +1,7 @@
+amazon-cloudwatch-agent/
+*.buildinfo
+*.build
+*.changes
+*.deb
+*.dsc
+*.tar.gz
diff --git a/scripts/package-build/amazon-cloudwatch-agent/build.py b/scripts/package-build/amazon-cloudwatch-agent/build.py
new file mode 120000
index 00000000..3c76af73
--- /dev/null
+++ b/scripts/package-build/amazon-cloudwatch-agent/build.py
@@ -0,0 +1 @@
+../build.py \ No newline at end of file
diff --git a/scripts/package-build/amazon-cloudwatch-agent/package.toml b/scripts/package-build/amazon-cloudwatch-agent/package.toml
new file mode 100644
index 00000000..833096d4
--- /dev/null
+++ b/scripts/package-build/amazon-cloudwatch-agent/package.toml
@@ -0,0 +1,14 @@
+[[packages]]
+name = "amazon-cloudwatch-agent"
+commit_id = "v1.300050.0"
+scm_url = "https://github.com/aws/amazon-cloudwatch-agent"
+
+build_cmd = """
+
+make prepackage package-deb
+ARCH=$(dpkg --print-architecture)
+TAG=$(git describe --tags --abbrev=0)
+COMMIT=$(git rev-parse --short HEAD)
+cp ./build/bin/linux/${ARCH}/*.deb ../amazon-cloudwatch-agent_${TAG}_${COMMIT}_${ARCH}.deb
+
+"""
diff --git a/scripts/package-build/amazon-ssm-agent/.gitignore b/scripts/package-build/amazon-ssm-agent/.gitignore
new file mode 100644
index 00000000..f70728cf
--- /dev/null
+++ b/scripts/package-build/amazon-ssm-agent/.gitignore
@@ -0,0 +1,7 @@
+amazon-ssm-agent/
+*.buildinfo
+*.build
+*.changes
+*.deb
+*.dsc
+*.tar.gz
diff --git a/scripts/package-build/amazon-ssm-agent/build.py b/scripts/package-build/amazon-ssm-agent/build.py
new file mode 120000
index 00000000..3c76af73
--- /dev/null
+++ b/scripts/package-build/amazon-ssm-agent/build.py
@@ -0,0 +1 @@
+../build.py \ No newline at end of file
diff --git a/scripts/package-build/amazon-ssm-agent/package.toml b/scripts/package-build/amazon-ssm-agent/package.toml
new file mode 100644
index 00000000..ecd2fdf6
--- /dev/null
+++ b/scripts/package-build/amazon-ssm-agent/package.toml
@@ -0,0 +1,16 @@
+[[packages]]
+name = "amazon-ssm-agent"
+commit_id = "3.3.1311.0"
+scm_url = "https://github.com/aws/amazon-ssm-agent"
+
+build_cmd = """
+
+ARCH=$(dpkg --print-architecture)
+TAG=$(git describe --tags --abbrev=0)
+COMMIT=$(git rev-parse --short HEAD)
+
+make build-linux
+make package-deb
+cp ./bin/debian_${ARCH}/*.deb ../amazon-ssm-agent_${TAG}_${COMMIT}_${ARCH}.deb
+
+"""
diff --git a/scripts/utils/merge-flavors b/scripts/utils/merge-flavors
new file mode 100755
index 00000000..013014e0
--- /dev/null
+++ b/scripts/utils/merge-flavors
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2024 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Purpose: merges multiple flavor files into one
+
+import sys
+
+import tomli
+import tomli_w
+
+def load_flavor(file_path):
+ with open(file_path, 'rb') as f:
+ flavor_def = tomli.load(f)
+
+ return flavor_def
+
+# XXX: at the moment, this script is only used
+# to produce a meta-flavor for collecting packages
+# used in multiple flavors,
+# so it ignores all other flavor fields for now
+def merge_flavors(l, r):
+ if 'packages' in r:
+ l['packages'] += r['packages']
+
+ for arch in r.get('architectures', []):
+ if arch not in l['architectures']:
+ l['architectures'][arch] = {}
+
+ if 'packages' not in l['architectures'][arch]:
+ l['architectures'][arch]['packages'] = []
+
+ if 'packages' in r['architectures'][arch]:
+ l['architectures'][arch]['packages'] += \
+ r['architectures'][arch]['packages']
+
+ return l
+
+if __name__ == '__main__':
+ if len(sys.argv) < 3:
+ print("Please specify a base flavor and a list of flavor files to merge!")
+ sys.exit(1)
+
+ base_flavor = load_flavor(sys.argv[1])
+
+ if 'architectures' not in base_flavor:
+ base_flavor['architectures'] = {}
+
+ flavor_files = sys.argv[2:]
+ flavor_defs = map(load_flavor, flavor_files)
+
+ for fd in flavor_defs:
+ merge_flavors(base_flavor, fd)
+
+ base_flavor['packages'] = list(set(base_flavor['packages']))
+ for arch in base_flavor.get('architectures'):
+ if 'packages' in base_flavor['architectures'][arch]:
+ base_flavor['architectures'][arch]['packages'] = \
+ list(set(base_flavor['architectures'][arch]['packages']))
+
+ print(tomli_w.dumps(base_flavor))