[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:18 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=2c34a35
The following commit has been merged in the master branch:
commit 2c34a3511c2672ae5012ea6131cfd899410ae2ec
Author: Robin Mills <robin at clanmills.com>
Date: Thu May 7 19:14:25 2015 +0000
msvc2005/configure.py Work in progress. Feature complete. Has build with/without webready. Creates exv_msvc_configure.h
---
msvc2005/configure.py | 228 ++++++++++++++++++++++++++++++++++----------------
1 file changed, 155 insertions(+), 73 deletions(-)
diff --git a/msvc2005/configure.py b/msvc2005/configure.py
index 51a8400..672c082 100755
--- a/msvc2005/configure.py
+++ b/msvc2005/configure.py
@@ -8,18 +8,28 @@ import datetime
import platform
import uuid
-global empty # set: empty
global uid # dict: UID of every projects
global project # dict: dependency sets for every project
global strings # dict: Visual Studio Strings
global ignore # set: projects/directories to ignore
-
-empty=set([])
-ignore=set(['webready','expat','expat201','expat210','zlib123','zlib125','zlib127','tools','exiv2lib'])
+global filters # set: options/files to remove when option disabled
+global filter # set: patterns of filenames to be removed from the build
+
+ignore = set(['expat' , 'expat201' , 'expat210' , 'zlib123' , 'zlib125', 'zlib127', 'tools', 'exiv2lib'])
+always = set(['exiv2' , 'exiv2json' , 'addmoddel' , 'exifprint' , 'metacopy' ])
+apps = set(['exifdata' , 'exifvalue' , 'geotag' , 'xmpsample' ])
+tests = set(['exifdata-test', 'conntest' , 'convert-test', 'easyaccess-test', 'exifcomment' , 'httptest'
+ , 'iotest' , 'iptceasy' , 'iptcprint' , 'iptctest' , 'key-test' , 'largeiptc-test'
+ , 'mmap-test' , 'path-test' , 'prevtest' , 'remotetest' , 'stringto-test' , 'taglist'
+ , 'tiff-test' , 'utiltest' , 'werror-test' , 'write-test' , 'write2-test' , 'xmpparse'
+ , 'xmpparser-test'
+ ])
+
+def empty():
+ return set([])
##
# build dict:uid - hunt the tree for .vcproj files
-# we should read the .vcproj and build the dependency set
uid = {}
for d in os.listdir('.'):
if os.path.isdir(d) & (not d in ignore):
@@ -31,32 +41,43 @@ for d in os.listdir('.'):
##
# define project dependances
+# TODO: read exiv-webready.sln to build project/dependency set
project = {}
# no dependancy
-for p in ['libexpat','zlib']:
- project[p]=empty
+for p in ['libexpat','zlib','openssl']:
+ project[p]=empty()
##
# dependancies
-project['libcurl' ] = set(['webready' ])
-project['libssh' ] = set(['webready' ])
-project['openssl' ] = set(['webready' ])
-project['xmpparser-test' ] = set(['libexiv2','xmpsdk' ])
-project['xmpsample' ] = set(['libexiv2','xmpsdk' ])
-project['xmpsdk' ] = set(['libexpat' ])
-project['libexiv2' ] = set(['zlib' ,'libexpat','xmpsdk'])
-project['geotag' ] = set(['libexiv2','libexpat' ])
+project['xmpparser-test' ] = set(['libexiv2','xmpsdk' ])
+project['xmpsample' ] = set(['libexiv2','xmpsdk' ])
+project['xmpsdk' ] = set([ 'libexpat' ])
+project['geotag' ] = set([ 'libexpat','libexiv2'])
+project['libexiv2' ] = set([ 'libexpat','xmpsdk' ,'zlib','libcurl','libeay32','ssleay32','libssh','openssl'])
+project['libcurl' ] = set(['libeay32','ssleay32','libssh' ])
+project['libssh' ] = set(['libeay32','ssleay32','openssl' ])
+project['libeay32' ] = set(['openssl' ])
+project['ssleay32' ] = set(['openssl' ])
+
# all others depend on libexiv2
for p in uid:
if not p in project:
project[p]=set(['libexiv2'])
##
-# Remove feature
-remove={}
-for p in uid:
- remove[p]=empty
-remove['zlib'] = set([ 'pngimage' ])
+# projects if not --with--feature
+without={}
+without['webready' ] = set(['libcurl','libeay32','ssleay32','libssh','openssl'])
+without['xmp' ] = set(['xmpsdk'])
+without['zlib' ] = set(['zlib'])
+
+##
+# filters feature
+filters={}
+filters['zlib' ] = set(['png' ])
+filters['video' ] = set(['video'])
+filters['xmp' ] = set(['xmp' ])
+filters['webready'] = set(['xmp' ])
##
# MSVC strings
@@ -106,7 +127,7 @@ def compilationForProject(uid):
def compilationTable():
result = strings['postSolutionBegin']
for p in project:
- if type(project[p]) == type(empty):
+ if type(project[p]) == type(empty()):
result = result + compilationForProject(uid[p])
return result + strings['postSolutionEnd']
@@ -119,7 +140,7 @@ def compilationTable():
# EndProject
##
def projectRecord(project,projects):
- print( 'Project %-18s uid = %s' % (project, uid[project]) )
+ print( 'Project %-18s %s' % ((project), '{ }' if len(projects) == 0 else projects))
UID = strings['UID']
vcnew = "%s\%s_configure.vcproj" % (project,project) # write in DOS notation for Visual Studio
@@ -141,30 +162,34 @@ def projectRecord(project,projects):
##
# Filter proj\proj.vcproj -> proj\proj_configure.vcproj
def writeVCproj(project,projects):
+ filt = empty() # if project in nofilter else filters
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:
+
# 1) Update the project GUID
projectGUID='ProjectGUID="{'
if line.find( projectGUID) > 0:
start = line.find(projectGUID) + len(projectGUID)
olduid=line[start:line.find('}',start)-1]
line=line.replace(olduid,uid[project]);
+
# 2) Remove unwanted files (using remove[project] set)
if line.find( 'File RelativePath=' ) >= 0:
- for r in remove[project]:
- for stub in r:
- if ( line.find(stub) > 0 ):
- line =''
+ for pattern in filt:
+ if ( line.find(pattern) > 0 ):
+ line =''
+
# 3) Add a preprocessor symbol to ask config.h to read exv_msvc_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 + '
'
+ out = out + line
open(vcnew,'w').write(out)
##
@@ -174,41 +199,74 @@ def cantHappen(condition,message):
print(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 opt:
- remove[lib]=empty
- else:
- ignore.add(lib);
- for p in project:
- project[p].add(lib) # make sure we have something to remove!
- project[p].remove(lib)
+def headerFilter(path,options):
+ result= ''
+ lines = open(path).readlines();
+ truth = {}
+ truth['USE_CURL' ] = options.curl
+ truth['USE_SSH' ] = options.ssh
+ truth['ENABLE_WEBREADY' ] = options.webready
+ truth['ENABLE_VIDEO' ] = options.video
+ truth['HAVE_XMP_TOOLKIT'] = options.xmp
+ truth['HAVE_ZLIB' ] = options.zlib
+ truth['HAVE_EXPAT' ] = options.expat
+ for line in lines:
+ start=line.find('EXV_')
+ if (start > 0) & line.find('define')>0:
+ key = line[start+4:line.find(' ',start+4)]
+ if key in truth:
+ line = '#define EXV_%s %d
' % (key, 1 if truth[key] else 0)
+ # print('key = %s' % key)
+ result += line
+ return result
+
+def enableWebready(option, opt_str, value, parser):
+ parser.values.webready = True
+ parser.values.openssl = True
+ parser.values.ssh = True
+ parser.values.curl = True
+
+def disableWebready(option, opt_str, value, parser):
+ parser.values.webready = False
+ parser.values.openssl = False
+ parser.values.ssh = False
+ parser.values.curl = False
def main():
+ global uid
+ global project
+ global strings
+ global ignore
+ global filters
+ global filter
+
##
# set up argument parser
usage = "usage: %prog [options]+"
parser = optparse.OptionParser(usage)
parser = optparse.OptionParser()
- parser.add_option('-W', '--enable-webready' , action='store_true' , dest='webready',help='enable webready' ,default=False)
- parser.add_option('-w', '--disable-webready', action='store_false', dest='webready',help='disable webready')
- parser.add_option('-V', '--enable-video' , action='store_true' , dest='video' ,help='enable video' ,default=False)
- parser.add_option('-v', '--disable-video' , action='store_false', dest='video' ,help='disable video' )
- parser.add_option('-X', '--enable-xmp' , action='store_true' , dest='xmp' ,help='enable xmp' ,default=True)
- parser.add_option('-x', '--disable-xmp' , action='store_false', dest='xmp' ,help='disable xmp' )
- parser.add_option('-Z', '--enable-zlib' , action='store_true' , dest='zlib' ,help='enable zlib/png' ,default=True)
- parser.add_option('-z', '--disable-zlib' , action='store_false', dest='zlib' ,help='disable zlib/png')
- parser.add_option('-C', '--enable-curl' , action='store_true' , dest='curl' ,help='enable curl' ,default=False)
- parser.add_option('-c', '--disable-curl' , action='store_false', dest='curl' ,help='disable curl' )
- parser.add_option('-S', '--enable-ssh' , action='store_true' , dest='ssh' ,help='enable ssh' ,default=False)
- parser.add_option('-s', '--disable-ssh' , action='store_false', dest='ssh' ,help='disable ssh' )
- parser.add_option('-O', '--enable-openssl' , action='store_true' , dest='openssl' ,help='enable openssl' ,default=False)
- parser.add_option('-o', '--disable-openssl' , action='store_false', dest='openssl' ,help='disable openssl' )
- parser.add_option('-E', '--enable-expat' , action='store_true' , dest='expat' ,help='enable expat' ,default=True)
- parser.add_option('-e', '--disable-expat' , action='store_false', dest='expat' ,help='disable expat' )
- parser.add_option('-d', '--default' , action='store_true' , dest='defolt' ,help='default' ,default=False)
+
+ parser.add_option('-C', '--with-curl' , action='store_true' , dest='curl' ,help='enable curl' ,default=False)
+ parser.add_option('-c', '--without-curl' , action='store_false', dest='curl' ,help='disable curl' )
+ parser.add_option('-A', '--with-app' , action='store_true' , dest='app' ,help='build sample apps' ,default=False)
+ parser.add_option('-a', '--without-app' , action='store_false', dest='app' ,help='do not build apps' )
+ parser.add_option('-E', '--with-expat' , action='store_true' , dest='expat' ,help='enable expat' ,default=True)
+ parser.add_option('-e', '--without-expat' , action='store_false', dest='expat' ,help='disable expat' )
+ parser.add_option('-O', '--with-openssl' , action='store_true' , dest='openssl' ,help='enable openssl' ,default=False)
+ parser.add_option('-o', '--without-openssl' , action='store_false', dest='openssl' ,help='disable openssl' )
+ parser.add_option('-S', '--with-ssh' , action='store_true' , dest='ssh' ,help='enable ssh' ,default=False)
+ parser.add_option('-s', '--without-ssh' , action='store_false', dest='ssh' ,help='disable ssh' )
+ parser.add_option('-T', '--with-test' , action='store_true' , dest='test' ,help='build test programs' ,default=True)
+ parser.add_option('-t', '--without-test' , action='store_false', dest='test' ,help='do not build test progs' )
+ parser.add_option('-W', '--enable-webready' , action='callback' , dest='webready',help='enable webready (false)' ,callback=enableWebready,default=False)
+ parser.add_option('-w', '--disable-webready', action='callback' , dest='webready',help='enable webready' ,callback=disableWebready)
+ parser.add_option('-V', '--enable-video' , action='store_true' , dest='video' ,help='enable video (false)' ,default=False)
+ parser.add_option('-v', '--disable-video' , action='store_false', dest='video' ,help='disable video' )
+ parser.add_option('-X', '--enable-xmp' , action='store_true' , dest='xmp' ,help='enable xmp (true)' ,default=True)
+ parser.add_option('-x', '--disable-xmp' , action='store_false', dest='xmp' ,help='disable xmp' )
+ parser.add_option('-Z', '--with-zlib' , action='store_true' , dest='zlib' ,help='enable zlib/png' ,default=True)
+ parser.add_option('-z', '--without-zlib' , action='store_false', dest='zlib' ,help='disable zlib/png' )
+ parser.add_option('-d', '--default' , action='store_true' , dest='defolt' ,help='default' ,default=False)
##
# no arguments, report and quit
@@ -224,6 +282,11 @@ def main():
cantHappen(options.ssh & (not options.webready),'cannot use libssh without webready');
cantHappen(options.xmp & (not options.expat ),'cannot use xmp without expat' );
+ if not options.app:
+ ignore = ignore | apps;
+ if not options.test:
+ ignore = ignore | tests;
+
##
# print options
fmt='%-20s -> %s'
@@ -234,13 +297,19 @@ def main():
print(fmt % (o, v))
print()
- cleanProjectSet(options.curl ,'libcurl' )
- cleanProjectSet(options.openssl,'openssl' )
- cleanProjectSet(options.openssl,'libeay32')
- cleanProjectSet(options.openssl,'ssleay32')
- cleanProjectSet(options.xmp ,'xmpsdk' )
- cleanProjectSet(options.expat ,'libexpat')
- cleanProjectSet(options.zlib ,'zlib' )
+ if options.video:
+ filters['video']=empty()
+ if options.webready:
+ filters['webready']=empty()
+ if options.xmp:
+ filters['xmp']=empty()
+ if options.zlib:
+ filters['zlib']=empty()
+
+ filter=set([])
+ for opt in filters:
+ for pattern in opt:
+ filter.add(pattern)
##
# write solution file
@@ -248,18 +317,24 @@ def main():
s = open(sln,'w')
s.write(strings['Begin'])
- # write projects
+ # find build candidates
+ build=empty()
for p in sorted(project):
- projects=project[p]
-
- zap = False
- zap = zap | ((not options.webready) & ('webready' in projects))
- zap = zap | ((not options.zlib ) & ('zlib' in projects))
- zap = zap | ((not options.xmp ) & ('xmp' in projects))
- if zap:
- project.pop(p)
- else:
- s.write(projectRecord(p,projects))
+ skip = p in ignore
+ skip = skip | ((p == 'libssh' ) & ( not options.ssh ))
+ skip = skip | ((p == 'libcurl' ) & ( not options.curl ))
+ skip = skip | ((p == 'openssl' ) & ( not options.openssl))
+ skip = skip | ((p == 'libeay32' ) & ( not options.openssl))
+ skip = skip | ((p == 'ssleay32' ) & ( not options.openssl))
+ skip = skip | ((p == 'xmpsdk' ) & ( not options.xmp ))
+ skip = skip | ((p == 'libexpat' ) & ( not options.expat ))
+ skip = skip | ((p == 'zlib' ) & ( not options.zlib ))
+ if not skip:
+ build.add(p)
+
+ # build the projects that intersect with the build!
+ for p in sorted(build):
+ s.write(projectRecord(p,build & project[p]))
# write compilation table
s.write(strings['globalBegin'])
@@ -277,6 +352,13 @@ def main():
for p in sorted(project):
writeVCproj(p,project[p])
+ ##
+ # write exv_msvc_configure.h by filtering exv_msvc.h
+ include = os.path.join('..','include','exiv2')
+ oldh = os.path.join(include,'exv_msvc.h');
+ newh = os.path.join(include,'exv_msvc_config.h');
+ open(newh,'w').write(headerFilter(oldh,options))
+
print()
print('MSVC 2005 Solution file created: ' + sln)
print()
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list