@@ -10,105 +10,112 @@ PATCHLEVEL ?= 1
10
10
11
11
EXPORT_DIR := $(VERSION )
12
12
13
- MODULES ?= go jsc node perl php python ruby minimal
13
+ MODULES ?= go jsc node perl php python ruby
14
14
15
15
VARIANT ?= bullseye
16
16
17
- VERSION_minimal ?=
17
+ VERSIONS_minimal ?=
18
18
CONTAINER_minimal ?= debian:$(VARIANT ) -slim
19
19
CONFIGURE_minimal ?=
20
20
INSTALL_minimal ?= version
21
21
RUN_minimal ?= /bin/true
22
22
23
- VERSION_go ?= 1.20
23
+ VERSIONS_go ?= 1.20
24
24
VARIANT_go ?= $(VARIANT )
25
- CONTAINER_go ?= golang:$(VERSION_go ) -$(VARIANT_go )
25
+ $( foreach goversion, $( VERSIONS_go ) , $( eval CONTAINER_go$( goversion ) = golang :$(goversion ) -$(VARIANT_go ) ) )
26
26
CONFIGURE_go ?= go --go-path=$$GOPATH
27
27
INSTALL_go ?= go-install-src libunit-install
28
28
RUN_go ?= /bin/true
29
29
30
- VERSION_jsc ?= 11
30
+ VERSIONS_jsc ?= 11
31
31
VARIANT_jsc ?= jammy
32
- CONTAINER_jsc ?= eclipse-temurin:$(VERSION_jsc ) -jdk-$(VARIANT_jsc )
32
+ $( foreach jscversion, $( VERSIONS_jsc ) , $( eval CONTAINER_jsc$( jscversion ) = eclipse-temurin :$(jscversion ) -jdk-$(VARIANT_jsc ) ) )
33
33
CONFIGURE_jsc ?= java --jars=/usr/share/unit-jsc-common/
34
34
INSTALL_jsc ?= java-shared-install java-install
35
35
RUN_jsc ?= /bin/true
36
36
37
- VERSION_node ?= 18
37
+ VERSIONS_node ?= 18
38
38
VARIANT_node ?= $(VARIANT )
39
- CONTAINER_node ?= node:$(VERSION_node ) -$(VARIANT_node )
39
+ $( foreach nodeversion, $( VERSIONS_node ) , $( eval CONTAINER_node$( nodeversion ) = node :$(nodeversion ) -$(VARIANT_node ) ) )
40
40
CONFIGURE_node ?= nodejs --node-gyp=/usr/local/lib/node_modules/npm/bin/node-gyp-bin/node-gyp
41
41
INSTALL_node ?= node node-install libunit-install
42
42
RUN_node ?= /bin/true
43
43
44
- VERSION_perl ?= 5.36
44
+ VERSIONS_perl ?= 5.36
45
45
VARIANT_perl ?= $(VARIANT )
46
- CONTAINER_perl ?= perl:$(VERSION_perl ) -$(VARIANT_perl )
46
+ $( foreach perlversion, $( VERSIONS_perl ) , $( eval CONTAINER_perl$( perlversion ) = perl :$(perlversion ) -$(VARIANT_perl ) ) )
47
47
CONFIGURE_perl ?= perl
48
48
INSTALL_perl ?= perl-install
49
49
RUN_perl ?= /bin/true
50
50
51
- VERSION_php ?= 8.2
51
+ VERSIONS_php ?= 8.2
52
52
VARIANT_php ?= cli-$(VARIANT )
53
- CONTAINER_php ?= php:$(VERSION_php ) -$(VARIANT_php )
53
+ $( foreach phpversion, $( VERSIONS_php ) , $( eval CONTAINER_php$( phpversion ) = php :$(phpversion ) -$(VARIANT_php ) ) )
54
54
CONFIGURE_php ?= php
55
55
INSTALL_php ?= php-install
56
56
RUN_php ?= ldconfig
57
57
58
- VERSION_python ?= 3.11
58
+ VERSIONS_python ?= 3.11
59
59
VARIANT_python ?= $(VARIANT )
60
- CONTAINER_python ?= python:$(VERSION_python ) -$(VARIANT_python )
60
+ $( foreach pythonversion, $( VERSIONS_python ) , $( eval CONTAINER_python$( pythonversion ) = python :$(pythonversion ) -$(VARIANT_python ) ) )
61
61
CONFIGURE_python ?= python --config=/usr/local/bin/python3-config
62
62
INSTALL_python ?= python3-install
63
63
RUN_python ?= /bin/true
64
64
65
- VERSION_ruby ?= 3.2
65
+ VERSIONS_ruby ?= 3.2
66
66
VARIANT_ruby ?= $(VARIANT )
67
- CONTAINER_ruby ?= ruby:$(VERSION_ruby ) -$(VARIANT_ruby )
67
+ $( foreach rubyversion, $( VERSIONS_ruby ) , $( eval CONTAINER_ruby$( rubyversion ) = ruby :$(rubyversion ) -$(VARIANT_ruby ) ) )
68
68
CONFIGURE_ruby ?= ruby
69
69
INSTALL_ruby ?= ruby-install
70
70
RUN_ruby ?= gem install rack
71
71
72
72
default :
73
73
@echo " valid targets: all build dockerfiles clean"
74
74
75
- MODVERSIONS = $(foreach module,$(MODULES ) ,$( module )$( VERSION_ $ (module )) )
75
+ MODVERSIONS = $(foreach module, $(MODULES ) , $( foreach modversion, $( shell for v in $( VERSIONS_ $( module )) ; do echo $$v; done | sort -r) , $ (module )$( modversion ) ) ) minimal
76
76
77
77
modname = $(shell echo $1 | /usr/bin/tr -d '.01234567890-')
78
78
79
79
dockerfiles : $(addprefix Dockerfile., $(MODVERSIONS ) )
80
- build : $(addprefix build-,$(MODVERSIONS ) )
80
+ build : $(addprefix build-, $(MODVERSIONS ) )
81
81
82
82
Dockerfile.% : ../../version template.Dockerfile
83
83
@echo " ===> Building $@ "
84
84
cat template.Dockerfile | sed \
85
85
-e ' s,@@VERSION@@,$(VERSION),g' \
86
86
-e ' s,@@PATCHLEVEL@@,$(PATCHLEVEL),g' \
87
- -e ' s,@@CONTAINER@@,$(CONTAINER_$(call modname, $*) ),g' \
87
+ -e ' s,@@CONTAINER@@,$(CONTAINER_$* ),g' \
88
88
-e ' s,@@CONFIGURE@@,$(CONFIGURE_$(call modname, $*)),g' \
89
89
-e ' s,@@INSTALL@@,$(INSTALL_$(call modname, $*)),g' \
90
90
-e ' s,@@RUN@@,$(RUN_$(call modname, $*)),g' \
91
91
> $@
92
92
93
93
build-% : Dockerfile.%
94
- docker pull $(CONTAINER_$( call modname, $* ) )
94
+ docker pull $(CONTAINER_$* )
95
95
docker build --no-cache -t unit:$(VERSION ) -$* -f Dockerfile.$* .
96
96
97
97
library :
98
98
@echo " # this file is generated via https://github.com/nginx/unit/blob/$( shell git describe --always --abbrev=0 HEAD) /pkg/docker/Makefile"
99
99
@echo " "
100
100
@echo " Maintainers: Unit Docker Maintainers <docker-maint@nginx.com> (@nginx)"
101
101
@echo " GitRepo: https://github.com/nginx/unit.git"
102
- @for mod in $(MODVERSIONS ) ; do \
102
+ @previous=" " ; \
103
+ for mod in $( MODVERSIONS) ; do \
103
104
echo " " ; \
104
- TAGS=" $$ mod $$ {mod%%.*} $$ ( echo $$ mod | tr -d '.0123456789-' )" ; \
105
+ modname=" $$ ( echo $$ mod | tr -d '.0123456789-' )" ; \
106
+ TAGS=" $$ mod $$ {mod%%.*} $$ modname" ; \
105
107
TAGS=" $$ (echo $$ TAGS | tr " " " \n " | sort -u -r | tr " \n " " ," | sed " s/,/, /g" )" ; \
106
- echo " Tags: $( VERSION) -$$ mod, $$ {TAGS%, }" ; \
108
+ if [ " $$ previous" == " $$ modname" ]; then \
109
+ echo " Tags: $( VERSION) -$$ mod, $$ mod" ; \
110
+ else \
111
+ echo " Tags: $( VERSION) -$$ mod, $$ {TAGS%, }" ; \
112
+ fi ; \
107
113
echo " Architectures: amd64, arm64v8" ; \
108
114
echo " GitFetch: refs/heads/branches/packaging" ; \
109
115
echo " GitCommit: $( shell git describe --always --abbrev=0 HEAD) " ; \
110
116
echo " Directory: pkg/docker" ; \
111
117
echo " File: Dockerfile.$$ mod" ; \
118
+ previous=$$(echo $$mod | tr -d '.0123456789-' ) ; \
112
119
done
113
120
114
121
all : $(addprefix Dockerfile., $(MODVERSIONS ) )
0 commit comments