From d64f9f5401908eb7584566e988a9243ae6d5cc71 Mon Sep 17 00:00:00 2001 From: Jimmy Tang Date: Fri, 4 Oct 2019 13:26:21 +0000 Subject: [PATCH] misc: Add CentOS 7 rpm build --- Makefile | 31 ++++++++++++++----- misc/mkosi/mkosi.default.centos-7 | 50 +++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 misc/mkosi/mkosi.default.centos-7 diff --git a/Makefile b/Makefile index 03c37401..24061990 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,8 @@ SHELL = /usr/bin/env bash .PHONY: all art cleanart version program lang path deps run race bindata generate build build-debug crossbuild clean test gofmt yamlfmt format docs .PHONY: rpmbuild mkdirs rpm srpm spec tar upload upload-sources upload-srpms upload-rpms upload-releases copr tag -.PHONY: mkosi mkosi_fedora-30 mkosi_fedora-29 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux -.PHONY: release releases_path release_fedora-30 release_fedora-29 release_debian-10 release_ubuntu-bionic release_archlinux +.PHONY: mkosi mkosi_fedora-30 mkosi_fedora-29 mkosi_centos-7 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux +.PHONY: release releases_path release_fedora-30 release_fedora-29 release_centos-7 release_debian-10 release_ubuntu-bionic release_archlinux .PHONY: funcgen .SILENT: clean bindata @@ -55,18 +55,21 @@ GOHOSTARCH = $(shell go env GOHOSTARCH) TOKEN_FEDORA-30 = fedora-30 TOKEN_FEDORA-29 = fedora-29 +TOKEN_CENTOS-7 = centos-7 TOKEN_DEBIAN-10 = debian-10 TOKEN_UBUNTU-BIONIC = ubuntu-bionic TOKEN_ARCHLINUX = archlinux FILE_FEDORA-30 = mgmt-$(TOKEN_FEDORA-30)-$(VERSION)-1.x86_64.rpm FILE_FEDORA-29 = mgmt-$(TOKEN_FEDORA-29)-$(VERSION)-1.x86_64.rpm +FILE_CENTOS-7 = mgmt-$(TOKEN_CENTOS-7)-$(VERSION)-1.x86_64.rpm FILE_DEBIAN-10 = mgmt_$(TOKEN_DEBIAN-10)_$(VERSION)_amd64.deb FILE_UBUNTU-BIONIC = mgmt_$(TOKEN_UBUNTU-BIONIC)_$(VERSION)_amd64.deb FILE_ARCHLINUX = mgmt-$(TOKEN_ARCHLINUX)-$(VERSION)-1-x86_64.pkg.tar.xz PKG_FEDORA-30 = releases/$(VERSION)/$(TOKEN_FEDORA-30)/$(FILE_FEDORA-30) PKG_FEDORA-29 = releases/$(VERSION)/$(TOKEN_FEDORA-29)/$(FILE_FEDORA-29) +PKG_CENTOS-7 = releases/$(VERSION)/$(TOKEN_CENTOS-7)/$(FILE_CENTOS-7) PKG_DEBIAN-10 = releases/$(VERSION)/$(TOKEN_DEBIAN-10)/$(FILE_DEBIAN-10) PKG_UBUNTU-BIONIC = releases/$(VERSION)/$(TOKEN_UBUNTU-BIONIC)/$(FILE_UBUNTU-BIONIC) PKG_ARCHLINUX = releases/$(VERSION)/$(TOKEN_ARCHLINUX)/$(FILE_ARCHLINUX) @@ -365,7 +368,7 @@ tag: ## tags a new release # # mkosi # -mkosi: mkosi_fedora-30 mkosi_fedora-29 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux ## builds distro packages via mkosi +mkosi: mkosi_fedora-30 mkosi_fedora-29 mkosi_centos-7 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux ## builds distro packages via mkosi mkosi_fedora-30: releases/$(VERSION)/.mkdir @title='$@' ; echo "Generating: $${title#'mkosi_'} via mkosi..." @@ -375,6 +378,10 @@ mkosi_fedora-29: releases/$(VERSION)/.mkdir @title='$@' ; echo "Generating: $${title#'mkosi_'} via mkosi..." @title='$@' ; distro=$${title#'mkosi_'} ; ./misc/mkosi/make.sh $${distro} `realpath "releases/$(VERSION)/"` +mkosi_centos-7: releases/$(VERSION)/.mkdir + @title='$@' ; echo "Generating: $${title#'mkosi_'} via mkosi..." + @title='$@' ; distro=$${title#'mkosi_'} ; ./misc/mkosi/make.sh $${distro} `realpath "releases/$(VERSION)/"` + mkosi_debian-10: releases/$(VERSION)/.mkdir @title='$@' ; echo "Generating: $${title#'mkosi_'} via mkosi..." @title='$@' ; distro=$${title#'mkosi_'} ; ./misc/mkosi/make.sh $${distro} `realpath "releases/$(VERSION)/"` @@ -398,11 +405,12 @@ releases_path: release_fedora-30: $(PKG_FEDORA-30) release_fedora-29: $(PKG_FEDORA-29) +release_centos-7: $(PKG_CENTOS-7) release_debian-10: $(PKG_DEBIAN-10) release_ubuntu-bionic: $(PKG_UBUNTU-BIONIC) release_archlinux: $(PKG_ARCHLINUX) -releases/$(VERSION)/mgmt-release.url: $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) $(SHA256SUMS_ASC) +releases/$(VERSION)/mgmt-release.url: $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_CENTOS-7) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) $(SHA256SUMS_ASC) @echo "Pushing git tag $(VERSION) to origin..." git push origin $(VERSION) @echo "Creating github release..." @@ -410,6 +418,7 @@ releases/$(VERSION)/mgmt-release.url: $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DE -F <( echo -e "$(VERSION)\n";echo "Verify the signatures of all packages before you use them. The signing key can be downloaded from https://purpleidea.com/contact/#pgp-key to verify the release." ) \ -a $(PKG_FEDORA-30) \ -a $(PKG_FEDORA-29) \ + -a $(PKG_CENTOS-7) \ -a $(PKG_DEBIAN-10) \ -a $(PKG_UBUNTU-BIONIC) \ -a $(PKG_ARCHLINUX) \ @@ -420,7 +429,7 @@ releases/$(VERSION)/mgmt-release.url: $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DE || rm -f releases/$(VERSION)/mgmt-release.url releases/$(VERSION)/.mkdir: - mkdir -p releases/$(VERSION)/{$(TOKEN_FEDORA-30),$(TOKEN_FEDORA-29),$(TOKEN_DEBIAN-10),$(TOKEN_UBUNTU-BIONIC),$(TOKEN_ARCHLINUX)}/ && touch releases/$(VERSION)/.mkdir + mkdir -p releases/$(VERSION)/{$(TOKEN_FEDORA-30),$(TOKEN_FEDORA-29),$(TOKEN_CENTOS-7),$(TOKEN_DEBIAN-10),$(TOKEN_UBUNTU-BIONIC),$(TOKEN_ARCHLINUX)}/ && touch releases/$(VERSION)/.mkdir releases/$(VERSION)/$(TOKEN_FEDORA-30)/changelog: $(PROGRAM) releases/$(VERSION)/.mkdir @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Generating: $${distro} changelog..." @@ -438,6 +447,14 @@ $(PKG_FEDORA-29): releases/$(VERSION)/$(TOKEN_FEDORA-29)/changelog @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Building: $${distro} package..." @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/fpm-pack.sh $${distro} $(VERSION) "$(FILE_FEDORA-29)" libvirt-devel augeas-devel +releases/$(VERSION)/$(TOKEN_CENTOS-7)/changelog: $(PROGRAM) releases/$(VERSION)/.mkdir + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Generating: $${distro} changelog..." + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/make-rpm-changelog.sh "$${distro}" $(VERSION) + +$(PKG_CENTOS-7): releases/$(VERSION)/$(TOKEN_CENTOS-7)/changelog + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Building: $${distro} package..." + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/fpm-pack.sh $${distro} $(VERSION) "$(FILE_CENTOS-7)" libvirt-devel augeas-devel + releases/$(VERSION)/$(TOKEN_DEBIAN-10)/changelog: $(PROGRAM) releases/$(VERSION)/.mkdir @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Generating: $${distro} changelog..." @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/make-deb-changelog.sh "$${distro}" $(VERSION) @@ -458,10 +475,10 @@ $(PKG_ARCHLINUX): $(PROGRAM) releases/$(VERSION)/.mkdir @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Building: $${distro} package..." @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/fpm-pack.sh $${distro} $(VERSION) "$(FILE_ARCHLINUX)" libvirt augeas -$(SHA256SUMS): $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) +$(SHA256SUMS): $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_CENTOS-7) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) @# remove the directory separator in the SHA256SUMS file @echo "Generating: sha256 sum..." - sha256sum $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) | awk -F '/| ' '{print $$1" "$$6}' > $(SHA256SUMS) + sha256sum $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_CENTOS-7) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) | awk -F '/| ' '{print $$1" "$$6}' > $(SHA256SUMS) $(SHA256SUMS_ASC): $(SHA256SUMS) @echo "Signing sha256 sum..." diff --git a/misc/mkosi/mkosi.default.centos-7 b/misc/mkosi/mkosi.default.centos-7 new file mode 100644 index 00000000..9eb66a60 --- /dev/null +++ b/misc/mkosi/mkosi.default.centos-7 @@ -0,0 +1,50 @@ +[Distribution] +Distribution=centos +Release=7 + +[Output] +Format=raw_btrfs +#Format=gpt_btrfs +Bootable=yes + +# This can be a ramdisk to improve performance. +OutputDirectory=mkosi.output + +[Partitions] +# 1G isn't enough for the base distros. +RootSize=5G + +[Packages] +# We need to download sources from the internet. +WithNetwork=true + +# The packages to appear in both the build and the final image. +Packages= + dnf + make + git + golang + tree +# The packages to appear in the build image, but absent from the final image. +#BuildPackages= +# dnf +# make +# git +# golang +# tree + +# Store our build artifacts here. This makes them accessible to the outside. +BuildDirectory=mkosi.builddir + +# Cache some of our package manager downloads. +Cache=mkosi.cache + +# Pull the parent git repository into the image. +BuildSources=../.. + +# Use this transfer mode for the git sources. +# XXX: Does auto-detect even work if BuildSources is not the current dir? Bug? +SourceFileTransfer=copy-git-cached + +# Skip the (second) final build phase, since we only need the build artifact. +SkipFinalPhase=true