diff --git a/.github/workflows/ci-pipeline.yml b/.github/workflows/ci-pipeline.yml
new file mode 100644
index 0000000..9a0ab92
--- /dev/null
+++ b/.github/workflows/ci-pipeline.yml
@@ -0,0 +1,26 @@
+name: CI
+
+on:
+ push:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ services:
+ docker:
+ image: docker:20.10.12-dind
+ options: --privileged
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Set up Go
+ uses: actions/setup-go@v5
+ with:
+ go-version: 1.21.6
+
+ - name: Build
+ run: |
+ go run builder/main.go
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..8885190
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/torizon-containers.iml b/.idea/torizon-containers.iml
new file mode 100644
index 0000000..5e764c4
--- /dev/null
+++ b/.idea/torizon-containers.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..81d924e
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,16 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+
+ {
+ "name": "Launch Package",
+ "type": "go",
+ "request": "launch",
+ "mode": "auto",
+ "program": "${fileDirname}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/builder/go.mod b/builder/go.mod
new file mode 100644
index 0000000..76a998b
--- /dev/null
+++ b/builder/go.mod
@@ -0,0 +1,40 @@
+module builder
+
+go 1.21.6
+
+require github.com/docker/docker v25.0.2+incompatible
+
+require (
+ github.com/Microsoft/go-winio v0.6.1 // indirect
+ github.com/containerd/containerd v1.7.13 // indirect
+ github.com/containerd/log v0.1.0 // indirect
+ github.com/distribution/reference v0.5.0 // indirect
+ github.com/docker/go-connections v0.5.0 // indirect
+ github.com/docker/go-units v0.5.0 // indirect
+ github.com/dominikbraun/graph v0.23.0 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/go-logr/logr v1.4.1 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/gogo/protobuf v1.3.2 // indirect
+ github.com/klauspost/compress v1.17.5 // indirect
+ github.com/moby/patternmatcher v0.6.0 // indirect
+ github.com/moby/sys/sequential v0.5.0 // indirect
+ github.com/moby/sys/user v0.1.0 // indirect
+ github.com/moby/term v0.5.0 // indirect
+ github.com/morikuni/aec v1.0.0 // indirect
+ github.com/opencontainers/go-digest v1.0.0 // indirect
+ github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b // indirect
+ github.com/pkg/errors v0.9.1 // indirect
+ github.com/sirupsen/logrus v1.9.3 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect
+ go.opentelemetry.io/otel v1.22.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 // indirect
+ go.opentelemetry.io/otel/metric v1.22.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.22.0 // indirect
+ go.opentelemetry.io/otel/trace v1.22.0 // indirect
+ golang.org/x/mod v0.11.0 // indirect
+ golang.org/x/sys v0.16.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.10.0 // indirect
+ gotest.tools/v3 v3.5.1 // indirect
+)
diff --git a/builder/go.sum b/builder/go.sum
new file mode 100644
index 0000000..7e1d056
--- /dev/null
+++ b/builder/go.sum
@@ -0,0 +1,143 @@
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
+github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
+github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
+github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
+github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
+github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=
+github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w=
+github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
+github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/containerd/containerd v1.7.13 h1:wPYKIeGMN8vaggSKuV1X0wZulpMz4CrgEsZdaCyB6Is=
+github.com/containerd/containerd v1.7.13/go.mod h1:zT3up6yTRfEUa6+GsITYIJNgSVL9NQ4x4h1RPzk0Wu4=
+github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
+github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
+github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
+github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY=
+github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
+github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo=
+github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
+github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E=
+github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
+github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
+github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
+github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
+github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
+github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg=
+github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
+github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
+github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
+github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8=
+github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw=
+go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y=
+go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0 h1:FyjCyI9jVEfqhUh2MoSkmolPjfh5fp2hnV0b0irxH4Q=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.22.0/go.mod h1:hYwym2nDEeZfG/motx0p7L7J1N1vyzIThemQsb4g2qY=
+go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg=
+go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY=
+go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw=
+go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc=
+go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0=
+go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo=
+go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
+go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
+golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
+golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg=
+golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g=
+google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU=
+google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY=
+google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
+google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
+google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
+google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
+gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
diff --git a/builder/main.go b/builder/main.go
new file mode 100644
index 0000000..667bc27
--- /dev/null
+++ b/builder/main.go
@@ -0,0 +1,341 @@
+package main
+
+import (
+ "bufio"
+ "context"
+ "errors"
+ "github.com/docker/docker/api/types"
+ "github.com/docker/docker/client"
+ "github.com/docker/docker/pkg/archive"
+ "io"
+ "io/fs"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+func main() {
+ log.SetFlags(log.LstdFlags | log.Lmicroseconds)
+ // get every Dockerfile file path
+ relativeContextPaths, err := WalkDirAndReturnPathsThatMatch("../debian-docker-images/upstream", "Dockerfile")
+ var relativeDockerfilePaths []string
+ var relativeBuildContexts []string
+
+ for _, path := range relativeContextPaths {
+ relativeDockerfilePaths = append(relativeDockerfilePaths, path+"/Dockerfile")
+ relativeBuildContexts = append(relativeBuildContexts, path)
+ }
+ if err != nil {
+ log.Println("error: error while walking directory")
+ }
+
+ // for every Dockerfile found, parse it to get the labels containing the build metadata
+ var labels []map[string]string
+ log.Println("Parsed Dockerfiles:")
+ for _, path := range relativeBuildContexts {
+ l, err := parseDockerfileLabels(path + "/Dockerfile")
+ if err != nil {
+ log.Println("Error:", err)
+ log.Println("Aborting")
+ os.Exit(1)
+ }
+ log.Println(path)
+ l["path"] = path
+ labels = append(labels, l)
+ }
+
+ //log.Println(labels)
+
+ dependencyMap := make(map[string][]string)
+
+ log.Println("Generating a dependency map...")
+ log.Println("Dependency Map:")
+ for _, label := range labels {
+ child := label["org.toradex.image.namespace"] + "/" + label["org.toradex.image.name"]
+ parent := label["org.toradex.image.base.namespace"] + "/" + label["org.toradex.image.base.name"]
+
+ // Check if the child already exists in the dependency map for the parent
+ exists := false
+ for _, existingChild := range dependencyMap[parent] {
+ if existingChild == child {
+ exists = true
+ break
+ }
+ }
+
+ if !exists {
+ dependencyMap[parent] = append(dependencyMap[parent], child)
+ }
+ }
+
+ startKey := "library/debian"
+
+ buildWorld := os.Getenv("BUILD_WORLD")
+ if buildWorld == "1" {
+ var buildOrder []string
+
+ traverseMap(dependencyMap, startKey, make(map[string]bool), &buildOrder)
+ log.Println("World Build Order is:")
+ log.Print(buildOrder)
+
+ log.Println("Building...")
+ tasks := matchOrderWithLabels(labels, buildOrder)
+ log.Println(tasks)
+ for _, task := range tasks {
+ log.Printf("Building %s\n", task["IMAGE"])
+
+ // can't pass the map directly, so a copy is needed
+ baseImageRegistry := task["BASE_IMAGE_REGISTRY"]
+ baseImageNamespace := task["BASE_IMAGE_NAMESPACE"]
+ baseImageName := task["BASE_IMAGE_NAME"]
+ baseImageTag := task["BASE_IMAGE_TAG"]
+ contextPath := task["DOCKERFILE_PATH"]
+
+ buildArgs := map[string]*string{
+ "BASE_IMAGE_REGISTRY": &baseImageRegistry,
+ "BASE_IMAGE_NAMESPACE": &baseImageNamespace,
+ "BASE_IMAGE_NAME": &baseImageName,
+ "BASE_IMAGE_TAG": &baseImageTag,
+ }
+
+ err = buildImage(contextPath, buildArgs)
+ if err != nil {
+ log.Printf("Error building image: %v\n", err)
+ os.Exit(1)
+ }
+ }
+ }
+}
+
+func traverseMap(dependencyMap map[string][]string, currentKey string, visited map[string]bool, resultSlice *[]string) {
+ if visited[currentKey] {
+ return
+ }
+
+ visited[currentKey] = true
+ *resultSlice = append(*resultSlice, currentKey)
+
+ for _, child := range dependencyMap[currentKey] {
+ traverseMap(dependencyMap, child, visited, resultSlice)
+ }
+}
+
+func matchOrderWithLabels(labels []map[string]string, buildOrder []string) []map[string]string {
+ result := make([]map[string]string, 0)
+
+ for _, member := range buildOrder {
+ for _, label := range labels {
+ ImageNamespace := label["org.toradex.image.namespace"]
+ ImageName := label["org.toradex.image.name"]
+ ImageTag := label["org.toradex.image.tag.major"]
+
+ BaseImageNamespace := label["org.toradex.image.base.namespace"]
+ BaseImageName := label["org.toradex.image.base.name"]
+
+ var BaseImageTag string
+ if BaseImageNamespace == "library" && BaseImageName == "debian" {
+ // debian follows the MAJOR.MINOR-VARIANT scheme instead of full semantic versioning, and will be hosted in the main "library" namespace
+ BaseImageTag = label["org.toradex.image.base.tag.major"] + "." + label["org.toradex.image.base.tag.minor"] + "-" + label["org.toradex.image.base.variant"]
+ } else if BaseImageNamespace == "torizon" && BaseImageName == "debian" {
+ // the torizon debian image follows a MAJOR-VARIANT
+ BaseImageTag = label["org.toradex.image.base.tag.major"] + "-" + label["org.toradex.image.base.variant"]
+ } else {
+ // for all other images the major suffices
+ BaseImageTag = label["org.toradex.image.base.tag.major"]
+ }
+
+ if ImageNamespace+"/"+ImageName == member {
+ result = append(result, map[string]string{
+ "IMAGE": member,
+ "IMAGE_REGISTRY": label["org.toradex.image.registry"],
+ "IMAGE_NAMESPACE": ImageNamespace,
+ "IMAGE_NAME": ImageName,
+ "IMAGE_TAG": ImageTag,
+ "IMAGE_ARCH": label["org.toradex.image.arch"],
+ "BASE_IMAGE_REGISTRY": label["org.toradex.image.base.registry"],
+ "BASE_IMAGE_NAMESPACE": BaseImageNamespace,
+ "BASE_IMAGE_NAME": BaseImageName,
+ "BASE_IMAGE_TAG": BaseImageTag,
+ "DOCKERFILE_PATH": label["path"],
+ })
+ // Break the inner loop once a match is found to avoid unnecessary iterations
+ break
+ }
+ }
+ }
+ return result
+}
+
+func matchOrderWithLabels1(labels []map[string]string, buildOrder []string) map[string]map[string]string {
+ result := make(map[string]map[string]string)
+
+ for _, member := range buildOrder {
+ for _, label := range labels {
+ ImageNamespace := label["org.toradex.image.namespace"]
+ ImageName := label["org.toradex.image.name"]
+ ImageTag := label["org.toradex.image.tag.major"]
+
+ BaseImageNamespace := label["org.toradex.image.base.namespace"]
+ BaseImageName := label["org.toradex.image.base.name"]
+
+ var BaseImageTag string
+ if BaseImageNamespace == "library" && BaseImageName == "debian" {
+ // debian follows the MAJOR.MINOR-VARIANT scheme instead of full semantic versioning, and will be hosted in the main "library" namespace
+ BaseImageTag = label["org.toradex.image.base.tag.major"] + "." + label["org.toradex.image.base.tag.minor"] + "-" + label["org.toradex.image.base.variant"]
+ } else if BaseImageNamespace == "torizon" && BaseImageName == "debian" {
+ // the torizon debian image follows a MAJOR-VARIANT
+ BaseImageTag = label["org.toradex.image.base.tag.major"] + "-" + label["org.toradex.image.base.variant"]
+ } else {
+ // for all other images the major suffices
+ BaseImageTag = label["org.toradex.image.base.tag.major"]
+ }
+
+ if ImageNamespace+"/"+ImageName == member {
+ result[member] = map[string]string{
+ "IMAGE_REGISTRY": label["org.toradex.image.registry"],
+ "IMAGE_NAMESPACE": ImageNamespace,
+ "IMAGE_NAME": ImageName,
+ "IMAGE_TAG": ImageTag,
+ "IMAGE_ARCH": label["org.toradex.image.arch"],
+ "BASE_IMAGE_REGISTRY": label["org.toradex.image.base.registry"],
+ "BASE_IMAGE_NAMESPACE": BaseImageNamespace,
+ "BASE_IMAGE_NAME": BaseImageName,
+ "BASE_IMAGE_TAG": BaseImageTag,
+ "DOCKERFILE_PATH": label["path"],
+ }
+ break
+ }
+ }
+ }
+ return result
+}
+
+func WalkDirAndReturnPathsThatMatch(root string, name string) ([]string, error) {
+ var relativeContextPaths []string
+ err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error {
+ if d.IsDir() {
+ return nil
+ }
+
+ if strings.Contains(path, name) {
+ relPath, err := filepath.Rel(root, path)
+ if err != nil {
+ return err
+ }
+ completeRelativePath := root + "/" + relPath
+ relDir := strings.TrimSuffix(completeRelativePath, "/Dockerfile")
+ relativeContextPaths = append(relativeContextPaths, relDir)
+ }
+ return nil
+ })
+ return relativeContextPaths, err
+}
+
+func buildImage(contextPath string, buildArgs map[string]*string) error {
+ // Create a Docker client
+ cli, err := client.NewClientWithOpts(
+ client.FromEnv,
+ client.WithAPIVersionNegotiation(),
+ )
+ if err != nil {
+ return err
+ }
+
+ // Always assume that contextPath is also the build context
+ buildContext, err := archive.TarWithOptions(contextPath, &archive.TarOptions{})
+ if err != nil {
+ return err
+ }
+
+ buildOptions := types.ImageBuildOptions{
+ BuildArgs: buildArgs,
+ Dockerfile: "Dockerfile",
+ Context: buildContext,
+ Tags: []string{"testimage:tag"},
+ }
+
+ buildResponse, err := cli.ImageBuild(context.Background(), buildContext, buildOptions)
+ if err != nil {
+ return err
+ }
+
+ // Print build logs
+ defer buildResponse.Body.Close()
+ _, err = io.Copy(os.Stdout, buildResponse.Body)
+ if err != nil {
+ return err
+ }
+
+ log.Println("Image built successfully.")
+
+ return nil
+}
+
+func parseDockerfileLabels(filePath string) (map[string]string, error) {
+ file, err := os.Open(filePath)
+ if err != nil {
+ return nil, err
+ }
+ defer file.Close()
+
+ var labelLine string
+ var foundLastLine bool
+ var foundDuplicatedEntries bool
+ var foundFirstLine bool
+
+ labels := make(map[string]string)
+ scanner := bufio.NewScanner(file)
+
+ for scanner.Scan() {
+ line := scanner.Text()
+
+ // ignore lines that are not LABEL
+ if !strings.HasPrefix(line, "LABEL") && !foundFirstLine {
+ continue
+ }
+ if strings.HasPrefix(line, "LABEL") && (strings.HasSuffix(line, `\`)) {
+ foundFirstLine = true
+ labelLine = strings.TrimSpace(strings.TrimPrefix(line, "LABEL"))
+ } else if strings.HasPrefix(line, "LABEL") && !(strings.HasSuffix(line, `\`)) {
+ foundLastLine = true
+ foundFirstLine = true
+ } else if !strings.HasPrefix(line, "LABEL") && strings.HasSuffix(line, `\`) {
+ labelLine += strings.TrimSpace(strings.TrimSuffix(line, `\`))
+ } else if !strings.HasPrefix(line, "LABEL") && !(strings.HasSuffix(line, `\`)) {
+ foundLastLine = true
+ labelLine = line
+ }
+
+ if labelLine != "" {
+ labelPairs := strings.Split(labelLine, " ")
+ for _, labelPair := range labelPairs {
+ labelKeyValue := strings.SplitN(labelPair, "=", 2)
+ if len(labelKeyValue) == 2 {
+ key := strings.TrimSpace(labelKeyValue[0])
+ value := strings.Trim(labelKeyValue[1], "\"")
+ if _, exists := labels[key]; exists {
+ log.Printf("Key '%s' already exists with value %s in %s\n", key, labels[key], filePath)
+ foundDuplicatedEntries = true
+ } else {
+ labels[key] = value
+ }
+ }
+ }
+ labelLine = ""
+ }
+ // if we reached the last line, drop out of the scanner loop
+ if foundLastLine {
+ break
+ }
+ }
+ if err := scanner.Err(); err != nil {
+ return nil, err
+ }
+
+ if foundDuplicatedEntries {
+ return nil, errors.New("cannot continue with duplicated LABEL statements")
+ }
+
+ return labels, nil
+}
diff --git a/builder/main_test.go b/builder/main_test.go
new file mode 100644
index 0000000..78de308
--- /dev/null
+++ b/builder/main_test.go
@@ -0,0 +1,173 @@
+package main
+
+import (
+ "os"
+ "reflect"
+ "testing"
+)
+
+func TestParseDockerfileLabels(t *testing.T) {
+ tempDockerfile := "testDockerfile"
+ defer func() {
+ // Clean up the temporary Dockerfile after the test
+ if err := os.Remove(tempDockerfile); err != nil {
+ t.Errorf("Error cleaning up temporary Dockerfile: %v", err)
+ }
+ }()
+
+ dockerfileContent := `FROM ubuntu
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="library" \
+ org.toradex.image.base.name="debian" \
+ org.toradex.image.base.tag.major="12" \
+ org.toradex.image.base.tag.minor="4" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="slim" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="debian" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="bookworm" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
+COPY kms-setup.sh /usr/bin/kms-setup.sh
+
+RUN apt-get -y update && apt-get install -y --no-install-recommends \
+ apt-utils \
+ && apt-get -y upgrade \
+ && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
+
+# Install libqt5gui5-gles before libqt5opengl5 which also has an alternate dependency on libqt5gui5(non-gles)
+RUN apt-get -y update && apt-get install -y --no-install-recommends libqt5gui5-gles \
+ && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
+
+# Install libqt5opengl5.
+# Under Bookworm, libqt5opengl5 is currently at version 5.15.8+dfsg-11 and contains a redundant dependency for libqt5gui5 (>= 5.1.0):
+#
+# This forbids installing qtbase5-examples with libqt5gui5-gles.
+# Workaround the issue by mangling the package file and remove the leftover dependency for each of the architectures
+RUN apt-get -y update \
+ && ARCH=$(dpkg --print-architecture) \
+ && if test "$ARCH" = 'arm64' ; \
+ then \
+ apt-get -y install --no-install-recommends binutils xz-utils \
+ && WORK_DIR=$(mktemp -d) \
+ && cd $WORK_DIR \
+ && apt-get download libqt5opengl5:$ARCH \
+ && ar x libqt5opengl5_*_$ARCH.deb \
+ && tar -xJf control.tar.xz \
+ && sed -i '/^Depends:/s/, libqt5gui5 (>= 5.1.0)//' control \
+ && tar -cJf control.tar.xz control md5sums shlibs symbols triggers \
+ && ar rcs libqt5opengl5.deb debian-binary control.tar.xz data.tar.xz \
+ && apt-get -y install --no-install-recommends ./libqt5opengl5.deb \
+ && cd ~ \
+ && rm -rf $WORK_DIR \
+ && apt-get -y remove binutils xz-utils \
+ && apt-mark hold libqt5opengl5 ; \
+ elif test "$ARCH" = 'x86_64' ; \
+ then \
+ apt-get -y install --no-install-recommends binutils xz-utils \
+ && WORK_DIR=$(mktemp -d) \
+ && cd $WORK_DIR \
+ && apt-get download libqt5opengl5:$ARCH \
+ && ar x libqt5opengl5_*_$ARCH.deb \
+ && tar -xJf control.tar.xz \
+ && sed -i '/^Depends:/s/, libqt5gui5 (>= 5.1.0)//' control \
+ && tar -cJf control.tar.xz control md5sums shlibs symbols triggers \
+ && ar rcs libqt5opengl5.deb debian-binary control.tar.xz data.tar.xz \
+ && apt-get -y install --no-install-recommends ./libqt5opengl5.deb \
+ && cd ~ \
+ && rm -rf $WORK_DIR \
+ && apt-get -y remove binutils xz-utils \
+ && apt-mark hold libqt5opengl5 ; \
+ else \
+ apt-get -y install --no-install-recommends binutils xz-utils \
+ && WORK_DIR=$(mktemp -d) \
+ && cd $WORK_DIR \
+ && apt-get download libqt5opengl5:$ARCH \
+ && ar x libqt5opengl5_*_$ARCH.deb \
+ && tar -xJf control.tar.xz \
+ && sed -i '/^Depends:/s/, libqt5gui5 (>= 5.1.0)//' control \
+ && tar -cJf control.tar.xz control md5sums shlibs symbols triggers \
+ && ar rcs libqt5opengl5.deb debian-binary control.tar.xz data.tar.xz \
+ && apt-get -y install --no-install-recommends ./libqt5opengl5.deb \
+ && cd ~ \
+ && rm -rf $WORK_DIR \
+ && apt-get -y remove binutils xz-utils \
+ && apt-mark hold libqt5opengl5 ; \
+ fi \
+ && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
+
+# Install remaining dependencies required to run qtbase and qtdeclarative examples
+RUN apt-get -y update && apt-get install -y --no-install-recommends \
+ libfontconfig1-dev \
+ libqt5quick5-gles \
+ libqt5quickparticles5-gles \
+ libqt5concurrent5 \
+ libqt5dbus5 \
+ libqt5network5 \
+ libqt5printsupport5 \
+ libqt5sql5 \
+ libqt5test5 \
+ libqt5widgets5 \
+ libqt5xml5 \
+ libqt5qml5 \
+ libqt5quicktest5 \
+ libqt5quickwidgets5 \
+ qml-module-qt-labs-qmlmodels \
+ qml-module-qtqml-models2 \
+ qml-module-qtquick-layouts \
+ qml-module-qtquick-localstorage \
+ qml-module-qtquick-particles2 \
+ qml-module-qtquick-shapes \
+ qml-module-qttest \
+ && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
+
+# Install Wayland Qt module
+RUN apt-get -y update && apt-get install -y --no-install-recommends \
+ qtwayland5 \
+ && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
+
+ENV QT_QPA_PLATFORM="wayland"
+
+# EGLFS configuration
+ENV QT_QPA_EGLFS_INTEGRATION="eglfs_kms"
+ENV QT_QPA_EGLFS_KMS_ATOMIC="1"
+ENV QT_QPA_EGLFS_KMS_CONFIG="/etc/kms.conf"
+
+`
+
+ if err := os.WriteFile(tempDockerfile, []byte(dockerfileContent), 0644); err != nil {
+ t.Fatalf("Error creating temporary Dockerfile: %v", err)
+ }
+
+ labels, err := parseDockerfileLabels(tempDockerfile)
+ if err != nil {
+ t.Errorf("Error parsing Dockerfile labels: %v", err)
+ }
+
+ expectedLabels := map[string]string{
+ "org.toradex.image.base.registry": "docker.io",
+ "org.toradex.image.base.namespace": "library",
+ "org.toradex.image.base.name": "debian",
+ "org.toradex.image.base.tag.major": "12",
+ "org.toradex.image.base.tag.minor": "4",
+ "org.toradex.image.base.tag.patch": "",
+ "org.toradex.image.variant": "slim",
+ "org.toradex.image.registry": "docker.io",
+ "org.toradex.image.namespace": "torizon",
+ "org.toradex.image.name": "debian",
+ "org.toradex.image.tag.major": "rc",
+ "org.toradex.image.tag.minor": "",
+ "org.toradex.image.tag.patch": "",
+ "org.toradex.image.tag.variant": "bookworm",
+ "org.toradex.image.license": "MIT",
+ "org.toradex.image.arch": "linux/amd64,linux/arm64/v8,linux/arm/v7",
+ }
+
+ if !reflect.DeepEqual(labels, expectedLabels) {
+ t.Errorf("Parsed labels do not match expected labels. Got: %v, Expected: %v", labels, expectedLabels)
+ }
+}
diff --git a/debian-docker-images/am62/base-am62/Dockerfile b/debian-docker-images/am62/base-am62/Dockerfile
index 90a9189..1e9240e 100644
--- a/debian-docker-images/am62/base-am62/Dockerfile
+++ b/debian-docker-images/am62/base-am62/Dockerfile
@@ -8,6 +8,22 @@ ARG ADD_TORADEX_REPOSITORY=1
ARG DOCKER_REGISTRY
FROM ${DOCKER_REGISTRY}/debian:$DEBIAN_BASE_IMAGE AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="library" \
+ org.toradex.image.base.name="debian" \
+ org.toradex.image.base.tag.major="12" \
+ org.toradex.image.base.tag.minor="4" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="slim" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="debian-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
ARG DEBIAN_FRONTEND=noninteractive
ONBUILD ARG DEBIAN_FRONTEND=noninteractive
diff --git a/debian-docker-images/am62/chromium-am62/Dockerfile b/debian-docker-images/am62/chromium-am62/Dockerfile
index 078d1de..e2d3da8 100644
--- a/debian-docker-images/am62/chromium-am62/Dockerfile
+++ b/debian-docker-images/am62/chromium-am62/Dockerfile
@@ -4,6 +4,22 @@ ARG IMAGE_TAG=4-rc
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="chromium-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && \
apt-get install -y --no-install-recommends chromium chromium-sandbox && \
apt-get clean && apt-get autoremove && \
diff --git a/debian-docker-images/am62/cog-am62/Dockerfile b/debian-docker-images/am62/cog-am62/Dockerfile
index 9db10a0..0291515 100644
--- a/debian-docker-images/am62/cog-am62/Dockerfile
+++ b/debian-docker-images/am62/cog-am62/Dockerfile
@@ -4,6 +4,22 @@ ARG IMAGE_TAG=3
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="cog-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && \
apt-get install -y --no-install-recommends cog && \
apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
diff --git a/debian-docker-images/am62/qt5-wayland-am62/Dockerfile b/debian-docker-images/am62/qt5-wayland-am62/Dockerfile
index 1414bb5..be3aa56 100644
--- a/debian-docker-images/am62/qt5-wayland-am62/Dockerfile
+++ b/debian-docker-images/am62/qt5-wayland-am62/Dockerfile
@@ -6,6 +6,22 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY kms-setup.sh /usr/bin/kms-setup.sh
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/debian-docker-images/am62/qt5-wayland-examples-am62/Dockerfile b/debian-docker-images/am62/qt5-wayland-examples-am62/Dockerfile
index 43a4e9a..91161ae 100644
--- a/debian-docker-images/am62/qt5-wayland-examples-am62/Dockerfile
+++ b/debian-docker-images/am62/qt5-wayland-examples-am62/Dockerfile
@@ -11,6 +11,23 @@ ARG QT5_EXAMPLES_DEBIAN
ARG QT5_EXAMPLES_DEBIAN_INSTALL=${QT5_EXAMPLES_DEBIAN:+"qtbase5-examples qtdeclarative5-examples"}
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="qt5-wayland-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland-examples-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
ARG QT5_EXAMPLES_DEBIAN_INSTALL
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/debian-docker-images/am62/qt6-wayland-am62/Dockerfile b/debian-docker-images/am62/qt6-wayland-am62/Dockerfile
index ec3fb1d..f055f81 100644
--- a/debian-docker-images/am62/qt6-wayland-am62/Dockerfile
+++ b/debian-docker-images/am62/qt6-wayland-am62/Dockerfile
@@ -3,6 +3,22 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY kms-setup.sh /usr/bin/kms-setup.sh
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/debian-docker-images/am62/qt6-wayland-examples-am62/Dockerfile b/debian-docker-images/am62/qt6-wayland-examples-am62/Dockerfile
index 33c4aac..f725d5e 100644
--- a/debian-docker-images/am62/qt6-wayland-examples-am62/Dockerfile
+++ b/debian-docker-images/am62/qt6-wayland-examples-am62/Dockerfile
@@ -7,6 +7,22 @@ ARG DOCKER_REGISTRY
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="qt6-wayland-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland-examples-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y --no-install-recommends \
qt6-base-examples \
&& apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
diff --git a/debian-docker-images/am62/tests-am62/chromium-tests-am62/Dockerfile b/debian-docker-images/am62/tests-am62/chromium-tests-am62/Dockerfile
index 7a9e700..b527855 100644
--- a/debian-docker-images/am62/tests-am62/chromium-tests-am62/Dockerfile
+++ b/debian-docker-images/am62/tests-am62/chromium-tests-am62/Dockerfile
@@ -6,6 +6,22 @@ ARG IMAGE_TAG=4-rc
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="chromium-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="chromium-tests-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
## Un-comment if you want to run it with the
# integrated puppeteer chromium distribution
# RUN apt-get update && apt-get install -y libnss3 \
diff --git a/debian-docker-images/am62/tests-am62/graphics-tests-am62/Dockerfile b/debian-docker-images/am62/tests-am62/graphics-tests-am62/Dockerfile
index 91c07df..a969544 100644
--- a/debian-docker-images/am62/tests-am62/graphics-tests-am62/Dockerfile
+++ b/debian-docker-images/am62/tests-am62/graphics-tests-am62/Dockerfile
@@ -7,6 +7,22 @@ ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="graphics-tests-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y --no-install-recommends \
clinfo \
glmark2-es2-wayland \
diff --git a/debian-docker-images/am62/wayland-base-am62/Dockerfile b/debian-docker-images/am62/wayland-base-am62/Dockerfile
index e43e534..2e19ac0 100644
--- a/debian-docker-images/am62/wayland-base-am62/Dockerfile
+++ b/debian-docker-images/am62/wayland-base-am62/Dockerfile
@@ -6,6 +6,22 @@ ARG IMAGE_TAG=3-bookworm
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="debian-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y \
libd3dadapter9-mesa \
libd3dadapter9-mesa-dev \
diff --git a/debian-docker-images/am62/weston-am62/Dockerfile b/debian-docker-images/am62/weston-am62/Dockerfile
index f839289..38ca737 100644
--- a/debian-docker-images/am62/weston-am62/Dockerfile
+++ b/debian-docker-images/am62/weston-am62/Dockerfile
@@ -6,6 +6,22 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=docker.io
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
# Install the weston compositor.
RUN apt-get -y update && apt-get install -y --no-install-recommends \
weston \
diff --git a/debian-docker-images/am62/weston-touch-calibrator-am62/Dockerfile b/debian-docker-images/am62/weston-touch-calibrator-am62/Dockerfile
index ec384a2..1520ba9 100644
--- a/debian-docker-images/am62/weston-touch-calibrator-am62/Dockerfile
+++ b/debian-docker-images/am62/weston-touch-calibrator-am62/Dockerfile
@@ -6,6 +6,22 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="weston-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston-touch-calibrator-am62" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY entry.sh /usr/bin/
RUN mkdir -p /etc/xdg/weston/
COPY weston.ini /etc/xdg/weston/
diff --git a/debian-docker-images/imx8/base-imx8/Dockerfile b/debian-docker-images/imx8/base-imx8/Dockerfile
index 91a6e41..acbab68 100644
--- a/debian-docker-images/imx8/base-imx8/Dockerfile
+++ b/debian-docker-images/imx8/base-imx8/Dockerfile
@@ -1,12 +1,28 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG DEBIAN_BASE_IMAGE=bookworm-slim
-ARG TORADEX_SNAPSHOT
-ARG USE_TORADEX_SNAPSHOT=1
-ARG ADD_TORADEX_REPOSITORY=1
-ARG DOCKER_REGISTRY
-FROM ${DOCKER_REGISTRY}/debian:$DEBIAN_BASE_IMAGE AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="library" \
+ org.toradex.image.base.name="debian" \
+ org.toradex.image.base.tag.major="12" \
+ org.toradex.image.base.tag.minor="4" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="slim" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="debian-imx8" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
ARG DEBIAN_FRONTEND=noninteractive
ONBUILD ARG DEBIAN_FRONTEND=noninteractive
diff --git a/debian-docker-images/imx8/chromium-imx8/Dockerfile b/debian-docker-images/imx8/chromium-imx8/Dockerfile
index 5889c7f..59b6b3d 100644
--- a/debian-docker-images/imx8/chromium-imx8/Dockerfile
+++ b/debian-docker-images/imx8/chromium-imx8/Dockerfile
@@ -1,8 +1,21 @@
-ARG BASE_NAME=wayland-base-imx8
-ARG DOCKER_REGISTRY
-ARG IMAGE_TAG=3
+# Copyright (c) 2019-2023 Toradex AG
+# SPDX-License-Identifier: MIT
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="chromium-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
RUN apt-get -y update && \
apt-get install -y --no-install-recommends chromium chromium-sandbox && \
diff --git a/debian-docker-images/imx8/cog-imx8/Dockerfile b/debian-docker-images/imx8/cog-imx8/Dockerfile
index 6cc4ced..68c0d14 100644
--- a/debian-docker-images/imx8/cog-imx8/Dockerfile
+++ b/debian-docker-images/imx8/cog-imx8/Dockerfile
@@ -1,8 +1,21 @@
-ARG BASE_NAME=wayland-base-imx8
-ARG DOCKER_REGISTRY
-ARG IMAGE_TAG=3
+# Copyright (c) 2019-2023 Toradex AG
+# SPDX-License-Identifier: MIT
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="cog-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
RUN apt-get -y update && \
apt-get install -y --no-install-recommends cog && \
diff --git a/debian-docker-images/imx8/gputop-imx8/Dockerfile b/debian-docker-images/imx8/gputop-imx8/Dockerfile
index 2acd1e6..e71e420 100644
--- a/debian-docker-images/imx8/gputop-imx8/Dockerfile
+++ b/debian-docker-images/imx8/gputop-imx8/Dockerfile
@@ -1,11 +1,21 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME
-ARG IMAGE_TAG
-ARG DOCKER_REGISTRY
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="debian-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="gputop-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
gputop \
diff --git a/debian-docker-images/imx8/qt5-wayland-examples-imx8/Dockerfile b/debian-docker-images/imx8/qt5-wayland-examples-imx8/Dockerfile
index 184378a..abfe12b 100644
--- a/debian-docker-images/imx8/qt5-wayland-examples-imx8/Dockerfile
+++ b/debian-docker-images/imx8/qt5-wayland-examples-imx8/Dockerfile
@@ -1,18 +1,22 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=qt5-wayland-vivante
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY=torizon
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
-ARG QT5_EXAMPLES_DEBIAN
-# Uncomment the line below if building outside of the context of GitLab CI
-# ARG QT5_EXAMPLES_DEBIAN=1
-ARG QT5_EXAMPLES_DEBIAN_INSTALL=${QT5_EXAMPLES_DEBIAN:+"qtbase5-examples qtdeclarative5-examples"}
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
-ARG QT5_EXAMPLES_DEBIAN_INSTALL
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="qt5-wayland-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland-examples-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
- ${QT5_EXAMPLES_DEBIAN_INSTALL} \
+ qtbase5-examples qtdeclarative5-examples \
&& apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
diff --git a/debian-docker-images/imx8/qt5-wayland-imx8/Dockerfile b/debian-docker-images/imx8/qt5-wayland-imx8/Dockerfile
index 48f9d76..54812c4 100644
--- a/debian-docker-images/imx8/qt5-wayland-imx8/Dockerfile
+++ b/debian-docker-images/imx8/qt5-wayland-imx8/Dockerfile
@@ -6,6 +6,15 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY kms-setup.sh /usr/bin/kms-setup.sh
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/debian-docker-images/imx8/qt6-wayland-examples-imx8/Dockerfile b/debian-docker-images/imx8/qt6-wayland-examples-imx8/Dockerfile
index 866a77c..d226bf2 100644
--- a/debian-docker-images/imx8/qt6-wayland-examples-imx8/Dockerfile
+++ b/debian-docker-images/imx8/qt6-wayland-examples-imx8/Dockerfile
@@ -7,6 +7,15 @@ ARG DOCKER_REGISTRY
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland-examples-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y --no-install-recommends \
qt6-base-examples \
&& apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
diff --git a/debian-docker-images/imx8/qt6-wayland-imx8/Dockerfile b/debian-docker-images/imx8/qt6-wayland-imx8/Dockerfile
index ae810eb..6221d7d 100644
--- a/debian-docker-images/imx8/qt6-wayland-imx8/Dockerfile
+++ b/debian-docker-images/imx8/qt6-wayland-imx8/Dockerfile
@@ -3,6 +3,15 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY kms-setup.sh /usr/bin/kms-setup.sh
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/debian-docker-images/imx8/tests-imx8/graphics-tests-imx8/Dockerfile b/debian-docker-images/imx8/tests-imx8/graphics-tests-imx8/Dockerfile
index 269915a..78f6fd2 100644
--- a/debian-docker-images/imx8/tests-imx8/graphics-tests-imx8/Dockerfile
+++ b/debian-docker-images/imx8/tests-imx8/graphics-tests-imx8/Dockerfile
@@ -7,6 +7,15 @@ ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="graphics-tests-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y --no-install-recommends \
clinfo \
glmark2-es2-wayland \
diff --git a/debian-docker-images/imx8/wayland-base-imx8/Dockerfile b/debian-docker-images/imx8/wayland-base-imx8/Dockerfile
index ad3778d..f21c26a 100644
--- a/debian-docker-images/imx8/wayland-base-imx8/Dockerfile
+++ b/debian-docker-images/imx8/wayland-base-imx8/Dockerfile
@@ -6,6 +6,15 @@ ARG IMAGE_TAG=3-bookworm
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="debian-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="wayland-base-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
RUN apt-get -y update && apt-get install -y --no-install-recommends \
apt-utils \
curl \
diff --git a/debian-docker-images/imx8/weston-imx8/Dockerfile b/debian-docker-images/imx8/weston-imx8/Dockerfile
index 6abdf2e..2124ee7 100644
--- a/debian-docker-images/imx8/weston-imx8/Dockerfile
+++ b/debian-docker-images/imx8/weston-imx8/Dockerfile
@@ -6,6 +6,15 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
# Install the weston compositor.
RUN apt-get -y update && apt-get install -y --no-install-recommends \
weston \
diff --git a/debian-docker-images/imx8/weston-touch-calibrator-imx8/Dockerfile b/debian-docker-images/imx8/weston-touch-calibrator-imx8/Dockerfile
index 08539de..46c22e2 100644
--- a/debian-docker-images/imx8/weston-touch-calibrator-imx8/Dockerfile
+++ b/debian-docker-images/imx8/weston-touch-calibrator-imx8/Dockerfile
@@ -6,6 +6,15 @@ ARG IMAGE_TAG=3
ARG DOCKER_REGISTRY=torizon
FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+LABEL org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="weston-imx8" \
+ org.toradex.image.base.tag="rc" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston-touch-calibrator-imx8" \
+ org.toradex.image.tag="rc" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
+
COPY entry.sh /usr/bin/
RUN mkdir -p /etc/xdg/weston/
COPY weston.ini /etc/xdg/weston/
diff --git a/debian-docker-images/upstream/base/Dockerfile b/debian-docker-images/upstream/base/Dockerfile
index 1ffca71..143c891 100644
--- a/debian-docker-images/upstream/base/Dockerfile
+++ b/debian-docker-images/upstream/base/Dockerfile
@@ -1,12 +1,31 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG DEBIAN_BASE_IMAGE=bookworm-slim
-ARG DOCKER_REGISTRY
-FROM ${DOCKER_REGISTRY}/debian:$DEBIAN_BASE_IMAGE AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="library" \
+ org.toradex.image.base.name="debian" \
+ org.toradex.image.base.tag.major="12" \
+ org.toradex.image.base.tag.minor="4" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.variant="slim" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="debian" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="bookworm" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
ARG DEBIAN_FRONTEND=noninteractive
-ONBUILD ARG DEBIAN_FRONTEND=noninteractive
# Upgrade & install required packages
RUN apt-get update \
diff --git a/debian-docker-images/upstream/chromium/Dockerfile b/debian-docker-images/upstream/chromium/Dockerfile
index 078d1de..42e86d1 100644
--- a/debian-docker-images/upstream/chromium/Dockerfile
+++ b/debian-docker-images/upstream/chromium/Dockerfile
@@ -1,8 +1,29 @@
-ARG BASE_NAME=wayland-base
-ARG DOCKER_REGISTRY=docker.io
-ARG IMAGE_TAG=4-rc
+# Copyright (c) 2019-2023 Toradex AG
+# SPDX-License-Identifier: MIT
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="chromium" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
RUN apt-get -y update && \
apt-get install -y --no-install-recommends chromium chromium-sandbox && \
diff --git a/debian-docker-images/upstream/cog/Dockerfile b/debian-docker-images/upstream/cog/Dockerfile
index 9db10a0..be9e3d5 100644
--- a/debian-docker-images/upstream/cog/Dockerfile
+++ b/debian-docker-images/upstream/cog/Dockerfile
@@ -1,8 +1,29 @@
-ARG BASE_NAME=wayland-base
-ARG DOCKER_REGISTRY
-ARG IMAGE_TAG=3
+# Copyright (c) 2019-2023 Toradex AG
+# SPDX-License-Identifier: MIT
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="cog" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
RUN apt-get -y update && \
apt-get install -y --no-install-recommends cog && \
diff --git a/debian-docker-images/upstream/qt5-wayland-examples/Dockerfile b/debian-docker-images/upstream/qt5-wayland-examples/Dockerfile
index 9916e20..443e54c 100644
--- a/debian-docker-images/upstream/qt5-wayland-examples/Dockerfile
+++ b/debian-docker-images/upstream/qt5-wayland-examples/Dockerfile
@@ -1,18 +1,30 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=qt5-wayland
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY=docker.io
-ARG DOCKER_NAMESPACE=torizon
-ARG QT5_EXAMPLES_DEBIAN
-# Uncomment the line below if building outside of the context of GitLab CI
-ARG QT5_EXAMPLES_DEBIAN=1
-ARG QT5_EXAMPLES_DEBIAN_INSTALL=${QT5_EXAMPLES_DEBIAN:+"qtbase5-examples qtdeclarative5-examples"}
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
-FROM $DOCKER_REGISTRY/$DOCKER_NAMESPACE/$BASE_NAME:$IMAGE_TAG AS base
-ARG QT5_EXAMPLES_DEBIAN_INSTALL
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="qt5-wayland" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland-examples" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
- ${QT5_EXAMPLES_DEBIAN_INSTALL} \
+ qtbase5-examples qtdeclarative5-examples \
&& apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
diff --git a/debian-docker-images/upstream/qt5-wayland/Dockerfile b/debian-docker-images/upstream/qt5-wayland/Dockerfile
index ad4c7ac..c9e28f5 100644
--- a/debian-docker-images/upstream/qt5-wayland/Dockerfile
+++ b/debian-docker-images/upstream/qt5-wayland/Dockerfile
@@ -1,10 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=wayland-base
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt5-wayland" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
COPY kms-setup.sh /usr/bin/kms-setup.sh
diff --git a/debian-docker-images/upstream/qt6-wayland-examples/Dockerfile b/debian-docker-images/upstream/qt6-wayland-examples/Dockerfile
index 33c4aac..0af5dec 100644
--- a/debian-docker-images/upstream/qt6-wayland-examples/Dockerfile
+++ b/debian-docker-images/upstream/qt6-wayland-examples/Dockerfile
@@ -1,11 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=qt5-wayland
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="library" \
+ org.toradex.image.base.name="qt6-wayland" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland-examples" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
qt6-base-examples \
diff --git a/debian-docker-images/upstream/qt6-wayland/Dockerfile b/debian-docker-images/upstream/qt6-wayland/Dockerfile
index ec3fb1d..c8f72f6 100644
--- a/debian-docker-images/upstream/qt6-wayland/Dockerfile
+++ b/debian-docker-images/upstream/qt6-wayland/Dockerfile
@@ -1,7 +1,29 @@
-ARG BASE_NAME=wayland-base
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+# Copyright (c) 2019-2023 Toradex AG
+# SPDX-License-Identifier: MIT
+
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="qt6-wayland" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/arm64/v8"
COPY kms-setup.sh /usr/bin/kms-setup.sh
diff --git a/debian-docker-images/upstream/tests/graphics-tests/Dockerfile b/debian-docker-images/upstream/tests/graphics-tests/Dockerfile
index 91c07df..bb68772 100644
--- a/debian-docker-images/upstream/tests/graphics-tests/Dockerfile
+++ b/debian-docker-images/upstream/tests/graphics-tests/Dockerfile
@@ -1,11 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=wayland-base
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY=torizon
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="graphics-tests" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
clinfo \
diff --git a/debian-docker-images/upstream/wayland-base/Dockerfile b/debian-docker-images/upstream/wayland-base/Dockerfile
index 574c028..58cd4d4 100644
--- a/debian-docker-images/upstream/wayland-base/Dockerfile
+++ b/debian-docker-images/upstream/wayland-base/Dockerfile
@@ -1,10 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=debian
-ARG IMAGE_TAG=3-bookworm
-ARG DOCKER_REGISTRY=torizon
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="debian" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="bookworm" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="wayland-base" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
RUN apt-get -y update && apt-get install -y --no-install-recommends \
apt-utils \
diff --git a/debian-docker-images/upstream/weston-touch-calibrator/Dockerfile b/debian-docker-images/upstream/weston-touch-calibrator/Dockerfile
index ec384a2..2013d1b 100644
--- a/debian-docker-images/upstream/weston-touch-calibrator/Dockerfile
+++ b/debian-docker-images/upstream/weston-touch-calibrator/Dockerfile
@@ -1,10 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=weston
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY=torizon
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="weston" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="bookworm" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston-touch-calibrator" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
COPY entry.sh /usr/bin/
RUN mkdir -p /etc/xdg/weston/
diff --git a/debian-docker-images/upstream/weston/Dockerfile b/debian-docker-images/upstream/weston/Dockerfile
index f839289..82b083e 100644
--- a/debian-docker-images/upstream/weston/Dockerfile
+++ b/debian-docker-images/upstream/weston/Dockerfile
@@ -1,10 +1,29 @@
# Copyright (c) 2019-2023 Toradex AG
# SPDX-License-Identifier: MIT
-ARG BASE_NAME=wayland-base
-ARG IMAGE_TAG=3
-ARG DOCKER_REGISTRY=docker.io
-FROM $DOCKER_REGISTRY/torizon/$BASE_NAME:$IMAGE_TAG AS base
+ARG BASE_IMAGE_REGISTRY
+ARG BASE_IMAGE_NAMESPACE
+ARG BASE_IMAGE_NAME
+ARG BASE_IMAGE_TAG
+
+FROM $BASE_IMAGE_REGISTRY/$BASE_IMAGE_NAMESPACE/$BASE_IMAGE_NAME:$BASE_IMAGE_TAG
+
+LABEL org.toradex.image.base.registry="docker.io" \
+ org.toradex.image.base.namespace="torizon" \
+ org.toradex.image.base.name="wayland-base" \
+ org.toradex.image.base.tag.major="rc" \
+ org.toradex.image.base.tag.minor="" \
+ org.toradex.image.base.tag.patch="" \
+ org.toradex.image.base.tag.variant="bookworm" \
+ org.toradex.image.registry="docker.io" \
+ org.toradex.image.namespace="torizon" \
+ org.toradex.image.name="weston" \
+ org.toradex.image.tag.major="rc" \
+ org.toradex.image.tag.minor="" \
+ org.toradex.image.tag.patch="" \
+ org.toradex.image.tag.variant="" \
+ org.toradex.image.license="MIT" \
+ org.toradex.image.arch="linux/amd64,linux/arm64/v8,linux/arm/v7"
# Install the weston compositor.
RUN apt-get -y update && apt-get install -y --no-install-recommends \
diff --git a/tmp b/tmp
new file mode 100644
index 0000000..2884d27
--- /dev/null
+++ b/tmp
@@ -0,0 +1,22 @@
+ - docker buildx build --progress=plain --sbom=true ${PUSH_TO_REGISTRY} ${PLATFORM_BUILD_ARM_V7} ${PLATFORM_BUILD_ARM_V8} ${PLATFORM_BUILD_AMD64}
+ --build-arg CROSS_COMPILER_TARGET_ARCH=${CROSS_COMPILER_TARGET_ARCH}
+ --build-arg DOCKER_REGISTRY=${TORADEX_INTERNAL_DOCKERHUB_CACHE}
+ --build-arg BASE_NAME=${BASE_NAME}
+ --build-arg DEBIAN_BASE_IMAGE=${DEBIAN_BASE_IMAGE}
+ --build-arg IMAGE_TAG=${DOCKER_BASE_TAG}
+ --build-arg ADD_TORADEX_REPOSITORY=${ADD_TORADEX_REPOSITORY}
+ --build-arg ACCEPT_FSL_EULA=${ACCEPT_FSL_EULA}
+ --build-arg QT5_EXAMPLES_DEBIAN=${QT5_EXAMPLES_DEBIAN}
+ --build-arg TORADEX_SNAPSHOT=${TORADEX_SNAPSHOT}
+ --build-arg BASE_NAME_DEBUG=${BASE_NAME_DEBUG}
+ --build-arg DOTNET_BASE_IMAGE_TAG=${DEBIAN_MAJOR}${RELEASE_APPEND}
+ --build-arg DEBIAN_BASE_IMAGE_TAG=${DEBIAN_BASE_IMAGE}
+ --build-arg DOTNET_RUNTIME=${DOTNET_RUNTIME}
+ --build-arg DOTNET_VERSION=${DOTNET_VERSION}
+ --build-arg DOTNET_DEBUGGER_RELEASE=${DOTNET_DEBUGGER_RELEASE}
+ --build-arg BASE_TAG_WAYLAND=${DEBIAN_MAJOR}
+ --build-arg BASE_NAME_WAYLAND=${BASE_NAME_WAYLAND}
+ ${DOCKER_NO_CACHE:+--no-cache}
+ -f ${DOCKERFILE_FOLDER}Dockerfile
+ -t ${DOCKERHUB_NAMESPACE}/${IMAGE_NAME}:${IMAGE_TAG}
+ ${DOCKERFILE_FOLDER}