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

Reply via email to