Files
macports-ports/math/gmtl/files/SConstruct-python.patch
Ryan Schmidt d10d2fa463 gmtl: Fix build issues
Add patches to fix build failures when using clang, when using the
latest version of scons, when scons is using python 3, and to prevent
the creation of the unwanted file gmtl-0.6.1.tar.gz and to install the
file gmtl.pc.

Add runtime dependencies on flagpoll and python which are used by
gmtl-config. flagpoll is currently incompatible with python 3 and uses
python27 so use the same python here to reduce the number of pythons
a user needs to install.

Specify absolute path to scons.

Specify prefix at build time so that build output does not give the
erroneous impression that files will be installed in /usr/local.

Specify empty directories for Boost and CppUnit at build time so that
any Boost or CppUnit that might be installed in /usr/local is not
inadvertently used.

No need to specify destroot.cmd or destroot.target; the defaults work.

Add modeline.

Modernize checksums.

Set platforms to any and set supported_archs to noarch because this port
doesn't install anything architecture- or OS-specific.

Add GitHub handle to maintainers line.

Install documentation files.

Indicate license. The software claims to be licensed LGPL-2.1+ but there
is also a license addendum that imposes additional restrictions and the
LGPL does not permit the imposition of additional restrictions.

Rewrite master_sites to avoid redirects.

Closes: https://trac.macports.org/ticket/57421
2023-03-28 02:21:07 -05:00

262 lines
9.3 KiB
Diff

Fixes for Python 3 compatibility.
https://sourceforge.net/p/ggt/bugs/29/
--- SConstruct.orig 2023-03-09 18:31:41.000000000 -0600
+++ SConstruct 2023-03-09 18:33:02.000000000 -0600
@@ -17,11 +17,6 @@
sys.path.append('tools/build')
from AutoDist import *
-# True and False were not defined prior to Python 2.2.1.
-if sys.version[:3] == '2.2' and sys.version[3] != '.':
- False = 0
- True = 1
-
enable_python = False
boost_version = '1.31'
have_cppunit = False
@@ -49,17 +44,17 @@
def GetPlatform():
"Determines what platform this build is being run on."
- if string.find(sys.platform, 'irix') != -1:
+ if sys.platform.find('irix') != -1:
return 'irix'
- elif string.find(sys.platform, 'linux') != -1:
+ elif sys.platform.find('linux') != -1:
return 'linux'
- elif string.find(sys.platform, 'freebsd') != -1:
+ elif sys.platform.find('freebsd') != -1:
return 'freebsd'
- elif string.find(sys.platform, 'darwin') != -1:
+ elif sys.platform.find('darwin') != -1:
return 'darwin'
- elif string.find(sys.platform, 'cygwin') != -1:
+ elif sys.platform.find('cygwin') != -1:
return 'cygwin'
- elif string.find(os.name, 'win32') != -1:
+ elif os.name.find('win32') != -1:
return 'win32'
else:
return sys.platform
@@ -218,21 +213,21 @@
def BuildWin32Environment():
global optimize, compiler_major_ver
- if ARGUMENTS.has_key("MSVS_VERSION"):
+ if "MSVS_VERSION" in ARGUMENTS:
# Python extension modules can only be built using Visual C++ 7.1 or
# 9.0.
msvs_ver = ARGUMENTS["MSVS_VERSION"]
if msvs_ver not in ("7.1", "9.0"):
- print "Cannot build Python extensions using MSVS version %s" % \
- msvs_ver
+ print("Cannot build Python extensions using MSVS version %s" % \
+ msvs_ver)
sys.exit(1)
python_ver = sys.version[:3]
if msvs_ver == "7.1" and python_ver not in ("2.4", "2.5"):
- print "Python 2.4 or 2.5 must be used with Visual C++ 7.1"
+ print("Python 2.4 or 2.5 must be used with Visual C++ 7.1")
sys.exit(1)
elif msvs_ver == "9.0" and python_ver not in ("2.6"):
- print "Python 2.6 must be used with Visual C++ 9.0"
+ print("Python 2.6 must be used with Visual C++ 9.0")
sys.exit(1)
env = Environment(MSVS_VERSION = msvs_ver)
@@ -242,7 +237,7 @@
else:
env = Environment(ENV = os.environ)
- print "Using MSVS version:", env["MSVS"]["VERSION"]
+ print("Using MSVS version:", env["MSVS"]["VERSION"])
compiler_major_ver = env["MSVS"]["VERSION"]
# We need exception handling support turned on for Boost.Python.
@@ -286,7 +281,7 @@
elif GetPlatform() == 'cygwin':
env = BuildCygwinEnvironment()
else:
- print 'Unsupported build environment: ' + GetPlatform(), "Trying default"
+ print('Unsupported build environment: ' + GetPlatform(), "Trying default")
env = Environment()
return env
@@ -302,7 +297,7 @@
exp = re.compile('^(\d+\.\d+(\.\d+)?)\D*$')
match = exp.search(value)
boost_version = match.group(1)
- print "Using Boost version", boost_version
+ print("Using Boost version", boost_version)
else:
assert False, "Invalid Boost key"
@@ -310,7 +305,7 @@
"Validate the boost option settings"
global enable_python, optimize, compiler_major_ver
req_boost_version = 103100
- print "checking for %s [%s]...\n" % (key, value)
+ print("checking for %s [%s]...\n" % (key, value))
if "BoostPythonDir" == key:
version_dir = 'boost-' + re.sub(r'\.', '_', boost_version)
@@ -318,16 +313,16 @@
potential_inc_paths = [pj('include', version_dir), "include"]
for pth in potential_inc_paths:
if os.path.isdir(pj(value,pth)):
- boost_inc_dir = pj(value,pth)
- break
- print " trying boost include dir: [%s]"%boost_inc_dir
+ boost_inc_dir = pj(value,pth)
+ break
+ print(" trying boost include dir: [%s]"%boost_inc_dir)
# Get the boost version.
boost_ver_filename = pj(boost_inc_dir, 'boost', 'version.hpp')
if not os.path.isfile(boost_ver_filename):
sys.stdout.write("%s not found.\n" % boost_ver_filename)
- enable_python = False
- return False
+ enable_python = False
+ return False
ver_file = file(boost_ver_filename)
@@ -337,7 +332,7 @@
sys.stdout.write("found version: %s\n" % ver_num)
if ver_num < req_boost_version:
- print " Boost version too old! Required version: %s" % req_boost_version
+ print(" Boost version too old! Required version: %s" % req_boost_version)
Exit()
return False
@@ -417,16 +412,16 @@
'%s%s.%s' % (shlib_prefix, n,
shlib_ext))
- print "Checking for '%s'" % boost_python_lib_name
+ print("Checking for '%s'" % boost_python_lib_name)
if os.path.isfile(boost_python_lib_name):
- print "Using '%s'" % boost_python_lib_name
+ print("Using '%s'" % boost_python_lib_name)
bpl_libdir = l
bpl_name = n
bpl_found = True
break
if not bpl_found:
- print "No Boost.Python library was found in", libdirs
+ print("No Boost.Python library was found in", libdirs)
Exit()
return False
@@ -475,7 +470,7 @@
python = WhereIs('python')
if not python:
enable_python = False
- print 'WARNING: Can\'t find python executable'
+ print('WARNING: Can\'t find python executable')
return False
py_cmd = python + ' -c \'import sys; print sys.prefix; print sys.version[:3]\''
@@ -496,7 +491,7 @@
# Version must match
if float(py_ver) < required_version:
- print 'WARNING: Python version ' + py_ver + ' != ' + str(required_version)
+ print('WARNING: Python version ' + py_ver + ' != ' + str(required_version))
enable_python = False
else:
# Build up the env information
@@ -570,11 +565,11 @@
}
my_file = env.SubstBuilder('file.out','file.in', submap=submap)
- env.AddPostAction (my_file, Chmod('$TARGET', 0644))
+ env.AddPostAction (my_file, Chmod('$TARGET', 0o644))
env.Depends(my_file, 'version.h')
"""
- targets = map(lambda x: str(x), target)
- sources = map(lambda x: str(x), source)
+ targets = [str(x) for x in target]
+ sources = [str(x) for x in source]
submap = env['submap']
@@ -585,12 +580,12 @@
# Go through the substitution dictionary and modify the contents read in
# from the source file
- for key, value in submap.items():
+ for key, value in list(submap.items()):
contents = contents.replace(key, value);
# Write out the target file with the new contents
open(targets[i], 'w').write(contents)
- os.chmod(targets[i], 0755)
+ os.chmod(targets[i], 0o755)
def generate_builder_str(target, source, env):
builderStr = "generating: ";
@@ -609,7 +604,7 @@
# Figure out what version of GMTL we're building
GMTL_VERSION = GetGMTLVersion()
-print 'Building GMTL Version: %i.%i.%i' % GMTL_VERSION
+print('Building GMTL Version: %i.%i.%i' % GMTL_VERSION)
help_text = "\n---- GMTL Build System ----\n"
@@ -620,7 +615,7 @@
Prefix(PREFIX)
Export('PREFIX')
Export('optimize')
-print "Install prefix: ", Prefix()
+print("Install prefix: ", Prefix())
baseEnv = BuildPlatformEnv()
baseEnv["BUILDERS"]["SubstBuilder"] = \
@@ -662,7 +657,7 @@
Export('installed_targets')
if not has_help_flag:
- print "Preparing build settings...\n"
+ print("Preparing build settings...\n")
# Create the GMTL package
pkg = Package('gmtl', '%i.%i.%i' % GMTL_VERSION)
@@ -693,10 +688,9 @@
# Find gmtl headers, set up install rule and add to package
gmtl_headers = []
- def get_headers(hdrs, dirname, flist):
- hdrs.extend( [pj(dirname,f) for f in flist if f.endswith('.h')])
- os.path.walk('gmtl',get_headers,gmtl_headers)
- #print "GMTL Headers:\n", gmtl_headers, "\n"
+ for dirname, _, flist in os.walk('gmtl'):
+ gmtl_headers.extend([pj(dirname, f) for f in flist if f.endswith('.h')])
+ #print("GMTL Headers:\n", gmtl_headers, "\n")
# --- Setup installation paths --- #
base_inst_paths = {}
@@ -715,7 +709,7 @@
base_inst_paths['include'] = pj(base_inst_paths['base'], 'include',
include_version)
- print "using prefix:", base_inst_paths['base']
+ print("using prefix:", base_inst_paths['base'])
for h in gmtl_headers:
installed_targets += baseEnv.InstallAs(pj(PREFIX, include_dir, h), h)
@@ -762,7 +756,7 @@
fpc_filename = "-".join(name_parts) + ".fpc"
gmtl_fpc = env.SubstBuilder(pj(base_inst_paths['flagpoll'], fpc_filename),
'gmtl.fpc.in', submap = submap)
- env.AddPostAction(gmtl_fpc, Chmod('$TARGET', 0644))
+ env.AddPostAction(gmtl_fpc, Chmod('$TARGET', 0o644))
env.Depends(gmtl_fpc, 'gmtl/Version.h')
gmtl_pc = env.SubstBuilder(pj(base_inst_paths['pkgconfig'], "gmtl.pc"),
'gmtl.fpc.in', submap = submap)