Files
2021-02-28 17:27:53 -05:00

170 lines
6.1 KiB
Tcl

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup python 1.0
name py-sip
categories-append devel
maintainers {michaelld @michaelld} openmaintainer
license {GPL-2 GPL-3 PSF}
platforms macosx
description create Python bindings for C and C++ libraries
long_description \
SIP is a tool that makes it very easy to create \
Python bindings for C and C++ libraries. \
It was originally developed to create PyQt, \
the Python bindings for the Qt toolkit, \
but can be used to create bindings for any \
C or C++ library.
homepage https://www.riverbankcomputing.com/software/sip/intro
version 4.19.25
# bumped the epoch to revert from 4.19.10 to 4.19.8. The former caused
# configuration errors in py*-qscitilla-qt5 and py*-pyqt4, and
# possibly others. See also: https://trac.macports.org/ticket/56746 .
epoch 1
# from siplib/sip.h[.in]:
#
# Define the current API version number. SIP must handle modules with
# the same major number and with the same or earlier minor number.
# Whenever data structure elements are added they must be appended and
# the minor number incremented. Whenever data structure elements are
# removed or the order changed then the major number must be
# incremented and the minor number set to 0.
#
# SIP 4.19.[19-25] provides SIP API 12.7
# SIP 4.19.[14-18] provides SIP API 12.6
# SIP 4.19.[12-13] provides SIP API 12.5
# SIP 4.19.[9-11] do not work with MacPorts
# -> see the "epoch" note above for more info
# SIP 4.19.8 provides SIP API 12.4
# SIP 4.19.[4-7] provides SIP API 12.3
# SIP 4.19.3 provides SIP API 12.2
# SIP 4.19.[1-2] provides SIP API 12.1
# SIP 4.19.0 provides SIP API 12.0
# SIP 4.18.[0-1] provides SIP API 11.3
# SIP 4.17.0 provides SIP API 11.2
# SIP 4.16.[8-9] provides SIP API 11.2
# -> BUT: the change is to the private API, not the public one.
# -> SO: no rev-bumps are be needed.
# SIP 4.16.[1-7] provides SIP API 11.1.
# SIP 4.15.5 provided SIP API 11.0.
python.versions 27 35 36 37 38 39
python.default_version 27
if {${name} ne ${subport}} {
master_sites https://www.riverbankcomputing.com/static/Downloads/sip/${version}
set branch [join [lrange [split ${version} .] 0 1] .]
set patch [lindex [split ${version} .] 2]
if {${patch} == 0} {
distname sip-${branch}
} else {
distname sip-${version}
}
checksums rmd160 9709eda79d7e0a73eca82e25cbbfd0af6da074c8 \
sha256 b39d93e937647807bac23579edbff25fe46d16213f708370072574ab1f1b4211 \
size 1056384
revision 0
patchfiles patch-siputils.py.diff \
patch-specs_macx-g++.diff \
patch-configure.py.diff \
patch-add_ppc64.diff
use_configure yes
pre-configure {
# Ensure correct compilers are used
reinplace "s|@CC@|${configure.cc}|" \
${worksrcpath}/specs/macx-g++
reinplace "s|@CXX@|${configure.cxx}|" \
${worksrcpath}/specs/macx-g++
}
configure.cmd ${python.bin} configure.py
configure.pre_args -b ${python.prefix}/bin \
-d ${python.pkgd} \
-e ${python.include} \
-v ${python.prefix}/share/sip \
-p macx-g++
# always add some arch flags, since the user might have overridden
# the default arch build (e.g., ticket #44086).
python.add_archflags no
if {![info exists universal_possible]} {
set universal_possible [expr {${os.universal_supported} && [llength ${configure.universal_archs}] >= 2}]
}
if {${universal_possible} && [variant_isset universal]} {
foreach arch ${configure.universal_archs} {
configure.args-append "--arch=${arch}"
}
configure.universal_args
configure.post_args LFLAGS="-F${frameworks_dir} -L${prefix}/lib \
${configure.universal_ldflags}"
configure.post_args-append CFLAGS="${configure.universal_cflags}"
configure.post_args-append CXXFLAGS="${configure.universal_cxxflags}"
} else {
configure.args-append "--arch=${configure.build_arch}"
configure.post_args LFLAGS="-F${frameworks_dir} -L${prefix}/lib \
${configure.ld_archflags}"
configure.post_args-append CFLAGS="${configure.cc_archflags}"
configure.post_args-append CXXFLAGS="${configure.cxx_archflags}"
}
if {${configure.sdkroot} eq ""} {
set configure.sdkroot "/"
}
configure.args-append --sdk=${configure.sdkroot}
build.cmd make
build.target all
test.run yes
test.cmd cd siplib && ${python.bin} -c 'import sip'
destroot.cmd make
destroot.destdir DESTDIR=${destroot}
post-destroot {
xinstall -m 755 -d ${destroot}${prefix}/share/doc
file copy ${worksrcpath}/doc ${destroot}${prefix}/share/doc/${subport}
xinstall -m 644 -W ${worksrcpath} LICENSE LICENSE-GPL2 LICENSE-GPL3 NEWS README \
${destroot}${prefix}/share/doc/${subport}
system "${python.bin} ${python.libdir}/compileall.py ${destroot}${prefix}"
system "${python.bin} -O ${python.libdir}/compileall.py ${destroot}${prefix}"
}
notes "${subport} is available under a PSF license with one addition: \n
4. Licensee may not use SIP to generate Python bindings for any C or
C++ library for which bindings are already provided by Riverbank. \n
GPL-2 or GPL-3 licenses are also available. For details see
${prefix}/share/doc/${subport}/LICENSE \[-GPL2 -GPL3\]\n\n"
}
if {[string last devel ${subport}] != -1} {
livecheck.type none
} else {
livecheck.type regex
livecheck.url https://www.riverbankcomputing.com/software/sip/download
livecheck.regex sip-(4(\\.\\d+)+)${extract.suffix}
}