guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/03: maint: Add 'release' target.


From: Ludovic Courtès
Subject: 03/03: maint: Add 'release' target.
Date: Mon, 8 May 2017 18:19:04 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 334dce145122683e576ca4cb6c68c360d4aada7e
Author: Ludovic Courtès <address@hidden>
Date:   Tue May 9 00:15:54 2017 +0200

    maint: Add 'release' target.
    
    Suggested by Jan Nieuwenhuizen.
    
    * Makefile.am (releasedir, PACKAGE_FULL_TARNAME, SOURCE_TARBALLS)
    (SUPPORTED_SYSTEMS, BINARY_TARBALLS, GUIXSD_SUPPORTED_SYSTEMS)
    (GUIXSD_IMAGE_BASE, GUIXSD_INSTALLATION_IMAGE_SIZE): New variables.
    (release): New target.
    (.PHONY): Add it.
---
 Makefile.am | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 78 insertions(+), 1 deletion(-)

diff --git a/Makefile.am b/Makefile.am
index f6a8f66..f574f5f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -546,6 +546,83 @@ gen-AUTHORS:
            "$(top_srcdir)" "$(distdir)/AUTHORS";               \
        fi
 
+
+#
+# Release management.
+#
+
+releasedir = release-$(PACKAGE_VERSION)
+
+PACKAGE_FULL_TARNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
+
+# List of source tarballs produced.  This must be kept in sync with the
+# 'dist-' options of 'AM_INIT_AUTOMAKE' in 'configure.ac'.
+SOURCE_TARBALLS =                                      \
+  $(foreach ext,tar.gz,$(PACKAGE_FULL_TARNAME).$(ext))
+
+# Systems supported by Guix.
+SUPPORTED_SYSTEMS = x86_64-linux i686-linux armhf-linux
+
+# Guix binary tarballs.
+BINARY_TARBALLS =                                                      \
+  $(foreach system,$(SUPPORTED_SYSTEMS),guix-binary.$(system).tar.xz)
+
+# Systems supported by GuixSD.
+GUIXSD_SUPPORTED_SYSTEMS = x86_64-linux #i686-linux
+
+# Prefix of the GuixSD installation image file name.
+GUIXSD_IMAGE_BASE = guixsd-usb-install-$(PACKAGE_VERSION)
+
+# Size of the installation image (for x86_64 typically).
+GUIXSD_INSTALLATION_IMAGE_SIZE ?= 950MiB
+
+# The release process works in several phases:
+#
+#   0. We assume the developer created a 'vX.Y' tag.
+#   1. Build the source tarball.
+#   2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag.
+#   3. Build the binary tarballs for that 'guix' package.
+#   4. Update the 'guix' package again.
+#   5. Build the GuixSD installation images.  The images will run 'guix'
+#      corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'.
+#
+# This 'release' target takes care of everything and copies the resulting
+# files to $(releasedir).
+release: distcheck
+       $(MKDIR_P) "$(releasedir)"
+       rm -f "$(releasedir)"/*
+       mv $(SOURCE_TARBALLS) "$(releasedir)"
+       cd po; git checkout .
+       $(top_builddir)/pre-inst-env "$(GUILE)"                 \
+          $(top_srcdir)/build-aux/update-guix-package.scm      \
+          "`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
+       git add $(top_srcdir)/gnu/packages/package-management.scm
+       git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
+       rm -f $(BINARY_TARBALLS)
+       $(MAKE) $(BINARY_TARBALLS)
+       for system in $(SUPPORTED_SYSTEMS) ; do                                 
\
+         mv "guix-binary.$$system.tar.xz"                                      
\
+             "$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ;  
\
+       done
+       $(top_builddir)/pre-inst-env "$(GUILE)"                 \
+          $(top_srcdir)/build-aux/update-guix-package.scm      \
+          "`git rev-parse HEAD`"
+       git add $(top_srcdir)/gnu/packages/package-management.scm
+       git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
+       for system in $(GUIXSD_SUPPORTED_SYSTEMS) ; do                          
        \
+         image=`$(top_builddir)/pre-inst-env                                   
        \
+           guix system disk-image                                              
        \
+           --image-size=$(GUIXSD_INSTALLATION_IMAGE_SIZE)                      
        \
+           gnu/system/install.scm` ;                                           
        \
+         if [ ! -f "$$image" ] ; then                                          
        \
+           echo "failed to produced GuixSD installation image for $$system" 
>&2 ;      \
+           exit 1 ;                                                            
        \
+         fi ;                                                                  
        \
+         xz < "$$image" > "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp" 
;       \
+         mv "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz.tmp"               
        \
+            "$(releasedir)/$(GUIXSD_IMAGE_BASE).$$system.xz" ;                 
        \
+       done
+
 update-guix-package:
        git rev-parse HEAD
        $(top_builddir)/pre-inst-env "$(GUILE)"                 \
@@ -587,7 +664,7 @@ hydra-jobs.scm: $(GOBJECTS)
 .PHONY: assert-no-store-file-names assert-binaries-available
 .PHONY: assert-final-inputs-self-contained
 .PHONY: clean-go make-go
-.PHONY: update-guix-package
+.PHONY: update-guix-package release
 
 ## -------------- ##
 ## Silent rules.  ##



reply via email to

[Prev in Thread] Current Thread [Next in Thread]