Adapt build system and RPM build to Git.

This commit is contained in:
Ioana Stanciu 2023-03-07 17:53:22 +02:00
parent ca6bd39302
commit 1333ca6680
6 changed files with 57 additions and 10 deletions

View File

@ -81,6 +81,10 @@ DOCGEN := $(DOCGEN_D)
APIDOCS := apidocs
endif
GIT_TAG := $(shell LANG=C LC_MESSAGES=C git tag 2>/dev/nul | tail -1)
GIT_HASH := $(shell LANG=C LC_MESSAGES=C git rev-list -n1 HEAD 2>/dev/null)
.PHONY: all everything debug ddebug xdebug ndebug
all: engine modules clients ilibs
@ -291,9 +295,9 @@ uninstall uninstall-root:
install-root uninstall-root: LDCONFIG:=ldconfig
.PHONY: snapshot tarball rpm srpm revision
.PHONY: snapshot tarball rpm srpm rpm-tag srpm-tag rpm-head srpm-head revision check-gittag
snapshot tarball: check-topdir revision clean windows apidocs
@if [ $@ = snapshot ]; then ver="`date '+SVN-%Y%m%d'`"; else ver="@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@"; fi ; \
@if [ $@ = snapshot ]; then ver="`date '+GIT-%Y%m%d'`"; else ver="@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@"; fi ; \
wd=`pwd|sed 's,^.*/,,'`; \
mkdir -p packing/tarballs; cd ..; \
echo $$wd/tar-exclude >$$wd/tar-exclude; \
@ -307,6 +311,7 @@ snapshot tarball: check-topdir revision clean windows apidocs
find $$wd -name .svn >>$$wd/tar-exclude; \
find $$wd -name CVS >>$$wd/tar-exclude; \
find $$wd -name .cvsignore >>$$wd/tar-exclude; \
find $$wd -name .gitignore >>$$wd/tar-exclude; \
else \
echo "$$wd/packing/rpm/yate.spec" >>$$wd/tar-exclude; \
fi ; \
@ -323,15 +328,48 @@ snapshot tarball: check-topdir revision clean windows apidocs
$$wd; \
rm $$wd/tar-exclude
rpm: tarball
# rpm and sprm will check that head is at the last tag
rpm: check-gittag tarball
rpmbuild -tb $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
srpm: tarball
srpm: check-gittag tarball
rpmbuild -ta $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
revision: check-topdir
@-rev=`LANG=C LC_MESSAGES=C svn info 2>/dev/null | sed -n 's,^Last Changed Rev: *,,p'`; \
test -z "$$rev" || echo "$$rev" > packing/revision.txt
#build rpm/srpm with tag in revision number
rpm-tag:
rpmbuild -tb --define 'revision $(GIT_TAG)git' $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
srpm-tag:
rpmbuild -ta --define 'revision $(GIT_TAG)git' $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
# build packages from GIT HEAD
rpm-head: tarball
rpmbuild -tb --define 'revision $(GIT_HASH)git' $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
srpm-head: tarball
rpmbuild -ta --define 'revision $(GIT_HASH)git' $(RPMOPT) packing/tarballs/@PACKAGE_TARNAME@-@PACKAGE_VERSION@-@PACKAGE_STATUS@@PACKAGE_RELEASE@.tar.gz
# tag=`LANG=C LC_MESSAGES=C git tag 2>/dev/nul | tail -1`; \
check-gittag revision: check-topdir
@tag_hash=""; \
if [ "" != "$(GIT_TAG)" ]; then \
tag_hash=`LANG=C LC_MESSAGES=C git rev-list -n1 $(GIT_TAG) 2>/dev/null`; \
elif [ $@ = check-gittag ]; then \
echo "No available GIT tag"; \
exit 1; \
fi; \
if [ "x$(GIT_HASH)" != "x$$tag_hash" ]; then \
if [ $@ = check-gittag ]; then \
echo "Current commit hash $(GIT_HASH) different from expected hash for tag $(GIT_TAG) ($$tag_hash)"; \
exit 1; \
fi; \
tag=""; \
fi; \
test -z "$(GIT_TAG)" || echo "$(GIT_TAG)" > packing/revision.txt ; \
test -z "$(GIT_HASH)" || echo "$$GIT_HASH" > packing/git_commit.txt
%.o: @srcdir@/%.cpp $(MKDEPS) @srcdir@/yatengine.h
$(COMPILE) -c $<

View File

@ -9,8 +9,11 @@ fi
PACKAGE_RELEASE="1"
PACKAGE_STATUS="devel"
PACKAGE_REVISION=`cd "$srcdir"; LANG=C LC_MESSAGES=C svn info 2>/dev/null | sed -n 's,^Last Changed Rev: *,,p'`
PACKAGE_REVISION=`cd "$srcdir"; LANG=C LC_MESSAGES=C git rev-list -n 1 HEAD 2>/dev/null`
test -z "$PACKAGE_REVISION" && PACKAGE_REVISION=`cat "$srcdir/packing/revision.txt" 2>/dev/null`
test -z "$PACKAGE_REVISION" && PACKAGE_REVISION=`cat "$srcdir/packing/git_commit.txt" 2>/dev/null`
PACKAGE_GIT_HASH=`cd "$srcdir"; LANG=C LC_MESSAGES=C git rev-list -n 1 HEAD 2>/dev/null`
test -z "$PACKAGE_REVISION" && PACKAGE_REVISION=`cat "$srcdir/packing/git_commit.txt" 2>/dev/null`
AC_ARG_WITH(status,AC_HELP_STRING([--with-status=NAME],[use NAME as package status]),[PACKAGE_STATUS=$withval])
PACKAGE_VERSION_MAJOR="${PACKAGE_VERSION%%.*}"
@ -25,6 +28,7 @@ AC_SUBST(PACKAGE_VERSION_RELEASE)
AC_SUBST(PACKAGE_RELEASE)
AC_SUBST(PACKAGE_STATUS)
AC_SUBST(PACKAGE_REVISION)
AC_SUBST(PACKAGE_GIT_HASH)
# We may need the host OS type but avoid the overhead of AC_CANONICAL_SYSTEM
AC_MSG_CHECKING([for local operating system type])

View File

@ -549,6 +549,7 @@ bool EngineStatusHandler::received(Message &msg)
msg.retValue() << "name=engine,type=system";
msg.retValue() << ",version=" << YATE_VERSION;
msg.retValue() << ",revision=" << YATE_REVISION;
msg.retValue() << ",githash=" << YATE_GIT_HASH;
msg.retValue() << ",nodename=" << Engine::nodeName();
msg.retValue() << ";plugins=" << plugins.count();
msg.retValue() << ",inuse=" << Engine::self()->usedPlugins();

2
packing/.gitignore vendored
View File

@ -1,5 +1,7 @@
revision.txt
git_commit.txt
core*
*.orig
*~
.*.swp

View File

@ -40,8 +40,8 @@
%define debug_package ${nil}
%endif
%if "%{revision}" == "svn"
%define revision @PACKAGE_REVISION@svn
%if "%{revision}" == "git"
%define revision @PACKAGE_REVISION@git
%endif
%if "%{dist}" == ""
@ -90,6 +90,7 @@ BuildRequires: gcc-c++
%description
Yate is a telephony engine designed to implement PBX and IVR solutions
for small to large scale projects.
(GIT commit: @PACKAGE_GIT_HASH@)
%files
%defattr(-, root, root)

View File

@ -36,6 +36,7 @@
#define YATE_RELEASE "@PACKAGE_RELEASE@"
#define YATE_STATUS "@PACKAGE_STATUS@"
#define YATE_REVISION "@PACKAGE_REVISION@"
#define YATE_GIT_HASH "@PACKAGE_GIT_HASH@"
/* Windows version resource - file and string style */
#define YATE_WINVER_F @PACKAGE_VERSION_MAJOR@,@PACKAGE_VERSION_MINOR@,@PACKAGE_VERSION_BUILD@,@PACKAGE_VERSION_RELEASE@