Alon Bar-Lev has uploaded a new change for review. Change subject: packaging: open source like versioning scheme ......................................................................
packaging: open source like versioning scheme Add version.mak with version information. Major and minor components are taken from pom.xml. Fix is taken from version.mak. Milestone is a string representation of the milestone example for ordering: - master - alpha - master - beta - master - beta2 - master - rc - master - rc2 - master - <none> RPM_RELEASE is a rpm specific release string that should be manually modified after milestone change. Example of sequence: # master FIX_RELEASE=0 MILESTONE=master RPM_RELEASE=0.0.$(MILESTONE).$(shell date +%Y%m%d%H%M%S) # beta FIX_RELEASE=0 MILESTONE=beta RPM_RELEASE=0.1 # post beta FIX_RELEASE=0 MILESTONE=master RPM_RELEASE=0.2.$(MILESTONE).$(shell date +%Y%m%d%H%M%S) # release FIX_RELEASE=0 MILESTONE= RPM_RELEASE=1 # post release FIX_RELEASE=1 MILESTONE=master RPM_RELEASE=0.0.$(MILESTONE).$(shell date +%Y%m%d%H%M%S) Change-Id: Ibe7d85addc16950a3efbebb1f6e157d5401745b2 Signed-off-by: Alon Bar-Lev <[email protected]> --- M .gitignore M Makefile M packaging/fedora/spec/ovirt-engine.spec.in A version.mak 4 files changed, 72 insertions(+), 34 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/06/12406/1 diff --git a/.gitignore b/.gitignore index 08e5e6e..83ab7a1 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ backend/manager/conf/engine.conf.defaults backend/manager/tools/src/main/shell/engine-prolog.sh packaging/fedora/engine-service.py +packaging/fedora/spec/ovirt-engine.spec diff --git a/Makefile b/Makefile index b0eaa36..ad37e05 100644 --- a/Makefile +++ b/Makefile @@ -21,10 +21,19 @@ # information on the Apache Software Foundation, please see # <http://www.apache.org/>. +include version.mak +# major, minor, seq +POM_VERSION:=$(shell cat pom.xml | grep '<engine.version>' | sed -e 's/.*>\(.*\)<.*/\1/' -e 's/-SNAPSHOT//') +# major, minor from pom and fix +APP_VERSION=$(shell echo $(POM_VERSION) | sed 's/\([^.]*\.[^.]\)\..*/\1/').$(FIX_RELEASE) +RPM_VERSION=$(APP_VERSION) +PACKAGE_VERSION=$(APP_VERSION)$(if $(MILESTONE),_$(MILESTONE)) +PACKAGE_NAME=ovirt-engine +DISPLAY_VERSION=$(PACKAGE_VERSION) + MVN=mvn EXTRA_BUILD_FLAGS= BUILD_FLAGS=-P gwt-admin,gwt-user -PACKAGE_NAME=ovirt-engine ENGINE_NAME=$(PACKAGE_NAME) PREFIX=/usr/local LOCALSTATE_DIR=$(PREFIX)/var @@ -49,23 +58,9 @@ PYTHON=python PYTHON_DIR:=$(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib as f;print(f())") -# RPM version -POM_VERSION:=$(shell cat pom.xml | grep '<engine.version>' | awk -F\> '{print $$2}' | awk -F\< '{print $$1}') -APP_VERSION:=$(subst -SNAPSHOT,,$(POM_VERSION)) -RPM_VERSION:=$(shell echo $(APP_VERSION) | sed "s/-/_/") - -# Display version -APP_VERSION_DISPLAY=$(APP_VERSION) - -# Release Version; used to create y in <x.x.x-y> numbering. -# Should be used to create releases. -RPM_RELEASE_VERSION=0.1.$(shell date +%Y%m%d%H%M%S) - -SPEC_FILE_IN=packaging/fedora/spec/ovirt-engine.spec.in -SPEC_FILE=$(PACKAGE_NAME).spec OUTPUT_RPMBUILD=$(shell pwd -P)/tmp.rpmbuild OUTPUT_DIR=output -TARBALL=$(PACKAGE_NAME)-$(RPM_VERSION).tar.gz +TARBALL=$(PACKAGE_NAME)-$(PACKAGE_VERSION).tar.gz SRPM=$(OUTPUT_DIR)/$(PACKAGE_NAME)-$(RPM_VERSION)*.src.rpm ARCH=noarch BUILD_FILE=tmp.built @@ -113,6 +108,10 @@ -e "s|@ENGINE_LOCK@|$(PKG_LOCK_DIR)|" \ -e "s|@ENGINE_CACHE@|$(PKG_CACHE_DIR)|" \ -e "s|@ENGINE_PID@|$(PID_DIR)/$(ENGINE_NAME).pid|" \ + -e "s|@RPM_VERSION@|$(RPM_VERSION)|" \ + -e "s|@RPM_RELEASE@|$(RPM_RELEASE)|" \ + -e "s|@PACKAGE_NAME@|$(PACKAGE_NAME)|" \ + -e "s|@PACKAGE_VERSION@|$(PACKAGE_VERSION)|" \ $< > $@ # List of files that will be generated from templates: @@ -120,6 +119,7 @@ backend/manager/conf/engine.conf.defaults \ backend/manager/tools/src/main/shell/engine-prolog.sh \ packaging/fedora/engine-service.py \ + packaging/fedora/spec/ovirt-engine.spec \ $(NULL) all: \ @@ -140,7 +140,7 @@ clean: # Clean maven generated stuff: $(MVN) clean $(EXTRA_BUILD_FLAGS) - rm -rf $(OUTPUT_RPMBUILD) $(SPEC_FILE) $(OUTPUT_DIR) $(BUILD_FILE) + rm -rf $(OUTPUT_RPMBUILD) $(OUTPUT_DIR) $(BUILD_FILE) [ "$(MAVEN_OUTPUT_DIR_DEFAULT)" = "$(MAVEN_OUTPUT_DIR)" ] && rm -fr "$(MAVEN_OUTPUT_DIR)" # Clean files generated from templates: @@ -165,16 +165,18 @@ install_service \ $(NULL) -tarball: - sed -e 's/@PACKAGE_VERSION@/$(RPM_VERSION)/g' \ - -e 's/@PACKAGE_RELEASE@/$(RPM_RELEASE_VERSION)/g' $(SPEC_FILE_IN) > $(SPEC_FILE) - git ls-files | tar --files-from /proc/self/fd/0 -czf $(TARBALL) $(SPEC_FILE) - rm -f $(SPEC_FILE) +packaging/fedora/spec/ovirt-engine.spec: version.mak + +dist: packaging/fedora/spec/ovirt-engine.spec + git ls-files | tar --files-from /proc/self/fd/0 -czf $(TARBALL) packaging/fedora/spec/ovirt-engine.spec @echo @echo You can use $(RPMBUILD) -tb $(TARBALL) to produce rpms @echo -srpm: tarball +# legacy +tarball: dist + +srpm: dist rm -rf $(OUTPUT_RPMBUILD) mkdir -p $(OUTPUT_RPMBUILD)/{SPECS,RPMS,SRPMS,SOURCES,BUILD,BUILDROOT} mkdir -p $(OUTPUT_DIR) @@ -236,10 +238,10 @@ install -dm 755 $(DESTDIR)$(PKG_EAR_DIR) install -dm 755 $(DESTDIR)$(MAVENPOM_DIR) - X=`find "$(MAVEN_OUTPUT_DIR)" -name 'engine-server-ear-$(APP_VERSION)*'.ear` && unzip "$$X" -d "$(DESTDIR)$(PKG_EAR_DIR)" + X=`find "$(MAVEN_OUTPUT_DIR)" -name 'engine-server-ear-$(POM_VERSION)*'.ear` && unzip "$$X" -d "$(DESTDIR)$(PKG_EAR_DIR)" for artifact_id in $(ARTIFACTS); do \ - POM=`find "$(MAVEN_OUTPUT_DIR)" -name "$${artifact_id}-$(APP_VERSION)*.pom"`; \ + POM=`find "$(MAVEN_OUTPUT_DIR)" -name "$${artifact_id}-$(POM_VERSION)*.pom"`; \ if ! [ -f "$${POM}" ]; then \ echo "ERROR: Cannot find artifact $${artifact_id}"; \ exit 1; \ @@ -248,7 +250,7 @@ install -p -m 644 "$${POM}" "$(DESTDIR)$(MAVENPOM_DIR)/$(PACKAGE_NAME)-$${artifact_id}.pom"; \ done - sed -i "s/MYVERSION/$(RPM_VERSION)-$(RPM_RELEASE_VERSION)/" $(DESTDIR)$(PKG_EAR_DIR)/root.war/engineVersion.js + sed -i "s/MYVERSION/$(DISPLAY_VERSION)/" $(DESTDIR)$(PKG_EAR_DIR)/root.war/engineVersion.js install_setup: @echo "*** Deploying setup executables" @@ -384,14 +386,14 @@ install -m 644 frontend/usbfilter.txt $(DESTDIR)$(PKG_SYSCONF_DIR) # Create a version file - echo $(APP_VERSION_DISPLAY) > $(DESTDIR)$(DATA_DIR)/conf/version + echo $(DISPLAY_VERSION) > $(DESTDIR)$(DATA_DIR)/conf/version install_jboss_modules: @echo "*** Deploying JBoss modules" # Uncompress and install the contents of the modules archives to # the directory containing engine modules: - find "$(MAVEN_OUTPUT_DIR)" -name "*-$(APP_VERSION)*-modules.zip" -exec unzip {} -d "$(DESTDIR)$(PKG_JBOSS_MODULES)" \; + find "$(MAVEN_OUTPUT_DIR)" -name "*-$(POM_VERSION)*-modules.zip" -exec unzip {} -d "$(DESTDIR)$(PKG_JBOSS_MODULES)" \; install_service: @echo "*** Deploying service" diff --git a/packaging/fedora/spec/ovirt-engine.spec.in b/packaging/fedora/spec/ovirt-engine.spec.in index 4fe1fc5..843414d 100644 --- a/packaging/fedora/spec/ovirt-engine.spec.in +++ b/packaging/fedora/spec/ovirt-engine.spec.in @@ -61,8 +61,8 @@ -j1 \\\ PACKAGE_NAME=%{name} \\\ RPM_VERSION=%{version} \\\ - RPM_RELEASE_VERSION=%{release} \\\ - APP_VERSION_DISPLAY=%{version}-%{release} \\\ + RPM_RELEASE=%{release} \\\ + DISPLAY_VERSION=%{version}-%{release} \\\ ENGINE_NAME=%{engine_name} \\\ LOCALSTATE_DIR=%{_localstatedir} \\\ ENGINE_STATE=%{engine_state} \\\ @@ -87,14 +87,14 @@ %{?BUILD_FLAGS:BUILD_FLAGS="%{BUILD_FLAGS}"} \\\ %{?EXTRA_BUILD_FLAGS:EXTRA_BUILD_FLAGS="%{EXTRA_BUILD_FLAGS}"} -Name: ovirt-engine -Version: @PACKAGE_VERSION@ -Release: @PACKAGE_RELEASE@%{?release_suffix}%{?dist} +Name: @PACKAGE_NAME@ +Version: @RPM_VERSION@ +Release: @RPM_RELEASE@%{?release_suffix}%{?dist} Summary: Management server for Open Virtualization Group: Virtualization/Management License: ASL 2.0 URL: http://www.ovirt.org -Source0: http://ovirt.org/releases/stable/src/%{name}-%{version}.tar.gz +Source0: http://ovirt.org/releases/stable/src/@PACKAGE_NAME@-@[email protected] BuildArch: noarch diff --git a/version.mak b/version.mak new file mode 100644 index 0000000..1de17f1 --- /dev/null +++ b/version.mak @@ -0,0 +1,35 @@ +# Version Information + +# Major and minor are taken from pom.xml + +# Fix release is manually specified, +# increment after releasing/branching +FIX_RELEASE=0 + +# Milestone is manually specified, +# example for ordering: +# - master +# - alpha +# - master +# - beta +# - master +# - beta2 +# - master +# - rc +# - master +# - rc2 +# - master +# - <none> +# +MILESTONE=master + +# RPM release is manually specified, +# For pre-release: +# RPM_RELEASE=0.N.$(MILESTONE).$(shell date +%Y%m%d%H%M%S) +# While N is incremented when milestone is changed. +# +# For release: +# RPM_RELEASE=N +# while N is incremented each re-release +# +RPM_RELEASE=0.0.$(MILESTONE).$(shell date +%Y%m%d%H%M%S) -- To view, visit http://gerrit.ovirt.org/12406 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibe7d85addc16950a3efbebb1f6e157d5401745b2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alon Bar-Lev <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
