mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
- Add tk 9 subports and rename existing tk subports to tk8-*. - Don't use muniversal in tk. - Update dependencies on the above in other ports and rev bump. - Make tcl a shim port that depends on tcl8. - Update tcl8 and tk8 to 8.6.18. Closes: https://trac.macports.org/ticket/71415
392 lines
16 KiB
Tcl
392 lines
16 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 compilers 1.0
|
||
PortGroup legacysupport 1.1
|
||
|
||
name R
|
||
# Remember to set revision to 0 when bumping version
|
||
# And also to update Rversion in R PortGroup
|
||
version 4.6.0
|
||
revision 1
|
||
|
||
set branch [join [lrange [split ${version} .] 0 1] .]
|
||
categories math science
|
||
maintainers {me.com:kjell.konis @kjellpk} \
|
||
{i0ntempest @i0ntempest} \
|
||
openmaintainer
|
||
license {GPL-2 GPL-3}
|
||
|
||
description \
|
||
R is GNU S - an interpreted language for statistical computing
|
||
|
||
long_description \
|
||
R is a language and environment for statistical computing and graphics. \
|
||
R provides a wide variety of statistical (linear and nonlinear modeling, \
|
||
classical statistical tests, time-series analysis, classification, \
|
||
clustering, ...) and graphical techniques, and is highly extensible.
|
||
|
||
homepage https://www.r-project.org
|
||
|
||
master_sites https://cran.rstudio.com/src/base/R-4/ \
|
||
https://cran.r-project.org/src/base/R-4/
|
||
|
||
checksums rmd160 922f30c0737c5fca0c2b1baf363c8849427fd10e \
|
||
sha256 b8dc9b4543660c7b596b87938df532394350360976527d344228ee0ed12e45ec \
|
||
size 40916004
|
||
|
||
# Avoid Apple clangs:
|
||
compiler.blacklist-append {clang}
|
||
# Blacklist macports-clang-23+. See discussion: https://trac.macports.org/ticket/67144
|
||
# for rationale. The decision when to migrate to a new compiler
|
||
# is then in the hands of the R maintainers and will not change
|
||
# from the current defaults when these get bumped centrally.
|
||
# NOTE : Keep this setting in sync with the one in the R port.
|
||
compiler.blacklist-append {macports-clang-2[3-9]}
|
||
# Similarly, for gcc select the gcc14 variant of the compilers PG.
|
||
# This setting should also be kept in sync with that in the R Port.
|
||
# Updates should be coordinated with the R maintainers.
|
||
compiler.blacklist-append {macports-gcc-1[6-9]}
|
||
# NOTE: upon the update to gcc14, please update the blacklist accordingly,
|
||
# like it is done for clangs. We would prefer using the same version of gcc and gfortran.
|
||
default_variants-append +gcc15
|
||
|
||
# When switching to gcc14, make sure to add this flag when gcc is used
|
||
# as the primary compiler: -Wno-error=incompatible-pointer-types
|
||
# devQuartz.c:3049:35: error: passing argument 2 of 'CGContextSetFont'
|
||
# from incompatible pointer type [-Wincompatible-pointer-types]
|
||
|
||
# R bakes in the compiler, so if it is built with ccache,
|
||
# then it will require ccache to build R packages.
|
||
# Disable it to avoid an unnecessary dependency.
|
||
configure.ccache no
|
||
|
||
compilers.choose fc f77
|
||
compilers.setup require_fortran
|
||
compiler.cxx_standard 2014
|
||
|
||
# https://trac.macports.org/ticket/69849
|
||
# https://bugs.r-project.org/show_bug.cgi?id=18713
|
||
if {${configure.build_arch} in [list i386 ppc]} {
|
||
patchfiles-append patch-fix-memsize.diff
|
||
}
|
||
|
||
# https://trac.macports.org/ticket/67298
|
||
# https://bugs.r-project.org/show_bug.cgi?id=18520
|
||
# See related: https://skia.googlesource.com/skia/+/3490263287e9432119c501884e45840de4d986bc
|
||
if {${os.platform} eq "darwin" && ${os.major} < 11} {
|
||
patchfiles-append patch-fix-10.6.diff
|
||
}
|
||
|
||
# We wanna ensure the same compiler is used for R itself and R packages.
|
||
# See R PortGroup.
|
||
if {[string match macports-clang-* ${configure.compiler}]} {
|
||
set clang_v [
|
||
string range ${configure.compiler} [
|
||
string length macports-clang-
|
||
] end
|
||
]
|
||
depends_build-append port:clang-${clang_v}
|
||
depends_run-append port:clang-${clang_v}
|
||
} elseif {[string match macports-gcc-* ${configure.compiler}]} {
|
||
set gcc_v [
|
||
string range ${configure.compiler} [
|
||
string length macports-gcc-
|
||
] end
|
||
]
|
||
depends_build-append port:gcc${gcc_v}
|
||
depends_run-append port:gcc${gcc_v}
|
||
}
|
||
|
||
depends_build-append path:bin/pkg-config:pkgconfig
|
||
|
||
depends_lib-append port:bzip2 \
|
||
port:curl \
|
||
port:gnutar \
|
||
port:gzip \
|
||
path:lib/pkgconfig/icu-uc.pc:icu \
|
||
port:ld64 \
|
||
port:less \
|
||
port:libiconv \
|
||
path:include/turbojpeg.h:libjpeg-turbo \
|
||
port:libpng \
|
||
port:pcre \
|
||
port:pcre2 \
|
||
port:readline \
|
||
port:texinfo \
|
||
port:tiff \
|
||
port:unzip \
|
||
port:xz \
|
||
port:zip \
|
||
port:zlib
|
||
|
||
legacysupport.newest_darwin_requires_legacy 10
|
||
|
||
# avoid finding ${prefix}/bin/xdg-open first
|
||
configure.env-append R_PDFVIEWER=/usr/bin/open \
|
||
R_BROWSER=/usr/bin/open
|
||
|
||
universal_variant no
|
||
|
||
set resources ${frameworks_dir}/R.framework/Versions/${branch}/Resources
|
||
|
||
post-patch {
|
||
reinplace "s|R_HOME|\"${resources}\"|" "${worksrcpath}/src/unix/Rscript.c"
|
||
|
||
# Check to see if this is fixed post 3.3.0
|
||
reinplace "s|<libintl.h>|\"libintl.h\"|" "${worksrcpath}/src/include/Defn.h"
|
||
|
||
if {${os.platform} eq "darwin" && ${os.major} < 17} {
|
||
reinplace "s|/var/db/timezone/zoneinfo|/usr/share/zoneinfo|g" \
|
||
"${worksrcpath}/src/extra/tzone/localtime.c" \
|
||
"${worksrcpath}/src/library/base/man/timezones.Rd" \
|
||
"${worksrcpath}/src/library/base/R/datetime.R"
|
||
}
|
||
}
|
||
|
||
# Note: if Aqua support is desired, gcc may not be used for the C compiler
|
||
# on some OS X versions due to lack of support for Apple blocks extension:
|
||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78352
|
||
# However, it works fine on < 10.7. See also: https://trac.macports.org/ticket/66453
|
||
|
||
configure.pre_args --prefix=${frameworks_dir}
|
||
|
||
configure.args --disable-java \
|
||
--disable-openmp \
|
||
--enable-BLAS-shlib \
|
||
--enable-R-framework \
|
||
--enable-R-shlib \
|
||
--enable-memory-profiling \
|
||
--with-included-gettext \
|
||
--without-aqua \
|
||
--without-cairo \
|
||
--without-recommended-packages \
|
||
--without-tcltk \
|
||
--without-x
|
||
|
||
# disable tex/latex the hard way as there's no configure args for these
|
||
configure.env-append ac_cv_path_TEX= \
|
||
ac_cv_path_PDFTEX= \
|
||
ac_cv_path_PDFLATEX=
|
||
|
||
platform darwin 13 {
|
||
configure.cflags-append -flax-vector-conversions
|
||
}
|
||
|
||
variant accelerate conflicts atlas builtin_lapack openblas description {build using the BLAS and Lapack in Apple's Accelerate framework} {
|
||
if { ([vercmp ${xcodeversion} >= 14.3] || \
|
||
[vercmp ${xcodecltversion} >= 14.3]) && \
|
||
(${os.platform} eq "darwin" && ${os.version} >= 22.3) } {
|
||
configure.args-append --with-newAccelerate=lapack
|
||
} else {
|
||
configure.args-append --with-blas="-framework Accelerate" --with-lapack
|
||
}
|
||
}
|
||
|
||
variant atlas conflicts accelerate builtin_lapack openblas description {build using the BLAS in the atlas port} {
|
||
depends_lib-append port:atlas
|
||
configure.args-append --with-blas="-L${prefix}/lib -lptf77blas -latlas"
|
||
#See A.3.2 in R Installation and Administration for why atlas LAPACK not used
|
||
}
|
||
|
||
variant builtin_lapack conflicts accelerate atlas openblas description {build using reference BLAS and Lapack} {
|
||
configure.args-append --without-blas --without-lapack
|
||
}
|
||
|
||
variant openblas conflicts builtin_lapack accelerate atlas description {build using the BLAS and Lapack in the OpenBLAS port} {
|
||
depends_lib-append path:lib/libopenblas.dylib:OpenBLAS
|
||
configure.args-delete --enable-BLAS-shlib
|
||
configure.args-append --with-blas="-L${prefix}/lib -lopenblas" --with-lapack
|
||
}
|
||
|
||
variant openmp description {enable parallelism support using OpenMP} {
|
||
compiler.openmp_version 4.5
|
||
compiler.blacklist-append {macports-clang-[0-9].*}
|
||
configure.args-replace --disable-openmp --enable-openmp
|
||
notes-append "
|
||
Some R packages using OpenMP may require additional flags\
|
||
in the Makevar file (e.g. data.table) to build with OpenMP support.\
|
||
Please consult package documentation."
|
||
}
|
||
|
||
variant cairo description {use cairo and pango} {
|
||
depends_lib-append path:lib/pkgconfig/cairo.pc:cairo \
|
||
path:lib/pkgconfig/pango.pc:pango \
|
||
path:lib/pkgconfig/glib-2.0.pc:glib2 \
|
||
port:freetype \
|
||
port:fontconfig \
|
||
port:gettext-runtime
|
||
configure.args-replace --without-cairo \
|
||
--with-cairo
|
||
}
|
||
|
||
variant debug description {build with debug symbols} {
|
||
configure.optflags-append -g
|
||
}
|
||
|
||
variant latex description {build with LaTeX support and docs in PDF} {
|
||
depends_build-append port:texlive-basic \
|
||
port:texlive-latex \
|
||
port:texlive-latex-recommended
|
||
configure.env-delete ac_cv_path_TEX= \
|
||
ac_cv_path_PDFTEX= \
|
||
ac_cv_path_PDFLATEX=
|
||
}
|
||
|
||
variant tcltk description {enable use of tcltk} {
|
||
depends_lib-append port:tcl
|
||
if {[variant_isset quartz]} {
|
||
depends_lib-append port:tk8-quartz
|
||
configure.args-append --with-tk-config=${prefix}/lib/tk8-quartz/tkConfig.sh
|
||
} else {
|
||
depends_lib-append port:tk8-x11
|
||
configure.args-append --with-tk-config=${prefix}/lib/tk8-x11/tkConfig.sh
|
||
}
|
||
configure.args-delete --without-tcltk
|
||
configure.args-append --with-tcltk \
|
||
--with-tcl-config=${prefix}/lib/tclConfig.sh
|
||
}
|
||
|
||
variant tests description {include tests of R installation} {
|
||
destroot.target-append install-tests
|
||
}
|
||
|
||
variant x11 conflicts quartz {
|
||
depends_lib-append port:xorg-libice \
|
||
port:xorg-libsm \
|
||
port:xorg-libX11 \
|
||
port:xorg-libXmu \
|
||
port:xorg-libXt
|
||
configure.args-delete --without-x
|
||
configure.args-append --with-x \
|
||
--x-include=${prefix}/include/X11 \
|
||
--x-lib=${prefix}/lib
|
||
}
|
||
|
||
variant aqua description {Enable native macOS graphics support, needed by R.app and quartz variant} {
|
||
configure.args-replace --without-aqua \
|
||
--with-aqua
|
||
}
|
||
|
||
variant quartz requires aqua conflicts x11 {
|
||
notes-append "
|
||
Note that R with quartz variant will not work with R.app because\
|
||
of conflicts over the macOS menu."
|
||
}
|
||
|
||
variant java description {enable Java} {
|
||
PortGroup java 1.0
|
||
|
||
configure.args-replace --disable-java \
|
||
--enable-java
|
||
}
|
||
|
||
default_variants-append +aqua +cairo +openmp +tcltk
|
||
|
||
if {![variant_isset quartz]} {
|
||
default_variants-append +x11
|
||
}
|
||
|
||
if {[variant_isset cairo] && [variant_isset x11]} {
|
||
require_active_variants path:lib/pkgconfig/cairo.pc:cairo x11
|
||
require_active_variants path:lib/pkgconfig/pango.pc:pango x11
|
||
}
|
||
|
||
if {[variant_isset cairo] && [variant_isset quartz]} {
|
||
require_active_variants path:lib/pkgconfig/cairo.pc:cairo quartz
|
||
require_active_variants path:lib/pkgconfig/pango.pc:pango quartz
|
||
}
|
||
|
||
if {![variant_isset accelerate] && ![variant_isset atlas] && ![variant_isset openblas] && ![variant_isset builtin_lapack]} {
|
||
default_variants-append +builtin_lapack
|
||
}
|
||
|
||
test.run yes
|
||
test.target check
|
||
|
||
destroot.destdir prefix=${destroot}${frameworks_dir}
|
||
|
||
post-destroot {
|
||
xinstall -m 0644 ${destroot}${frameworks_dir}/R.framework/Resources/lib/pkgconfig/libR.pc ${destroot}${prefix}/lib/pkgconfig/libR.pc
|
||
|
||
foreach v { "rhome" "rincludedir" } {
|
||
reinplace "s|${v}=${destroot}|${v}=|" "${destroot}${prefix}/lib/pkgconfig/libR.pc"
|
||
}
|
||
|
||
reinplace "s|${destroot}||g" "${destroot}${resources}/bin/R"
|
||
|
||
reinplace "s|-F${destroot}|-F|" "${destroot}${resources}/etc/Makeconf"
|
||
|
||
foreach dylib [ exec find ${destroot}${frameworks_dir}/R.framework -name "\*.dylib" ] {
|
||
regsub ":$" ${dylib} "" destroot_dylib_path
|
||
regsub ${destroot} ${destroot_dylib_path} "" dylib_path
|
||
system "install_name_tool -id ${dylib_path} ${destroot_dylib_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libR.dylib ${resources}/lib/libR.dylib \
|
||
${destroot_dylib_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libRblas.dylib ${resources}/lib/libRblas.dylib \
|
||
${destroot_dylib_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libRlapack.dylib ${resources}/lib/libRlapack.dylib \
|
||
${destroot_dylib_path}"
|
||
}
|
||
|
||
foreach so [ exec find ${destroot}${frameworks_dir}/R.framework -name "\*.so" ] {
|
||
regsub ":$" ${so} "" destroot_so_path
|
||
regsub ${destroot} ${destroot_so_path} "" so_path
|
||
system "install_name_tool -id ${so_path} ${destroot_so_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libR.dylib ${resources}/lib/libR.dylib \
|
||
${destroot_so_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libRblas.dylib ${resources}/lib/libRblas.dylib \
|
||
${destroot_so_path}"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libRlapack.dylib ${resources}/lib/libRlapack.dylib \
|
||
${destroot_so_path}"
|
||
}
|
||
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libR.dylib ${resources}/lib/libR.dylib \
|
||
${destroot}${resources}/bin/exec/R"
|
||
system "install_name_tool -change ${destroot}${resources}/lib/libRblas.dylib ${resources}/lib/libRblas.dylib \
|
||
${destroot}${resources}/bin/exec/R"
|
||
|
||
platform darwin {
|
||
# LegacySupport magic does not work automatically. Re-implement it by hand:
|
||
set rexec ${resources}/bin/exec/R
|
||
|
||
if {${os.major} < 11} {
|
||
legacysupport::relink_libSystem ${destroot}${rexec}
|
||
}
|
||
|
||
if {${configure.cxx_stdlib} ne "libc++"} {
|
||
# We can’t do it in a sane way, since R build system in its wisdom assumes
|
||
# that R and R-orig are archs, and then package installation gets broken.
|
||
set rexec_orig ${resources}/bin/exec_orig/R
|
||
|
||
xinstall -d ${destroot}${resources}/bin/exec_orig
|
||
|
||
move ${destroot}${rexec} ${destroot}${rexec_orig}
|
||
|
||
set wrapper [open "${destroot}${rexec}" w 0755]
|
||
puts ${wrapper} "#!/bin/bash"
|
||
puts ${wrapper} ""
|
||
puts ${wrapper} {if [ -n "$DYLD_LIBRARY_PATH" ]; then}
|
||
puts ${wrapper} " DYLD_LIBRARY_PATH=${prefix}/lib/libgcc:\${DYLD_LIBRARY_PATH}"
|
||
puts ${wrapper} {else}
|
||
puts ${wrapper} " DYLD_LIBRARY_PATH=${prefix}/lib/libgcc"
|
||
puts ${wrapper} {fi}
|
||
puts ${wrapper} {export DYLD_LIBRARY_PATH}
|
||
puts ${wrapper} ""
|
||
puts ${wrapper} "exec ${rexec_orig} \"\$@\""
|
||
close $wrapper
|
||
}
|
||
}
|
||
|
||
ln -s ${resources}/bin/R ${destroot}${prefix}/bin/R
|
||
ln -s ${resources}/bin/Rscript ${destroot}${prefix}/bin/Rscript
|
||
foreach f [glob -type f -directory ${destroot}${resources}/share/man/man1 *] {
|
||
set fname [file tail ${f}]
|
||
ln -s ${resources}/share/man/man1/${fname} ${destroot}${prefix}/share/man/man1/${fname}
|
||
}
|
||
}
|
||
|
||
livecheck.type regex
|
||
livecheck.url [lindex ${master_sites} 0]
|
||
livecheck.regex >${name}-(\[0-9.\]+)${extract.suffix}<
|