[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [sumo-dev] Strange version handling in SUMO 1.1.0 under ubuntu - patch for install
|
Dear developers,
attached is a patch, which works for me
under ubuntu and cmake.
The basic idea:
version.py gets a neutral function
getRevision, which is called by the library installers.
This new function tries to call
gitDescribe. If this fails, it calls parseConfigFile to figure out
the version from config.h.
Regards, Harald
Am 18.12.18 um 20:35 schrieb Jakob
Erdmann:
Dear Harald,
Your proposal reflects how things ought to be but we
broke it during our ongoing migration from autotools to
cmake.
best regards,
Jakob
Dear developers,
it is not possible to install the latest release 1.1.0
build from the sumo-all tar ball without errors.
The install process has three errors like this
- Up-to-date: /usr/local/share/sumo/tools/xml/xsd.py
fatal: Kein Git-Repository (oder irgendein
Elternverzeichnis bis zum Einhängepunkt /)
Stoppe bei Dateisystemgrenze
(GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt).
Traceback (most recent call last):
File
"/dosd/src/opensource/Sumo/sumo-1.1.0/tools/build/setup-sumolib.py",
line 21, in <module>
SUMO_VERSION =
version.gitDescribe()[1:-11].replace("_",
".").replace("+", ".")
File
"/dosd/src/opensource/Sumo/sumo-1.1.0/tools/build/version.py",
line 41, in gitDescribe
d = subprocess.check_output(command,
universal_newlines=True).strip()
File "/usr/lib/python2.7/subprocess.py", line 223, in
check_output
raise CalledProcessError(retcode, cmd,
output=output)
subprocess.CalledProcessError: Command '['git',
'describe', '--long', '--always', 'HEAD']' returned
non-zero exit status 128
It seems that the install routines calls version.py,
which in turn calls some git routines, which failed.
My understanding is:
If you create a tar-file for a release x.y.z, i would
assume that
the version string x.y.z is hardcoded in one or more
files or
the files to compute the version number are included in
this tar ball.
You should be able to compile and install from a tar-src
file without git or svn or whatever is currently the
version management system used.
The generated sumo executable has no version
harald@nyc> ../../bin/sumo --version
Eclipse SUMO Version UNKNOWN
Build features: Linux-4.18.0-12-generic x86_64 GNU
8.2.0 Release Proj GUI GDAL OSG GL2PS SWIG
Copyright (C) 2001-2018 German Aerospace Center (DLR)
and others; http://sumo.dlr.de
If I build sumo (version 1.0.1) the same way, it has a
version string:
harald@nyc> ../../bin/sumo --version
Eclipse SUMO Version 1.0.1
Build features: Linux-4.18.0-12-generic Proj GUI GDAL
OSG GL2PS SWIG
Copyright (C) 2001-2018 German Aerospace Center (DLR)
and others; http://sumo.dlr.de
My proposal is:
When creating a tar file from git, you should copy a file
containing the official version for this file (e.g. 1.1.0
or 1.1.0+xxxxxxxxx).
The script version.py reads this file, if it exists, and
sets the correct version.
Best regards
Harald
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-dev
_______________________________________________
sumo-dev mailing list
sumo-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/sumo-dev
|
Diff <tar> sumo-1.1.0/tools/build/version.py
*** /tmp/tardiff2_20749 2018-12-20 11:35:48.036185116 +0100
--- sumo-1.1.0/tools/build/version.py 2018-12-20 10:41:19.228794400 +0100
***************
*** 29,31 ****
--- 29,33 ----
import subprocess
+ import re
from os.path import dirname, exists, getmtime, join
+ from os import getcwd
***************
*** 35,36 ****
--- 37,57 ----
+ def parseConfig(configFile):
+ """ get the sumo version encoded in config.h """
+ for l in open(configFile, 'rb'):
+ m = re.search('#define VERSION_STRING "([^"]*)"', l)
+ if m:
+ d = m.group(1)
+ break
+ return d
+
+ def getRevision(commit="HEAD", gitDir=None):
+ """ get the version number either from git or from a config.h file
+ in the form x.y.z+nnn """
+ d = UNKNOWN_REVISION;
+ try:
+ d = gitDescribe(commit, gitDir)[1:-11]
+ except:
+ d = parseConfig('src/config.h')
+ #print(getcwd())
+ return d
Diff <tar> sumo-1.1.0/tools/build/setup-libsumo.py
*** /tmp/tardiff2_20749 2018-12-20 11:35:58.240371249 +0100
--- sumo-1.1.0/tools/build/setup-libsumo.py 2018-12-19 19:28:45.725329400 +0100
***************
*** 20,22 ****
! SUMO_VERSION = version.gitDescribe()[1:-11].replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
--- 20,22 ----
! SUMO_VERSION = version.getRevision().replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
Diff <tar> sumo-1.1.0/tools/build/setup-sumolib.py
*** /tmp/tardiff2_20749 2018-12-20 11:36:08.416551406 +0100
--- sumo-1.1.0/tools/build/setup-sumolib.py 2018-12-19 18:22:56.885958300 +0100
***************
*** 20,22 ****
! SUMO_VERSION = version.gitDescribe()[1:-11].replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
--- 20,22 ----
! SUMO_VERSION = version.getRevision().replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
Diff <tar> sumo-1.1.0/tools/build/setup-traci.py
*** /tmp/tardiff2_20749 2018-12-20 11:35:37.887994330 +0100
--- sumo-1.1.0/tools/build/setup-traci.py 2018-12-19 19:26:39.935909000 +0100
***************
*** 20,22 ****
! SUMO_VERSION = version.gitDescribe()[1:-11].replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
--- 20,22 ----
! SUMO_VERSION = version.getRevision().replace("_", ".").replace("+", ".")
package_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature