[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:45:17 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=7a23648

The following commit has been merged in the master branch:
commit 7a236484fc0fafe00a4fc03c3ceb63e44b76113f
Author: Robin Mills <robin at clanmills.com>
Date:   Wed May 6 17:17:24 2015 +0000

    msvc2005/configure.py: Work In Progress.
    1: writes _configure.vcproj
    2: omits  .hpp and .cpp files in the remove set
    3: adds EXV_MSVC_CONFIGURE to the Preprocessor Defines
---
 msvc2005/configure.py | 218 +++++++++++++++++++++++++-------------------------
 1 file changed, 107 insertions(+), 111 deletions(-)

diff --git a/msvc2005/configure.py b/msvc2005/configure.py
index 1d9191e..b4a807d 100755
--- a/msvc2005/configure.py
+++ b/msvc2005/configure.py
@@ -3,114 +3,71 @@
 import os
 import sys
 import optparse
+import xml.dom.minidom
+import datetime
+import platform
 
 global empty		   # set:  empty
 global strings		   # dict: Visual Studio Strings
 global uid			   # dict: UID of every projects
 global project		   # dict: dependency sets for every project
-global ignore		   # set: projects to ignore
+global ignore		   # set:  projects/directories to ignore
 
 empty=set([])
-ignore=set(['webready'])
+ignore=set(['webready','expat','expat201','expat210','zlib123','zlib125','zlib127','tools'])
 
 strings = {}
 strings['Begin']='''Microsoft Visual Studio Solution File, Format Version 9.00
 # Visual Studio 2005
-'''
+''' + '# Created by:%s at:%s using:%s on:%s in:%s
' % (sys.argv[0], datetime.datetime.now().time(), platform.node(), platform.platform(), os.path.abspath('.'))
 strings['End'] = ''
 
 strings['globalBegin'] = 'Global'
 strings['globalEnd'	 ] = 'EndGlobal'
 
 strings['platforms'] = '''
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		DebugDLL|Win32 = DebugDLL|Win32
-		DebugDLL|x64 = DebugDLL|x64
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-		ReleaseDLL|Win32 = ReleaseDLL|Win32
-		ReleaseDLL|x64 = ReleaseDLL|x64
-	EndGlobalSection
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		DebugDLL|Win32 = DebugDLL|Win32
+		DebugDLL|x64 = DebugDLL|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		ReleaseDLL|Win32 = ReleaseDLL|Win32
+		ReleaseDLL|x64 = ReleaseDLL|x64
+		EndGlobalSection
 '''
-strings['postSolutionBegin'] =	 '	  GlobalSection(ProjectConfigurationPlatforms) = postSolution
'
-strings['postSolutionEnd'  ] =	 '	  EndGlobalSection
'
+strings['postSolutionBegin'] =	'	GlobalSection(ProjectConfigurationPlatforms) = postSolution
'
+strings['postSolutionEnd'  ] =	'	EndGlobalSection
'
 
-strings['preSolution']		 = '''	  GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
+strings['preSolution']		 = '''	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
 '''
 
 ##
-# Remove feature (not implemented yet)
-# import sys
-# import xml.dom.minidom
-# global remove			 # dict: files to removed for an option (not implemented yet)
-# remove={}
-# remove['zlib'] = set([ 'pngimage.cpp' ])
-#
-# modify writeProject():
-#	# Filter every .vcproj	foo
oo.vcproj -> foo
oo_configure.vcproj
-#	xml	   = xml.dom.minidom.parse('foo
oo.vcproj')
-#	pretty = xml.toprettyxml()
-#	lines  = pretty.split('
')
-#	out	   = ""
-#	for line in lines:
-#		if not line.match( '<File RelativePath="..\..\src\pngimage.cpp"></File>' ):
-#			out = out + line.remove('
')
-#		if not line.match( 'PreprocessorDefinitions=.*"' ):
-#			line=replace('"$','EXV_MSVC_CONFIGURE"')
-#			out = out + line.remove('
')
-#
-#	open('foo
oo_configure.vcproj').write(out)
-##
-
-# for l in $(find . -name "*" -type d -maxdepth 1); do l=$(basename $l) ; if [ -e $l/$l.vcproj ]; then xmllint $l/$l.vcproj -pretty 1 | grep RootNamespace ; fi; done
+# build dict:uid - hunt the tree for .vcproj files
 uid = {}
-uid['addmoddel'				] = '83914D93-57B3-4718-8A50-662C17C4AE8F'
-uid['conntest'				] = 'E015DB8C-C463-4A6B-88EA-AFC671D84B5B'
-uid['convert-test'			] = 'D802FE1E-7868-4034-92B8-00865E1CABAB'
-uid['easyaccess-test'		] = '30E18D87-0147-4601-9ED2-4D5291645DB3'
-uid['exifcomment'			] = 'D291B6EF-986B-4222-ADA6-38A2EC2A56CE'
-uid['exifdata'				] = '1A091C40-C0F3-4405-B99E-CA60B9855D77'
-uid['exifdata-test'			] = 'FEF9C19E-F774-4D8A-991C-A566C1B2E8B6'
-uid['exifprint'				] = 'BFB98A96-7ABD-4F78-BA8B-2C2C257D74D8'
-uid['exifvalue'				] = 'B85BDC90-013A-4D6B-B774-F2D7E0067DA6'
-uid['exiv2'					] = '07293CAC-00DA-493E-90C9-5D010C2B1B53'
-uid['exiv2json'				] = '4171BC51-2FDD-4BF5-BB80-1D9B2ACB03B9'
-uid['geotag'				] = 'E3073076-4837-4DDB-89E5-5AC297C7481D'
-uid['httptest'				] = '4AC6B957-1506-4EDB-BF6A-CF7CCE86EC1F'
-uid['iotest'				] = '21F0CEB1-D850-4C29-88BF-1CE4171824E6'
-uid['iptceasy'				] = '6860BB9B-2053-46CD-9E2D-EEC199D68982'
-uid['iptcprint'				] = 'A7D22798-1262-4194-94A5-C636BCB68329'
-uid['iptctest'				] = 'AD41F87C-242B-4B61-B767-A9879F0D5C04'
-uid['key-test'				] = 'F11358FA-AA36-46E1-BA80-A17B8042BF9B'
-uid['largeiptc-test'		] = '953404C9-B20A-4D17-8262-9D9AD1CDC5C1'
-uid['libcurl'				] = 'F36F075A-880D-47BA-805F-C47850062121'
-uid['libeay32'				] = '2C117585-9BA4-4BFE-8335-E3E9D51D4DA7'
-uid['libexiv2'				] = '831EF580-92C8-4CA8-B0CE-3D906280A54D'
-uid['libexpat'				] = '6C4C06A3-6F8F-4067-AA4C-D5F41E1FFF9A'
-uid['libssh'				] = '729E4E11-3BBA-4306-B53C-8AEC45E70E10'
-uid['metacopy'				] = 'AD231915-942F-4083-9671-85E26A5798B0'
-uid['mmap-test'				] = '556CB4FC-33BB-4E67-AB0E-1865E67176A5'
-uid['openssl'				] = '3D77E4F8-02EE-491F-B01C-EE8012CABA18'
-uid['path-test'				] = 'E04D48BF-F529-4267-9311-908E94DF5A49'
-uid['prevtest'				] = 'FC7120EC-BEB2-4CC3-9B90-B022F560E584'
-uid['remotetest'			] = 'B25A3F96-68E8-4FD4-860E-2C33E539B892'
-uid['ssleay32'				] = '6ABBF8BA-0A23-4C5C-8AEB-1B2577625DFA'
-uid['stringto-test'			] = '9DCEE051-A07B-4C6B-B2BC-0814F0C323AA'
-uid['taglist'				] = 'DBD630FC-0DA9-41EB-925D-70654D01F6FA'
-uid['tiff-test'				] = 'C34B11A1-B707-46B2-8053-2FA236B369CF'
-uid['utiltest'				] = '495BC686-DF50-4250-B469-9C6B7B33A4B8'
-uid['werror-test'			] = '430C4512-CC73-4943-8CDF-71DEA573BD47'
-uid['write-test'			] = '98A9F59D-FDFE-4B27-88FE-2625F1E7597F'
-uid['write2-test'			] = 'E796088F-0EE6-4EC7-ABA0-8A18F54A4DD7'
-uid['xmpparse'				] = '1708EFC1-414E-4712-80A5-813A6F38814C'
-uid['xmpparser-test'		] = '85121FD0-01A1-49BA-B168-CC8D90F91A6F'
-uid['xmpsample'				] = '45CA5427-4260-4F4A-86B0-FB7AE233D76B'
-uid['xmpsdk'				] = '09877CF4-83B6-44FE-A2E2-629AA5C8093E'
-uid['zlib'					] = '8308C68D-E12B-4C71-96F4-7137F6BEB654'
+for d in os.listdir('.'):
+	if os.path.isdir(d) & (not d in ignore):
+		for root, dirs, files in os.walk(d):
+			for file in files:
+				ext = ".vcproj"
+				if file.endswith(ext) & (file.find('_configure') < 0):
+					path=os.path.join(root, file)
+					stub=file[0:-len(ext)]
+					for line in xml.dom.minidom.parse(path).toprettyxml().split('
'):
+						if ( line.find('RootNamespace') >= 0 ):
+							start  = 'ProjectGUID="{'
+							start  = line.find(start) + len(start)
+							uid[d] = line[start:line.find('}',start)-1]
+
+##
+# Remove feature
+remove={}
+for p in uid:
+	remove[p]=empty
+remove['zlib'] = set([ 'pngimage' ])
 
 ##
 # define project dependances
@@ -136,33 +93,73 @@ for p in uid:
 
 ##
 # {831EF580-92C8-4CA8-B0CE-3D906280A54D}.Debug|Win32.ActiveCfg = Debug|Win32
-def writeCompilationTable(s,uid):
+def compilationForProject(uid):
+	result = ''
 	for t in [ 'Debug' , 'DebugDLL' , 'Release' , 'ReleaseDLL' ]:
 		for p in [ 'Win32','x64']:
 			for z in ['ActiveCfg','Build.0']:
-				s.write(   '		{%s}.%s|%s.%s = %s|%s
' % (uid,t,p,z,t,p)	 );
+				result = result +  '		{%s}.%s|%s.%s = %s|%s
' % (uid,t,p,z,t,p)
+	return result;
+
+def compilationTable():
+	result = strings['postSolutionBegin']
+	for p in project:
+		if type(project[p]) == type(empty):
+			result = result + compilationForProject(uid[p])
+	return result + strings['postSolutionEnd']
 
 ##
-# Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexiv2", "libexiv2\libexiv2.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}"
+# Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libexiv2", "libexiv2\libexiv2_configure.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}"
 #	ProjectSection(ProjectDependencies) = postProject
 #		{09877CF4-83B6-44FE-A2E2-629AA5C8093E} = {09877CF4-83B6-44FE-A2E2-629AA5C8093E}
 #		 ...
 #	EndProjectSection
 # EndProject
-# '''
-def writeProject(s,project,projects):
-	UID='8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942' # grep 8BC9 exiv2.sln | head -1
-	s.write( 'Project("{%s}") = "%s", "%s\%s.vcproj", "{%s}"
' % (UID,project,project,project,uid[project]) )
-	count=0
-	out='	ProjectSection(ProjectDependencies) = postProject
'
+# Filter proj\proj.vcproj -> proj\proj_configure.vcproj
+# 1) Remove unwanted files (using remove[project] set)
+# 2) Add a preprocessor symbol to ask config.h to read exv_msvc_configure.h
+##
+def projectRecord(project,projects):
+#
+	print( 'Project %-18s uid = %s' % (project, uid[project]) )
+
+	UID    = '8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942' # grep 8BC9 exiv2.sln | head -1
+	vcnew  = "%s\%s_configure.vcproj" % (project,project)               # write in DOS notation for Visual Studio
+	result = 'Project("{%s}") = "%s", "%s", "{%s}"
' % (UID,project,vcnew,uid[project])
+
+	count  = 0
+	out    = '	ProjectSection(ProjectDependencies) = postProject
'
 	for p in projects:
 		if not p in ignore:
 			count=count+1
 			out = out + '		{%s} = {%s}
' % (uid[p],uid[p])
 	out = out + '	EndProjectSection
'
 	if count > 0:
-		s.write(out)
-	s.write('EndProject
')
+		result = result + out
+
+	result = result + 'EndProject
'
+
+	# Filter foo
oo.vcproj -> foo
oo_configure.vcproj and remove files we do not want
+	vcold    = os.path.join(project,("%s.vcproj"            % project) )  # path to old file
+	vcnew    = os.path.join(project,("%s_configure.vcproj"  % project) )  # path to new file
+	xmllines = xml.dom.minidom.parse(vcold).toprettyxml().split('
')
+	out	     = ""
+	for line in xmllines:
+		if line.find( 'File RelativePath=' ) >= 0:
+			for stub in remove[project]:
+				for stub in r:
+					if ( line.find(stub) > 0 ):
+						line =''
+		# add a preprocessor define to help config.h to read exv_conf_configure.h
+		ppold=      'PreprocessorDefinitions="'
+		ppnew=ppold+'EXV_MSVC_CONFIGURE;'
+		if line.find( ppold ) > 0:
+			line=line.replace(ppold,ppnew)
+		if len(line)>0:
+			out = out + line + '
'
+	open(vcnew,'w').write(out)
+
+	return result
 
 ##
 # not assert!
@@ -172,12 +169,15 @@ def cantHappen(condition,message):
 		exit(1)
 
 ##
+# if opt is true,  make remove set empty
 # if opt is false, remove lib from all projects
 def cleanProjectSet(opt,lib):
-	if not opt:
+	if opt:
+		remove[lib]=empty
+	else:
 		ignore.add(lib);
 		for p in project:
-			project[p].add(lib)
+			project[p].add(lib) # make sure we have something to remove!
 			project[p].remove(lib)
 
 def main():
@@ -230,6 +230,7 @@ def main():
 	for o, v in sorted(options.__dict__.items()):
 		if o != 'defolt':
 			print(fmt % (o, v))
+	print()
 
 	cleanProjectSet(options.curl   ,'libcurl' )
 	cleanProjectSet(options.openssl,'openssl' )
@@ -240,17 +241,16 @@ def main():
 	cleanProjectSet(options.zlib   ,'zlib'	  )
 
 	##
-	# open the strings file
+	# open the solution file
 	sln='exiv2-configure.sln'
-	s = open(sln,'w') # 'a+')
+	s = open(sln,'w')
 	s.write(strings['Begin'])
 
 	##
 	# write projects
-	print('Projects:',end=' ')
 	for p in sorted(project):
 		if not p in ignore:
-			print(p,end=' ')
+			# print(p,end=' ')
 			projects=project[p]
 
 			zap = False
@@ -260,25 +260,21 @@ def main():
 			if zap:
 				project[p]=0
 			else:
-				writeProject(s,p,projects)
-	print('')
+				s.write(projectRecord(p,projects))
 
 	##
 	# write compilation table
 	s.write(strings['globalBegin'])
 	s.write(strings['platforms'	 ])
-	s.write(strings['postSolutionBegin'	 ])
-	for p in project:
-		if type(project[p]) == type(empty):
-			writeCompilationTable(s,uid[p])
-	s.write(strings['postSolutionEnd'  ])
-	s.write(strings['preSolution'	   ])
-	s.write(strings['globalEnd'])
+	s.write(compilationTable())
+	s.write(strings['preSolution'])
+	s.write(strings['globalEnd'  ])
 
 	##
 	# finish
 	s.write(strings['End'])
 	s.close()
+
 	print()
 	print('MSVC 2005 Solution file created: ' + sln)
 	print()

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list