istio.io/istio@v0.0.0-20240520182934-d79c90f27776/tools/packaging/packaging.mk (about)

     1  #remove leading characters since package version expects to start with digit
     2  PACKAGE_VERSION ?= $(shell echo $(VERSION) | sed 's/^[a-z]*-//' | sed 's/-//')
     3  
     4  # Creates the proxy debian packages. BUILD_WITH_CONTAINER=1 or in CI/CD (BUILD_WITH_CONTAINER=0)
     5  deb: ${TARGET_OUT_LINUX}/release/istio-sidecar.deb
     6  
     7  # fpm likes to add extremely high levels of compression. This is fine for release, but for local runs
     8  # where we are just pushing to a local registry (compressed again!), it adds ~1min to builds.
     9  ifneq ($(FAST_VM_BUILDS),)
    10  DEB_COMPRESSION=--deb-compression=none
    11  RPM_COMPRESSION=--rpm-compression=none
    12  endif
    13  
    14  # Base directory for istio binaries. Likely to change !
    15  ISTIO_DEB_BIN=/usr/local/bin
    16  
    17  # Home directory of istio-proxy user. It is symlinked /etc/istio --> /var/lib/istio
    18  ISTIO_PROXY_HOME=/var/lib/istio
    19  
    20  ISTIO_DEB_DEPS:=pilot-discovery istioctl
    21  ISTIO_FILES:=
    22  $(foreach DEP,$(ISTIO_DEB_DEPS),\
    23          $(eval ${TARGET_OUT_LINUX}/release/istio.deb: $(TARGET_OUT_LINUX)/$(DEP)) \
    24          $(eval ISTIO_FILES+=$(TARGET_OUT_LINUX)/$(DEP)=$(ISTIO_DEB_BIN)/$(DEP)) )
    25  
    26  SIDECAR_DEB_DEPS:=envoy pilot-agent
    27  SIDECAR_FILES:=
    28  $(foreach DEP,$(SIDECAR_DEB_DEPS),\
    29          $(eval ${TARGET_OUT_LINUX}/release/istio-sidecar.deb: $(TARGET_OUT_LINUX)/$(DEP)) \
    30          $(eval ${TARGET_OUT_LINUX}/release/istio-sidecar.rpm: $(TARGET_OUT_LINUX)/$(DEP)) \
    31          $(eval SIDECAR_FILES+=$(TARGET_OUT_LINUX)/$(DEP)=$(ISTIO_DEB_BIN)/$(DEP)) )
    32  
    33  ISTIO_DEB_DEST:=${ISTIO_DEB_BIN}/istio-start.sh \
    34  		/lib/systemd/system/istio.service \
    35  		/var/lib/istio/envoy/sidecar.env
    36  
    37  $(foreach DEST,$(ISTIO_DEB_DEST),\
    38          $(eval ${TARGET_OUT_LINUX}/istio-sidecar.deb:   tools/packaging/common/$(notdir $(DEST))) \
    39          $(eval SIDECAR_FILES+=${REPO_ROOT}/tools/packaging/common/$(notdir $(DEST))=$(DEST)))
    40  
    41  SIDECAR_FILES+=${REPO_ROOT}/tools/packaging/common/envoy_bootstrap.json=/var/lib/istio/envoy/envoy_bootstrap_tmpl.json
    42  
    43  # original name used in 0.2 - will be updated to 'istio.deb' since it now includes all istio binaries.
    44  SIDECAR_PACKAGE_NAME ?= istio-sidecar
    45  
    46  # TODO: rename istio-sidecar.deb to istio.deb
    47  
    48  # Note: adding --deb-systemd ${REPO_ROOT}/tools/packaging/common/istio.service will result in
    49  # a /etc/systemd/system/multi-user.target.wants/istio.service and auto-start. Currently not used
    50  # since we need configuration.
    51  # --iteration 1 adds a "-1" suffix to the version that didn't exist before
    52  ${TARGET_OUT_LINUX}/release/istio-sidecar.deb: | ${TARGET_OUT_LINUX} deb/fpm
    53  ${TARGET_OUT_LINUX}/release/istio-sidecar.rpm: | ${TARGET_OUT_LINUX} rpm/fpm
    54  
    55  # Package the sidecar rpm file.
    56  rpm/fpm:
    57  	rm -f ${TARGET_OUT_LINUX}/release/istio-sidecar.rpm
    58  	fpm -s dir -t rpm -n ${SIDECAR_PACKAGE_NAME} -p ${TARGET_OUT_LINUX}/release/istio-sidecar.rpm --version $(PACKAGE_VERSION) -f \
    59  		--url http://istio.io  \
    60  		--license Apache \
    61  		--architecture "${TARGET_ARCH}" \
    62  		--vendor istio.io \
    63  		--maintainer istio@istio.io \
    64  		--after-install tools/packaging/postinst.sh \
    65  		--config-files /var/lib/istio/envoy/envoy_bootstrap_tmpl.json \
    66  		--config-files /var/lib/istio/envoy/sidecar.env \
    67  		--description "Istio Sidecar" \
    68  		--depends iproute \
    69  		--depends iptables \
    70  		--depends sudo \
    71  		--depends hostname \
    72  		$(RPM_COMPRESSION) \
    73  		$(SIDECAR_FILES)
    74  
    75  # Package the sidecar deb file.
    76  deb/fpm:
    77  	rm -f ${TARGET_OUT_LINUX}/release/istio-sidecar.deb
    78  	fpm -s dir -t deb -n ${SIDECAR_PACKAGE_NAME} -p ${TARGET_OUT_LINUX}/release/istio-sidecar.deb --version $(PACKAGE_VERSION) -f \
    79  		--url http://istio.io  \
    80  		--license Apache \
    81  		--vendor istio.io \
    82  		--architecture "${TARGET_ARCH}" \
    83  		--maintainer istio@istio.io \
    84  		--after-install tools/packaging/postinst.sh \
    85  		--config-files /var/lib/istio/envoy/envoy_bootstrap_tmpl.json \
    86  		--config-files /var/lib/istio/envoy/sidecar.env \
    87  		--description "Istio Sidecar" \
    88  		--depends iproute2 \
    89  		--depends iptables \
    90  		--depends sudo \
    91  		--depends hostname \
    92  		$(DEB_COMPRESSION) \
    93  		$(SIDECAR_FILES)
    94  
    95  .PHONY: \
    96  	deb \
    97  	deb/fpm \
    98  	rpm/fpm \
    99  	sidecar.deb