From ffe402f201fb15533baffd69108bceea1cc75c8a Mon Sep 17 00:00:00 2001 From: James Shubin Date: Fri, 4 Oct 2019 06:02:08 -0400 Subject: [PATCH] misc: Add fedora-30 mkosi+fpm build environment Good example of how to add a new distro or version. --- Makefile | 30 +++++++++++++----- misc/mkosi/mkosi.default.fedora-30 | 50 ++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 misc/mkosi/mkosi.default.fedora-30 diff --git a/Makefile b/Makefile index 548e6136..50cbc089 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-29 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux -.PHONY: release releases_path release_fedora-29 release_debian-10 release_ubuntu-bionic release_archlinux +.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: funcgen .SILENT: clean bindata @@ -53,11 +53,13 @@ GOOSARCHES ?= linux/amd64 linux/ppc64 linux/ppc64le linux/arm64 darwin/amd64 GOHOSTOS = $(shell go env GOHOSTOS) GOHOSTARCH = $(shell go env GOHOSTARCH) +TOKEN_FEDORA-30 = fedora-30 TOKEN_FEDORA-29 = fedora-29 TOKEN_DEBIAN-10 = debian-10 TOKEN_UBUNTU-BIONIC = ubuntu-bionic TOKEN_ARCHLINUX = archlinux +PKG_FEDORA-30 = releases/$(VERSION)/$(TOKEN_FEDORA-30)/mgmt-$(VERSION)-1.x86_64.rpm PKG_FEDORA-29 = releases/$(VERSION)/$(TOKEN_FEDORA-29)/mgmt-$(VERSION)-1.x86_64.rpm PKG_DEBIAN-10 = releases/$(VERSION)/$(TOKEN_DEBIAN-10)/mgmt_$(VERSION)_amd64.deb PKG_UBUNTU-BIONIC = releases/$(VERSION)/$(TOKEN_UBUNTU-BIONIC)/mgmt_$(VERSION)_amd64.deb @@ -357,7 +359,11 @@ tag: ## tags a new release # # mkosi # -mkosi: mkosi_fedora-29 mkosi_debian-10 mkosi_ubuntu-bionic mkosi_archlinux ## builds distro packages via mkosi +mkosi: mkosi_fedora-30 mkosi_fedora-29 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..." + @title='$@' ; distro=$${title#'mkosi_'} ; ./misc/mkosi/make.sh $${distro} `realpath "releases/$(VERSION)/"` mkosi_fedora-29: releases/$(VERSION)/.mkdir @title='$@' ; echo "Generating: $${title#'mkosi_'} via mkosi..." @@ -384,15 +390,17 @@ releases_path: @#Don't put any other output or dependencies in here or they'll show! @echo "releases/$(VERSION)/" +release_fedora-30: $(PKG_FEDORA-30) release_fedora-29: $(PKG_FEDORA-29) release_debian-10: $(PKG_DEBIAN-10) release_ubuntu-bionic: $(PKG_UBUNTU-BIONIC) release_archlinux: $(PKG_ARCHLINUX) -releases/$(VERSION)/mgmt-release.url: $(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_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) $(SHA256SUMS_ASC) @echo "Creating github release..." hub release create \ -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_DEBIAN-10) \ -a $(PKG_UBUNTU-BIONIC) \ @@ -404,7 +412,15 @@ releases/$(VERSION)/mgmt-release.url: $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UB || rm -f releases/$(VERSION)/mgmt-release.url releases/$(VERSION)/.mkdir: - mkdir -p releases/$(VERSION)/{$(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_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..." + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/make-rpm-changelog.sh "$${distro}" $(VERSION) + +$(PKG_FEDORA-30): releases/$(VERSION)/$(TOKEN_FEDORA-30)/changelog + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Building: $${distro} package..." + @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; ./misc/fpm-pack.sh $${distro} $(VERSION) libvirt-devel augeas-devel releases/$(VERSION)/$(TOKEN_FEDORA-29)/changelog: $(PROGRAM) releases/$(VERSION)/.mkdir @title='$(@D)' ; distro=$${title#'releases/$(VERSION)/'} ; echo "Generating: $${distro} changelog..." @@ -434,10 +450,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) libvirt augeas -$(SHA256SUMS): $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) +$(SHA256SUMS): $(PKG_FEDORA-30) $(PKG_FEDORA-29) $(PKG_DEBIAN-10) $(PKG_UBUNTU-BIONIC) $(PKG_ARCHLINUX) @# remove the directory separator in the SHA256SUMS file @echo "Generating: sha256 sum..." - sha256sum $(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_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.fedora-30 b/misc/mkosi/mkosi.default.fedora-30 new file mode 100644 index 00000000..9d4a93d0 --- /dev/null +++ b/misc/mkosi/mkosi.default.fedora-30 @@ -0,0 +1,50 @@ +[Distribution] +Distribution=fedora +Release=30 + +[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