support git and subversion; new possibility to set x_least_fix to a fix value without automated increase
This commit is contained in:
		| @@ -8,43 +8,60 @@ m4_define([mrw_esyscmd_s], [m4_normalize(m4_esyscmd([$1]))]) | ||||
|  | ||||
| # define least version number from subversion's revision number: | ||||
| # it is taken modulo 256 due to a bug on Apple's MacOSX | ||||
| m4_define(x_least, m4_ifdef([x_least_diff], mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       if test -z "${SVN_REVISION}"; then SVN_REVISION=0; fi | ||||
|       break; | ||||
|     fi | ||||
|   done | ||||
|   echo $ECHO_N $(($SVN_REVISION)) | ||||
| ]),  mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       if test -z "${SVN_REVISION}"; then SVN_REVISION=0; fi | ||||
|       break; | ||||
|     fi | ||||
|   done | ||||
|   # Mac does not support LEAST > 255 | ||||
|   echo $ECHO_N $(($SVN_REVISION%256)) | ||||
| ]))) | ||||
| m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix], | ||||
|   m4_ifdef([x_least_diff], | ||||
|     mrw_esyscmd_s([ | ||||
|       VCS_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-checkout" | ||||
|       for path in . .. ../..; do | ||||
|         if test -d .svn; then | ||||
|           VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|           if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|           break; | ||||
|         elif test -d .git; then | ||||
|           VCS_REVISION=$(git rev-list --all --count) | ||||
|           if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|           break; | ||||
|         fi | ||||
|       done | ||||
|       echo $ECHO_N $(($VCS_REVISION)) | ||||
|     ]),  mrw_esyscmd_s([ | ||||
|       VCS_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-checkout" | ||||
|       for path in . .. ../..; do | ||||
|         if test -d .svn; then | ||||
|           VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|           if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|           break; | ||||
|         elif test -d .git; then | ||||
|           VCS_REVISION=$(git rev-list --all --count) | ||||
|           if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|           break; | ||||
|         fi | ||||
|       done | ||||
|       # Mac does not support LEAST > 255 | ||||
|       echo $ECHO_N $(($VCS_REVISION%256)) | ||||
|     ]) | ||||
|   ) | ||||
| )) | ||||
|  | ||||
| # define version number from subversion's revision number: | ||||
| # it is taken modulo 256 due to a bug on Apple's MacOSX | ||||
| # add to x_minor if revision number is > 256 | ||||
| m4_define(x_minor_diff, mrw_esyscmd_s([ | ||||
|   SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout" | ||||
| m4_define(x_minor_diff, m4_ifdef([x_least_fix], 0, mrw_esyscmd_s([ | ||||
|   VCS_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-checkout" | ||||
|   for path in . .. ../..; do | ||||
|     if svn info $path 2>&1 > /dev/null; then | ||||
|       SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       if test -z "${SVN_REVISION}"; then SVN_REVISION=0; fi | ||||
|     if test -d .svn; then | ||||
|       VCS_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') | ||||
|       if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|       break; | ||||
|     elif test -d .git; then | ||||
|       VCS_REVISION=$(git rev-list --all --count) | ||||
|       if test -z "${VCS_REVISION}"; then VCS_REVISION=0; fi | ||||
|       break; | ||||
|     fi; | ||||
|   done | ||||
|   # Mac does not support LEAST > 255 | ||||
|   echo $ECHO_N $(($SVN_REVISION/256)) | ||||
| ])) | ||||
|   echo $ECHO_N $(($VCS_REVISION/256)) | ||||
| ]))) | ||||
| # setup version number | ||||
| m4_define(x_version, [x_major.m4_ifdef([x_least_diff], x_minor, m4_eval(x_minor+x_minor_diff)).m4_eval(m4_ifdef([x_least_diff], [x_least-x_least_diff], [x_least]))]) | ||||
|  | ||||
|   | ||||
| @@ -61,7 +61,7 @@ DESCRIPTION | ||||
|   configure.ac. Automatically copies or creates all required template | ||||
|   files. | ||||
|  | ||||
|   From your new and empty project's subversion path, call $0 to | ||||
|   From your new and empty project's subversion or git path, call $0 to | ||||
|   initialize your build environment. | ||||
|  | ||||
|   Before you call ${MY_NAME} the very first time, edit ${0#/*}/AUTHORS | ||||
| @@ -80,16 +80,27 @@ DESCRIPTION | ||||
|   https://dev.marc.waeckerlin.org/, and the path from where you call | ||||
|   ${MY_NAME} (which is actually ${PROJECT_PATH}) should be the path to | ||||
|   your newly created project. Please note that your project must be a | ||||
|   checked out subversion repository, since this build environment | ||||
|   relies on subversion. | ||||
|   checked out subversion or git repository, since this build | ||||
|   environment relies on subversion or git. | ||||
|  | ||||
|   Example for an initial run, where your new projet is stored in | ||||
|   subversion on svn:/path/to/your/new-project: | ||||
|   subversion on https:/path/to/your/new-project: | ||||
|  | ||||
|     cd ~/svn | ||||
|     svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ | ||||
|            bootstrap-build-environment | ||||
|     svn co svn:/path/to/your/new-project/trunk new-project | ||||
|     svn co https:/path/to/your/new-project/trunk new-project | ||||
|     cd new-project | ||||
|     ../bootstrap-build-environment/bootstrap.sh | ||||
|  | ||||
|   Example for an initial run, where your new projet is stored in | ||||
|   git on https:/path/to/your/new-project: | ||||
|  | ||||
|     cd ~/svn | ||||
|     svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ | ||||
|            bootstrap-build-environment | ||||
|     cd ~/git | ||||
|     git clone https:/path/to/your/new-project | ||||
|     cd new-project | ||||
|     ../bootstrap-build-environment/bootstrap.sh | ||||
|  | ||||
| @@ -201,13 +212,14 @@ FILES | ||||
|                   ${DEFAULT_PROJECT_NAME}::description(). | ||||
|   * ChangeLog:    Your changelog is automatically maintained from | ||||
|                   subversion history, using svn2cl. You don't need to | ||||
|                   care about. | ||||
|                   care about. It uses git2cl on git repositories. | ||||
|   * configure.ac: This file becomes very short and simple. You provide | ||||
|                   the project name, the major and minor version. The | ||||
|                   least version number is automatically taken from | ||||
|                   subversion's revision, so every checkin | ||||
|                   automatically increments the least version | ||||
|                   number. The following macros are supported: | ||||
|                   number. In git, git rev-list --all --count is used. | ||||
|                   The following macros are supported in configure.ac: | ||||
|       * Enable C++: AX_USE_CXX | ||||
|       * Enable LibTool library creation: AX_USE_LIBTOOL | ||||
|       * Enable Scripts: AX_USE_SCRIPTS | ||||
| @@ -247,6 +259,20 @@ EOF | ||||
|     shift; | ||||
| done | ||||
|  | ||||
| echo -en "\e[1m-> checking:\e[0m for version control system ..." | ||||
| if test -d .svn; then | ||||
|   VCS="svn" | ||||
|   VCSDEPENDS="subversion" | ||||
| elif test -d .git; then | ||||
|   VCS="git" | ||||
|   VCSDEPENDS="git" | ||||
| else | ||||
|     echo -e " \e[31merror\e[0m" | ||||
|     echo -e "\e[1m*** must be started in root path of a subversion or git repositry\e[0m" | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| echo -e " \e[32msuccess\e[0m detected ${VCS}" | ||||
|  | ||||
| HEADER='## @id '"\$Id\$"' | ||||
| ## | ||||
| @@ -270,6 +296,7 @@ CHEADER='/** @id '"\$Id\$"' | ||||
| //       1         2         3         4         5         6         7         8 | ||||
| // 45678901234567890123456789012345678901234567890123456789012345678901234567890 | ||||
|  | ||||
|  | ||||
| ' | ||||
|  | ||||
| notice() { | ||||
| @@ -318,7 +345,7 @@ contains() { | ||||
| checkdir() { | ||||
|     if ! test -d "$1"; then # create path | ||||
|         run mkdir -p "$1" | ||||
|         run svn add "$1" | ||||
|         run ${VCS} add "$1" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| @@ -365,8 +392,10 @@ to() { | ||||
|     fi | ||||
|     chmod $mode $1 | ||||
|     if test $exists -eq 0; then | ||||
|         run svn add "$1" | ||||
|         run svn propset svn:keywords "Id" "$1" | ||||
|         run ${VCS} add "$1" | ||||
|         if test "${VCS}" = "svn"; then | ||||
|             run svn propset svn:keywords "Id" "$1" | ||||
|         fi | ||||
|     fi | ||||
|     return 0 | ||||
| } | ||||
| @@ -386,8 +415,10 @@ copy() { | ||||
|     fi | ||||
|     run cp "${source}" "$1" | ||||
|     if test $exists -eq 0; then | ||||
|         run svn add "$1" | ||||
|         run svn propset svn:keywords "Id" "$1" | ||||
|         run ${VCS} add "$1" | ||||
|         if test "${VCS}" = "svn"; then | ||||
|             run svn propset svn:keywords "Id" "$1" | ||||
|         fi | ||||
|     fi | ||||
| } | ||||
|  | ||||
| @@ -413,10 +444,27 @@ doxyadd() { | ||||
|     fi | ||||
| } | ||||
|  | ||||
| vcs2cl() { | ||||
|     exists=0 | ||||
|     if test -f "Changelog"; then | ||||
|         exists=1 | ||||
|     fi | ||||
|     if test "${VCS}" = "git"; then | ||||
|         ${VCS}2cl > ChangeLog | ||||
|     else | ||||
|         ${VCS}2cl | ||||
|     fi | ||||
|     if test $exists -eq 0; then | ||||
|         run ${VCS} add ChangeLog | ||||
|     fi | ||||
| } | ||||
|  | ||||
| # Check if we are in subversion root, if so, create trunk, branches, tags: | ||||
| if test "$(LANG= svn info | sed -n 's,Relative URL: *,,p')" = "^/"; then | ||||
|     svn mkdir trunk branches tags | ||||
|     cd trunk | ||||
| if test "${VCS}" = "svn"; then | ||||
|     if test "$(LANG= svn info | sed -n 's,Relative URL: *,,p')" = "^/"; then | ||||
|         svn mkdir trunk branches tags | ||||
|         cd trunk | ||||
|     fi | ||||
| fi | ||||
|  | ||||
| # Initialize the environment: | ||||
| @@ -761,8 +809,10 @@ if testtag AX_USE_DOXYGEN; then | ||||
|         contains doc/doxyfile.in "${rebuildfiles[@]}"; then | ||||
|         run doxygen -g doc/doxyfile.in | ||||
|         if test $exists -eq 0; then | ||||
|             run svn add doc/doxyfile.in | ||||
|             run svn propset svn:keywords "Id" doc/doxyfile.in | ||||
|             run ${VCS} add doc/doxyfile.in | ||||
|             if test "${VCS}" = "svn"; then | ||||
|                 run svn propset svn:keywords "Id" doc/doxyfile.in | ||||
|             fi | ||||
|         fi | ||||
|         doxyreplace PROJECT_NAME "@PACKAGE_NAME@" | ||||
|         doxyreplace PROJECT_NUMBER "@PACKAGE_VERSION@" | ||||
| @@ -842,7 +892,7 @@ if testtag AX_USE_DEBIAN_PACKAGING; then | ||||
|  | ||||
|  -- @AUTHOR@  @BUILD_DATE@ | ||||
| EOF | ||||
|     BUILD_DEPENDS="debhelper, subversion, pkg-config, automake, libtool, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||
|     BUILD_DEPENDS="debhelper, ${VCSDEPENDS}, pkg-config, automake, libtool, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | libqt4-core | libqtcore4, qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||
|     to debian/control.in <<EOF | ||||
| Source: @PACKAGE_NAME@ | ||||
| Priority: extra | ||||
| @@ -913,7 +963,7 @@ else | ||||
| fi) | ||||
| Source0: %{name}-%{version}.tar.gz | ||||
| BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root | ||||
| BuildRequires: gnupg, subversion, automake, autoconf$( | ||||
| BuildRequires: gnupg, ${VCSDEPENDS}, automake, autoconf$( | ||||
|     if testtag AX_USE_DOXYGEN; then | ||||
|       echo -n ", doxygen"; | ||||
|     fi) | ||||
| @@ -1072,7 +1122,7 @@ if test -f makefile; then | ||||
| fi | ||||
|  | ||||
| #### Bootstrap Before Configure #### | ||||
| run --no-check svn2cl | ||||
| run --no-check vcs2cl | ||||
| run aclocal | ||||
| if testtag AX_USE_LIBTOOL; then run libtoolize --force; fi | ||||
| run automake -a | ||||
|   | ||||
| @@ -196,5 +196,5 @@ for command in "${commands[@]}"; do | ||||
|     ifthenelse "${command}" "ARG" | ||||
| done | ||||
| docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh | ||||
| docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true | ||||
| docker exec -u $(id -u) ${DOCKER_ID} test -d .svn && svn upgrade || true | ||||
| docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}" | ||||
|   | ||||
| @@ -75,7 +75,7 @@ cd ${oldpath} | ||||
|  | ||||
| # Step 4: if necessary, install qt_menu.nib | ||||
| if test -n "${QTDIR}"; then | ||||
|     MENU_NIB=$(find ${QTDIR} -name .svn -prune -o -name qt_menu.nib -print \ | ||||
|     MENU_NIB=$(find ${QTDIR} -name .svn -o -name .git -prune -o -name qt_menu.nib -print \ | ||||
|                | head -1) | ||||
|     if test -e "${MENU_NIB}"; then | ||||
|         rsync -r "${MENU_NIB}" ${1}/Contents/Resources/ | ||||
| @@ -100,4 +100,4 @@ else | ||||
|   </dict> | ||||
| </plist> | ||||
| EOF | ||||
| fi | ||||
| fi | ||||
|   | ||||
		Reference in New Issue
	
	Block a user