Revision: 144150 https://trac.macports.org/changeset/144150 Author: mcalhoun@macports.org Date: 2016-01-02 23:40:58 -0800 (Sat, 02 Jan 2016) Log Message: ----------- octave-devel, octave_select: new and resurrected ports *) allows testing of major revisions before transitioning (e.g. 3.8.2 -> 4.0.0, #48622, #47979) *) allows testing of release candidates *) allows testing of cutting-edge features Modified Paths: -------------- trunk/dports/math/octave-devel/Portfile Added Paths: ----------- trunk/dports/math/octave-devel/files/ trunk/dports/math/octave-devel/files/clang-libcxx-fix.patch trunk/dports/math/octave-devel/files/octave-bug_41027.patch trunk/dports/math/octave-devel/files/octave-clang-classdef.patch trunk/dports/math/octave-devel/files/octave-devel trunk/dports/math/octave-devel/files/octave-devel-rc trunk/dports/math/octave-devel/files/octave-devel-release trunk/dports/math/octave-devel/files/osmesa_mac_fix.patch trunk/dports/math/octave-devel/files/patch-stdio.in.h.diff trunk/dports/sysutils/octave_select/ trunk/dports/sysutils/octave_select/Portfile trunk/dports/sysutils/octave_select/files/ trunk/dports/sysutils/octave_select/files/base trunk/dports/sysutils/octave_select/files/none Modified: trunk/dports/math/octave-devel/Portfile =================================================================== --- trunk/dports/math/octave-devel/Portfile 2016-01-03 07:17:55 UTC (rev 144149) +++ trunk/dports/math/octave-devel/Portfile 2016-01-03 07:40:58 UTC (rev 144150) @@ -1,35 +1,622 @@ -# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:et:sw=4:ts=4:sts=4 +# -*- 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 # $Id$ PortSystem 1.0 +PortGroup compilers 1.0 +PortGroup muniversal 1.0 +PortGroup active_variants 1.1 +PortGroup select 1.0 name octave-devel -version 3.6.4 -revision 11 - categories math science -maintainers michaelld openmaintainer -license GPL-3 platforms darwin +license GPL-3+ +maintainers mcalhoun openmaintainer +description a high-level language for numerical computations +long_description \ + GNU Octave is a high-level language, primarily intended for numerical \ + computations. It provides a convenient command line interface for \ + solving linear and nonlinear problems numerically. -description a Matlab-like environment for numerical analysis -long_description Octave provides a convenient command line interface \ - for solving linear and nonlinear problems numerically, \ - using a language that is mostly compatible with Matlab. \ - It is easily extensible and customizable via \ - user-defined functions or using dynamically loaded \ - modules written in e.g. C++, C or Fortran. +homepage http://www.gnu.org/software/octave -homepage http://www.gnu.org/software/octave/ +#fetch.type hg +#hg.url http://hg.savannah.gnu.org/hgweb/octave/ -replaced_by octave +set version_release 4.0.0 +set version_rc 4.0.1 +set version_tip 4.1.0+ -archive_sites -distfiles +#revision 0 -pre-fetch { - ui_error "${subport} has been temporarily replaced by the port 'octave'. Please install octave instead." - return -code error "obsolete port" +if { ${name} eq ${subport} } { + version ${version_tip} + #incr revision 0 + hg.tag 5a340d8458d6 + + checksums-append \ + ${hg.tag}${extract.suffix} \ + rmd160 9fc8bf87a82331ed644f68b31bb8a2cd7f2ec539 \ + sha256 152b316872d20eca275433a9dd2d339ce7e475b5be36d37d1637601ccd3cd898 + + livecheck.regex "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\ntip" } -livecheck.type none +subport octave-devel-rc { + version ${version_rc} + #incr revision 0 + hg.tag 20b17dda0e0c + + if {${version_rc} eq ${version_release}} { + conflicts-append octave-devel-release + } + + checksums-append \ + ${hg.tag}${extract.suffix} \ + rmd160 bc42b7b3b2a4fca3b1264203bad4cbc3e941206e \ + sha256 9ab6b66f698e7bd187d462844edd59dc5911e341f1bcdaa8f98f7de4f9950aae + + livecheck.regex "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\nrc-" +} + +subport octave-devel-release { + version ${version_release} + #incr revision 0 + hg.tag 3ccc2d02e64b + + if {${version_release} eq ${version_rc}} { + conflicts-append octave-devel-release + } + + # see http://savannah.gnu.org/bugs/?41178 + patchfiles-append \ + octave-clang-classdef.patch + + checksums-append \ + ${hg.tag}${extract.suffix} \ + rmd160 4bbcc004ffdde859b0735e602aac2d01388d0b2c \ + sha256 2a4017a03ca80c280b5d39cf88af8954c7bfdbf1b3b40b9f09d3bd4bd1dd6040 + + livecheck.regex "<a href=\"/hgweb/octave/rev/(\[a-zA-Z0-9.\]+)\">\nrelease-" +} + +select.group octave +select.file ${filespath}/${subport} + +# check http://hg.savannah.gnu.org/hgweb/octave/gnulib-hg/rev for latest version +set hg_gnu_tag 7f19e7f2afa2 + +checksums-append \ + ${hg_gnu_tag}${extract.suffix} \ + rmd160 9d906212fdb4201f8592da10524606dadb3f50e3 \ + sha256 85add8ce0c53e8868d903c28c407d864ca54bd42e8d472e09b1a1bb4b105b741 + +master_sites http://hg.savannah.gnu.org/hgweb/octave/archive:octave \ + http://hg.savannah.gnu.org/hgweb/octave/gnulib-hg/archive:gnulib \ +use_bzip2 yes + +distfiles \ + ${hg.tag}${extract.suffix}:octave \ + ${hg_gnu_tag}${extract.suffix}:gnulib + +worksrcdir octave-${hg.tag} + +#depends_extract-append port:git +post-extract { + # command from bootstrap script file + #system -W ${worksrcpath} "${prefix}/bin/git clone --depth 2 git://git.sv.gnu.org/gnulib gnulib-hg" + move ${worksrcpath}/../gnulib-hg-${hg_gnu_tag} ${worksrcpath}/gnulib-hg +} + +# allow osmesa support to at least compile +patchfiles-append \ + osmesa_mac_fix.patch + +# see http://savannah.gnu.org/bugs/?41027 +patchfiles-append \ + octave-bug_41027.patch + +# see http://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/stdio.in.h?id=d617670... +patchfiles-append \ + patch-stdio.in.h.diff + +pre-patch { + # code located in pre-patch because variants from PortGroup compilers must + # be evaluated before it can be determined if clang is being used + + # see http://trac.macports.org/ticket/45011 + # see http://savannah.gnu.org/bugs/?43298 + set libcxxbug no + if { ${configure.cc} eq "/usr/bin/clang" && [lindex [split ${xcodeversion} .] 0] eq 6 } { + set libcxxbug yes + } elseif { [variant_exists clang35] && [variant_isset clang35] } { + set libcxxbug yes + } + if { ${libcxxbug} } { + patchfiles-append \ + clang-libcxx-fix.patch + } +} + +# need for autoconf +depends_build-append \ + port:autoconf \ + port:automake \ + port:libtool + +use_autoconf yes +autoconf.cmd ./bootstrap +autoconf.args + +# avoid depends_build-append port:coreutils +configure.env-append MKDIR_P="/bin/mkdir -p" + +# avoid depends_build-append port:cctools +configure.env-append RANLIB=/usr/bin/ranlib + +# main octave port lists as a depends_lib +# configure.ac list it among the "[p]rograms used in Makefiles" +depends_build-append port:gawk +configure.awk ${prefix}/bin/gawk + +# in configure.ac, said to be "[p]rograms used to generate icons file formats +depends_build-append \ + port:icoutils \ + port:librsvg +configure.env-append \ + ICOTOOL=${prefix}/bin/icotool \ + RSVG_CONVERT=${prefix}/bin/rsvg-convert + +# main octave port lists as a depends_lib +# configure.ac list it among the "[p]rograms used in Makefiles" +depends_build-append port:grep +configure.env-append GREP=${prefix}/bin/grep +configure.env-append EGREP=${prefix}/bin/egrep +configure.env-append FGREP=${prefix}/bin/fgrep + +# configure.ac list it among the "[p]rograms used in Makefiles" +depends_build-append port:findutils +configure.env-append FIND=${prefix}/bin/gfind + +# main octave port lists as a depends_lib +# configure.ac list it among the "[p]rograms used in Makefiles" +depends_build-append port:gsed +configure.env-append SED=${prefix}/bin/gsed + +depends_build-append port:flex +configure.env-append LEX=${prefix}/bin/flex + +depends_build-append port:bison +configure.env-append YACC="${prefix}/bin/bison -y" + +depends_build-append port:gperf +configure.env-append GPERF=/usr/bin/gperf + +# configure.ac list it among the "[p]rograms used in Makefiles" +depends_build-append port:perl5 +configure.perl ${prefix}/bin/perl5 + +# avoid depends_build-append port:desktop-file-utils +#configure.env-append DESKTOP_FILE_INSTALL="" +configure.env-append ac_cv_prog_DESKTOP_FILE_INSTALL="" + +depends_build-append \ + port:pkgconfig + +compilers.choose fc f77 f90 cc cxx + +# for now, limit the number of variants +# some of these compilers may work fine +compilers.setup \ + require_fortran \ + -dragonegg \ + -gcc49 \ + -gcc48 \ + -gcc46 \ + -gcc45 \ + -gcc44 \ + -g95 \ + -llvm \ + -gcc47 \ + -gcc46 \ + -gcc45 \ + -gcc44 \ + -clang36 \ + -clang35 \ + -clang34 \ + -clang33 + +# offscreen rendering with OpenGL via osmesa would be nice to have, but the following +# causes a segmentation fault: +# h = figure ("visible", "off"); fn = tempname (); sombrero (); __osmesa_print__ (h, fn, "svg"); +# +# solution is ??? +# +#depends_lib-append port:mesa +configure.args-append \ + --without-OSMesa + +#configure.args-append --with-shell=??? + +configure.args-append \ + --with-framework-opengl \ + --with-framework-carbon \ + --without-x \ + --enable-static + +configure.args-append \ + --disable-openmp + +configure.args-append \ + --disable-java \ + --disable-gui \ + --without-fltk \ + --disable-jit \ + --without-sndfile \ + --without-portaudio \ + --without-magick + +# in configure.ac, listed as one of "[p]rograms used when running Octave" +depends_lib-append port:python27 +configure.python ${prefix}/bin/python2.7 + +# in configure.ac, listed as one of "[p]rograms used when running Octave" +depends_lib-append port:ghostscript +configure.env-append GHOSTSCRIPT=${prefix}/bin/gs + +# in configure.ac, listed as one of "[p]rograms used when running Octave" +depends_lib-append port:gnuplot +configure.env-append GNUPLOT=${prefix}/bin/gnuplot + +# in configure.ac, listed as one of "[p]rograms used when running Octave" +depends_lib-append port:less +configure.env-append DEFAULT_PAGER=${prefix}/bin/less + +depends_lib-append port:ncurses +depends_lib-append port:readline +depends_lib-append port:fontconfig +depends_lib-append port:pcre + +#--disable-docs +depends_lib-append port:texinfo +configure.env-append \ + MAKEINFO=${prefix}/bin/makeinfo \ + TEXI2DVI=${prefix}/bin/texi2dvi \ + TEXI2PDF=${prefix}/bin/texi2pdf + +#--without-amd +#--without-camd +#--without-colamd +#--without-cholmod +#--without-cxsparse +#--without-umfpack +depends_lib-append port:SuiteSparse +foreach lib {amd camd colamd cholmod cxsparse umfpack} { + configure.args-append \ + --with-${lib}="-l${lib} -lsuitesparseconfig" +} + +#--without-qhull +depends_lib-append port:qhull + +#--without-z +depends_lib-append port:zlib + +#--without-hdf5 +depends_lib-append port:hdf5 + +#--disable-fftw-threads +#--without-fftw3 +#--without-fftw3f +depends_lib-append port:fftw-3 +depends_lib-append port:fftw-3-single + +#--without-glpk +depends_lib-append port:glpk + +#--without-curl +depends_lib-append port:curl + +#--without-qrupdate +depends_lib-append port:qrupdate + +#--without-arpack +depends_lib-append port:arpack + +#--without-openssl +depends_lib-append port:openssl + +# fortran arch flag is not set automatically +if {![variant_isset universal]} { + if {${build_arch} eq "x86_64" || ${build_arch} eq "ppc64"} { + configure.fflags-append -m64 + } else { + configure.fflags-append -m32 + } +} + +# see etc/README.MacOS +depends_run-append \ + port:epstool \ + port:ghostscript \ + port:transfig \ + port:pstoedit + +depends_run-append port:octave_select + +variant accelerate description {use BLAS from Apple's Accelerate.framework} conflicts atlas openblas { + depends_lib-append port:vecLibFort + + # dependents must be built with same BLAS and LAPACK + #require_active_variants port:arpack accelerate + #require_active_variants port:SuiteSparse accelerate + #require_active_variants port:qrupdate accelerate + + configure.args-append \ + --with-blas=-lvecLibFort \ + --with-lapack="" +} + +variant openblas description {use BLAS from MacPorts' openblas port} conflicts atlas accelerate { + + depends_lib-append path:lib/libopenblas.dylib:OpenBLAS + # LAPACK required + require_active_variants path:lib/libopenblas.dylib:OpenBLAS lapack + + # dependents must be built with same BLAS and LAPACK + #require_active_variants port:arpack openblas + #require_active_variants port:SuiteSparse openblas + #require_active_variants port:qrupdate openblas + + # replicate default values if configure script finds openblas on its own + configure.args-append \ + --with-blas=-lopenblas \ + --with-lapack="" +} + +variant atlas description {use BLAS from MacPorts' atlas port} conflicts accelerate openblas { + depends_lib-append port:atlas + + # dependents must be built with same BLAS and LAPACK + #require_active_variants port:arpack atlas + #require_active_variants port:SuiteSparse atlas + #require_active_variants port:qrupdate atlas + + # replicate default values if configure script finds atlas on its own + configure.args-append \ + --with-blas="-lcblas -lf77blas -latlas" \ + --with-lapack=-llapack +} + +if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset atlas] } { + default_variants-append +accelerate +} + +if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset atlas] } { + ui_error "\n\nYou must select either the +accelerate, +atlas, or +openblas variant.\n" + return -code error "Invalid variant selection" +} + +variant java description {enable Java interface} { + PortGroup java 1.0 + configure.args-replace --disable-java --enable-java +} +default_variants-append +java + +variant qt4gui description {build the GUI using Qt4} { + PortGroup qt4 1.0 + depends_lib-append port:qscintilla + configure.args-replace --disable-gui --enable-gui +} +default_variants-append +qt4gui + +variant fltk description {enable fltk as a graphics toolkit for plotting} { + depends_lib-append path:lib/libfltk.dylib:fltk + + # as of version 4.1.0 revision 0: + # without fltk, configure script turns off "native_graphics," and + # does not look for either freetype or gl2ps + # it still looks for and links against fontconfig, however + depends_lib-append \ + port:freetype \ + port:gl2ps + + configure.args-replace --without-fltk --with-fltk +} +default_variants-append +fltk + +variant jit description {enable JIT compiler (EXPERIMENTAL)} { + # JIT requires LLVM, so select a version to use + set llvm_ver 3.7 + + # prevent multiple versions of llvm being required + # if clangXY compiler is requested, use llvm-X.Y + foreach clang ${compilers.clang_variants} { + if { [variant_exists ${clang}] && [variant_isset ${clang}] } { + set llvm_ver [string index ${clang} end-1].[string index ${clang} end] + } + } + + depends_lib-append port:llvm-${llvm_ver} + configure.args-replace --disable-jit --enable-jit + configure.env-append LLVM_CONFIG=${prefix}/bin/llvm-config-mp-${llvm_ver} + configure.cxxflags-append -std=c++11 +} + +if {[variant_isset fltk] && [variant_isset qt4gui]} { + notes-append "unless octave is run with --no-gui-libs, graphics_toolkit(\"fltk\") will cause a crash" +} + +variant sound description {enable audio support (file I/O and playback)} { + depends_lib-append port:libsndfile + depends_lib-append port:portaudio + + configure.args-replace --without-sndfile --with-sndfile + configure.args-replace --without-portaudio --with-portaudio +} +default_variants-append +sound + +variant app description {} { + depends_build-append port:ImageMagick + + global appName + set appName Octave_${version}.app + + post-build { + xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents + xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents/Resources + xinstall -d -p -m 0755 ${worksrcpath}/${appName}/Contents/MacOS + + set script [open "${worksrcpath}/${appName}/Contents/MacOS/Octave" w 0755] + puts ${script} "#!/bin/sh" + puts ${script} "" + if { [variant_isset qt4gui] } { + puts ${script} "${prefix}/bin/octave-${version} --force-gui" + } else { + puts ${script} "/usr/bin/osascript -e 'tell application \"Terminal\" to do script \"${prefix}/bin/octave-${version} --no-gui-libs; exit\"'" + } + close ${script} + + #NSHumanReadableCopyright '' + #LSUIElement 1 + set values " + CFBundleDevelopmentRegion English + CFBundleExecutable Octave + CFBundleIconFile Octave.icns + CFBundleDocumentTypes {-array \'{\"CFBundleTypeExtensions\" = (\"m\"); \"CFBundleTypeOSTypes\" = (\"Mfile\"); \"CFBundleTypeRole\" = \"Editor\";}\'} + CFBundleIdentifier org.octave.Octave + CFBundleInfoDictionaryVersion 6.0 + CFBundleSignature Octave + CFBundleVersion ${version} + CFBundleShortVersionString ${version} + " + foreach {key value} ${values} { + system "/usr/bin/defaults write ${worksrcpath}/${appName}/Contents/Info ${key} ${value}" + } + + # have Info.plist be human readable + system "/usr/bin/plutil -convert xml1 ${worksrcpath}/${appName}/Contents/Info.plist" + + # conversion by plutil set verys limited permission + system "/bin/chmod 0644 ${worksrcpath}/${appName}/Contents/Info.plist" + + xinstall -d -m 0755 ${worksrcpath}/Octave.iconset + + # values from original SVG file + set svg etc/icons/octave-logo.svg + set width 283.28912 + set height 283.28833 + set dpi 90 + + foreach res {16 32 128 256 512} { + + set hres [expr 2*${res}] + + # find new density so that converted PNG files do not look pixelated + set denw [expr ${dpi}*${res}/${width}] + set denh [expr ${dpi}*${res}/${height}] + + set hdenw [expr 2*${denw}] + set hdenh [expr 2*${denh}] + + system -W ${worksrcpath} "${prefix}/bin/convert -background transparent -resize ${res}x${res} -density ${denw}x${denh} ${svg} Octave.iconset/icon_${res}x${res}.png" + system -W ${worksrcpath} "${prefix}/bin/convert -background transparent -resize ${hres}x${hres} -density ${hdenw}x${hdenh} ${svg} Octave.iconset/icon_${res}x${res}@2x.png" + } + + system -W ${worksrcpath} "/usr/bin/iconutil -c icns -o ${appName}/Contents/Resources/Octave.icns Octave.iconset" + } + + post-destroot { + copy ${worksrcpath}/${appName} ${destroot}${applications_dir} + } +} +default_variants-append +app + +# GraphicsMagick and octave need to be built with the same C++ standard library +# or else undefined symbols: +# "Magick::Image::ping(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)" +set magickConflict {} +set magickDefault yes +if {${configure.cxx_stdlib} ne "libstdc++"} { + foreach gccVar ${compilers.gcc_variants} { + if {[variant_exists ${gccVar}] } { + lappend magickConflict ${gccVar} + + if {[variant_isset ${gccVar}] } { + set magickDefault no + } + } + } +} +eval "variant graphicsmagick description {use GraphicsMagick for image I/O} conflicts ${magickConflict} { + depends_lib-append port:GraphicsMagick + configure.args-replace --without-magick --with-magick=GraphicsMagick +}" +if {${magickDefault}} { + default_variants-append +graphicsmagick +} + +# remove architecture flags from header file +if { [variant_exists universal] && [variant_isset universal] } { + merger-post-destroot { + foreach arch ${universal_archs_to_use} { + set hfile ${destroot}-${arch}${prefix}/include/octave-${version}/octave/oct-conf.h + reinplace "s:-arch ${arch}::g" ${hfile} + reinplace {s:-m32::g} ${hfile} + reinplace {s:-m64::g} ${hfile} + } + } +} else { + post-destroot { + set hfile ${destroot}${prefix}/include/octave-${version}/octave/oct-conf.h + reinplace "s:-arch ${build_arch}::g" ${hfile} + reinplace {s:-m32::g} ${hfile} + reinplace {s:-m64::g} ${hfile} + } +} + +# remove or rename conflicting files +post-destroot { + foreach bin {mkoctfile octave octave-cli octave-config} { + # delete since just a link to versioned name + file delete ${destroot}${prefix}/bin/${bin} + + # put version number in man file + move ${destroot}${prefix}/share/man/man1/${bin}.1 ${destroot}${prefix}/share/man/man1/${bin}-${version}.1 + } + + # put version nubmer in info files + foreach name {liboctave octave} { + move ${destroot}${prefix}/share/info/${name}.info ${destroot}${prefix}/share/info/${name}-${version}.info + } + foreach suffix {1 2 3 4 5 6 7 8 9} { + move ${destroot}${prefix}/share/info/octave.info-${suffix} ${destroot}${prefix}/share/info/octave-${version}.info-${suffix} + } + + # put any startup commands in ${destroot}${prefix}/share/octave/${version}/m/startup/octaverc + # see https://www.gnu.org/software/octave/doc/interpreter/Startup-Files.html + file delete ${destroot}${prefix}/share/octave/site/m/startup/octaverc + + # move appdata and icons into a versioned directory + xinstall -d -m 0755 ${destroot}${prefix}/share/octave/${version}/appdata + move \ + ${destroot}${prefix}/share/appdata/www.octave.org-octave.appdata.xml \ + ${destroot}${prefix}/share/octave/${version}/appdata/ + foreach num {16 22 24 32 48 64 128 256 512} { + xinstall -d -m 0755 -p ${destroot}${prefix}/share/octave/${version}/icons/hicolor/${num}x${num}/apps + move \ + ${destroot}${prefix}/share/icons/hicolor/${num}x${num}/apps/octave.png \ + ${destroot}${prefix}/share/octave/${version}/icons/hicolor/${num}x${num}/apps/octave.png + } + xinstall -d -m 0755 -p ${destroot}${prefix}/share/octave/${version}/icons/hicolor/scalable/apps + move \ + ${destroot}${prefix}/share/icons/hicolor/scalable/apps/octave.svg \ + ${destroot}${prefix}/share/octave/${version}/icons/hicolor/scalable/apps/octave.svg +} + +test.run yes +test.target check + +livecheck.type regexm +livecheck.url http://hg.savannah.gnu.org/hgweb/octave/tags +livecheck.version ${hg.tag} Added: trunk/dports/math/octave-devel/files/clang-libcxx-fix.patch =================================================================== --- trunk/dports/math/octave-devel/files/clang-libcxx-fix.patch (rev 0) +++ trunk/dports/math/octave-devel/files/clang-libcxx-fix.patch 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,105 @@ +# HG changeset patch +# User Kefu Chai <tchaikov@gmail.com> +# Date 1413043255 -28800 +# Sun Oct 12 00:00:55 2014 +0800 +# Node ID 1433cd4f7b7bda0b0e0a04f990b55ffc3cbaf701 +# Parent 91a6f06c505220d269de3a0dab8cc898d03d91a0 +fix the build error on clang 3.5 and libc++ (bug #43298) + +* liboctave/operators/mx-inlines.cc: +use the workaround if libc++ with this issue is detected. + +* liboctave/operators/libcxx-fix.cc: +add a workaround for http://llvm.org/bugs/show_bug.cgi?id=21083, so that only +the arithmetic types are accepted for the function template "libcxx_fix::pow()". + +diff -r 91a6f06c5052 -r 1433cd4f7b7b liboctave/operators/libcxx-fix.h +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ liboctave/operators/libcxx-fix.h Sun Oct 12 00:00:55 2014 +0800 +@@ -0,0 +1,69 @@ ++#ifndef _LIBCPP_VERSION ++#error "for libc++ only" ++#endif ++ ++namespace libcxx_fix { ++ ++using std::is_integral; ++using std::is_same; ++using std::enable_if; ++ ++template <class _Tp, class _Tn = void> ++struct numeric_type ++{ ++ typedef void type; ++ static const bool value = false; ++}; ++ ++template <class _Tp> ++struct numeric_type<_Tp, typename enable_if<is_integral<_Tp>::value || ++ is_same<_Tp, double>::value>::type> ++{ ++ typedef double type; ++ static const bool value = true; ++}; ++ ++template <class _Tp> ++struct numeric_type<_Tp, typename enable_if<is_same<_Tp, long double>::value || ++ is_same<_Tp, float>::value>::type> ++{ ++ typedef _Tp type; ++ static const bool value = true; ++}; ++ ++template <> ++struct numeric_type<void, void> ++{ ++ static const bool value = true; ++}; ++ ++template <class _A1, class _A2, ++ bool = numeric_type<_A1>::value && ++ numeric_type<_A2>::value> ++class promote ++{}; ++ ++template <class _A1, class _A2> ++class promote<_A1, _A2, true> ++{ ++private: ++ typedef typename numeric_type<_A1>::type __type1; ++ typedef typename numeric_type<_A2>::type __type2; ++public: ++ typedef decltype(__type1() + __type2()) type; ++}; ++ ++template <class _A1, class _A2> ++inline _LIBCPP_INLINE_VISIBILITY ++typename promote<_A1, _A2>::type ++pow(_A1 __x, _A2 __y) _NOEXCEPT ++{ ++ typedef typename promote<_A1, _A2>::type __result_type; ++#if _LIBCPP_STD_VER > 11 ++ static_assert((!(is_same<_A1, __result_type>::value && ++ is_same<_A2, __result_type>::value)), ""); ++#endif ++ return ::pow(static_cast<__result_type>(__x), static_cast<__result_type>(__y)); ++} ++ ++} +diff -r 91a6f06c5052 -r 1433cd4f7b7b liboctave/operators/mx-inlines.cc +--- a/liboctave/operators/mx-inlines.cc Thu Oct 09 20:38:04 2014 -0700 ++++ liboctave/operators/mx-inlines.cc Sun Oct 12 00:00:55 2014 +0800 +@@ -307,7 +307,13 @@ + + // Let the compiler decide which pow to use, whichever best matches the + // arguments provided. ++#if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION >= 1101) ++// Workaround http://llvm.org/bugs/show_bug.cgi?id=21083 ++#include "libcxx-fix.h" ++using libcxx_fix::pow; ++#else + using std::pow; ++#endif + DEFMXMAPPER2X (mx_inline_pow, pow) + + // Arbitrary function appliers. The function is a template parameter to enable Added: trunk/dports/math/octave-devel/files/octave-bug_41027.patch =================================================================== --- trunk/dports/math/octave-devel/files/octave-bug_41027.patch (rev 0) +++ trunk/dports/math/octave-devel/files/octave-bug_41027.patch 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,24 @@ +diff -r 900b524d9072 libinterp/corefcn/comment-list.h +--- a/libinterp/corefcn/comment-list.h Sat Apr 19 09:28:20 2014 -0700 ++++ libinterp/corefcn/comment-list.h Sun May 18 18:09:05 2014 +0200 +@@ -25,7 +25,7 @@ + + #include <string> + +-#include <base-list.h> ++#include "base-list.h" + + extern std::string get_comment_text (void); + +diff -r 900b524d9072 libinterp/corefcn/oct.h +--- a/libinterp/corefcn/oct.h Sat Apr 19 09:28:20 2014 -0700 ++++ libinterp/corefcn/oct.h Sun May 18 18:09:05 2014 +0200 +@@ -28,7 +28,7 @@ + // config.h needs to be first because it includes #defines that can */ + // affect other header files. + +-#include <config.h> ++#include "config.h" + + #include "Matrix.h" + Added: trunk/dports/math/octave-devel/files/octave-clang-classdef.patch =================================================================== --- trunk/dports/math/octave-devel/files/octave-clang-classdef.patch (rev 0) +++ trunk/dports/math/octave-devel/files/octave-clang-classdef.patch 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,40 @@ +# HG changeset patch +# User akira noda <you.akira.noda@gmail.com> +# Date 1440176752 14400 +# Fri Aug 21 13:05:52 2015 -0400 +# Node ID 03a20edfe1c7f147e7adcface83025351b8f31c9 +# Parent 0fe7133da8ceb02744b3288841927f586b9a514c +Fix compilation of classdef with the clang compiler (bug #41178) + +* ov-classdef.cc, ov-classdef.h (cdef_object_scalar::mark_as_constructed): +Move function definition out of header file to avoid dependency on incomplete +type, compilation error with clang. + +diff --git a/libinterp/octave-value/ov-classdef.cc b/libinterp/octave-value/ov-classdef.cc +--- a/libinterp/octave-value/ov-classdef.cc ++++ libinterp/octave-value/ov-classdef.cc +@@ -1946,6 +1946,12 @@ cdef_object_scalar::is_partially_constru + return true; + } + ++void ++cdef_object_scalar::mark_as_constructed (const cdef_class& cls) ++{ ++ ctor_list.erase (cls); ++} ++ + handle_cdef_object::~handle_cdef_object (void) + { + #if DEBUG_TRACE +diff --git a/libinterp/octave-value/ov-classdef.h b/libinterp/octave-value/ov-classdef.h +--- a/libinterp/octave-value/ov-classdef.h ++++ libinterp/octave-value/ov-classdef.h +@@ -438,7 +438,7 @@ public: + + void mark_as_constructed (void) { ctor_list.clear (); } + +- void mark_as_constructed (const cdef_class& cls) { ctor_list.erase (cls); } ++ void mark_as_constructed (const cdef_class& cls); + + bool is_constructed (void) const { return ctor_list.empty (); } + Added: trunk/dports/math/octave-devel/files/octave-devel =================================================================== --- trunk/dports/math/octave-devel/files/octave-devel (rev 0) +++ trunk/dports/math/octave-devel/files/octave-devel 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,30 @@ +bin/mkoctfile-4.1.0+ +bin/octave-4.1.0+ +bin/octave-cli-4.1.0+ +bin/octave-config-4.1.0+ +share/man/man1/mkoctfile-4.1.0+.1.gz +share/man/man1/octave-cli-4.1.0+.1.gz +share/man/man1/octave-config-4.1.0+.1.gz +share/man/man1/octave-4.1.0+.1.gz +share/info/liboctave-4.1.0+.info +share/info/octave-4.1.0+.info +share/info/octave-4.1.0+.info-1 +share/info/octave-4.1.0+.info-2 +share/info/octave-4.1.0+.info-3 +share/info/octave-4.1.0+.info-4 +share/info/octave-4.1.0+.info-5 +share/info/octave-4.1.0+.info-6 +share/info/octave-4.1.0+.info-7 +share/info/octave-4.1.0+.info-8 +share/info/octave-4.1.0+.info-9 +share/octave/4.1.0+/appdata/www.octave.org-octave.appdata.xml +share/octave/4.1.0+/icons/hicolor/16x16/apps/octave.png +share/octave/4.1.0+/icons/hicolor/22x22/apps/octave.png +share/octave/4.1.0+/icons/hicolor/24x24/apps/octave.png +share/octave/4.1.0+/icons/hicolor/32x32/apps/octave.png +share/octave/4.1.0+/icons/hicolor/48x48/apps/octave.png +share/octave/4.1.0+/icons/hicolor/64x64/apps/octave.png +share/octave/4.1.0+/icons/hicolor/128x128/apps/octave.png +share/octave/4.1.0+/icons/hicolor/256x256/apps/octave.png +share/octave/4.1.0+/icons/hicolor/512x512/apps/octave.png +share/octave/4.1.0+/icons/hicolor/scalable/apps/octave.svg Added: trunk/dports/math/octave-devel/files/octave-devel-rc =================================================================== --- trunk/dports/math/octave-devel/files/octave-devel-rc (rev 0) +++ trunk/dports/math/octave-devel/files/octave-devel-rc 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,30 @@ +bin/mkoctfile-4.0.1 +bin/octave-4.0.1 +bin/octave-cli-4.0.1 +bin/octave-config-4.0.1 +share/man/man1/mkoctfile-4.0.1.1.gz +share/man/man1/octave-cli-4.0.1.1.gz +share/man/man1/octave-config-4.0.1.1.gz +share/man/man1/octave-4.0.1.1.gz +share/info/liboctave-4.0.1.info +share/info/octave-4.0.1.info +share/info/octave-4.0.1.info-1 +share/info/octave-4.0.1.info-2 +share/info/octave-4.0.1.info-3 +share/info/octave-4.0.1.info-4 +share/info/octave-4.0.1.info-5 +share/info/octave-4.0.1.info-6 +share/info/octave-4.0.1.info-7 +share/info/octave-4.0.1.info-8 +share/info/octave-4.0.1.info-9 +share/octave/4.0.1/appdata/www.octave.org-octave.appdata.xml +share/octave/4.0.1/icons/hicolor/16x16/apps/octave.png +share/octave/4.0.1/icons/hicolor/22x22/apps/octave.png +share/octave/4.0.1/icons/hicolor/24x24/apps/octave.png +share/octave/4.0.1/icons/hicolor/32x32/apps/octave.png +share/octave/4.0.1/icons/hicolor/48x48/apps/octave.png +share/octave/4.0.1/icons/hicolor/64x64/apps/octave.png +share/octave/4.0.1/icons/hicolor/128x128/apps/octave.png +share/octave/4.0.1/icons/hicolor/256x256/apps/octave.png +share/octave/4.0.1/icons/hicolor/512x512/apps/octave.png +share/octave/4.0.1/icons/hicolor/scalable/apps/octave.svg Added: trunk/dports/math/octave-devel/files/octave-devel-release =================================================================== --- trunk/dports/math/octave-devel/files/octave-devel-release (rev 0) +++ trunk/dports/math/octave-devel/files/octave-devel-release 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,30 @@ +bin/mkoctfile-4.0.0 +bin/octave-4.0.0 +bin/octave-cli-4.0.0 +bin/octave-config-4.0.0 +share/man/man1/mkoctfile-4.0.0.1.gz +share/man/man1/octave-cli-4.0.0.1.gz +share/man/man1/octave-config-4.0.0.1.gz +share/man/man1/octave-4.0.0.1.gz +share/info/liboctave-4.0.0.info +share/info/octave-4.0.0.info +share/info/octave-4.0.0.info-1 +share/info/octave-4.0.0.info-2 +share/info/octave-4.0.0.info-3 +share/info/octave-4.0.0.info-4 +share/info/octave-4.0.0.info-5 +share/info/octave-4.0.0.info-6 +share/info/octave-4.0.0.info-7 +share/info/octave-4.0.0.info-8 +share/info/octave-4.0.0.info-9 +share/octave/4.0.0/appdata/www.octave.org-octave.appdata.xml +share/octave/4.0.0/icons/hicolor/16x16/apps/octave.png +share/octave/4.0.0/icons/hicolor/22x22/apps/octave.png +share/octave/4.0.0/icons/hicolor/24x24/apps/octave.png +share/octave/4.0.0/icons/hicolor/32x32/apps/octave.png +share/octave/4.0.0/icons/hicolor/48x48/apps/octave.png +share/octave/4.0.0/icons/hicolor/64x64/apps/octave.png +share/octave/4.0.0/icons/hicolor/128x128/apps/octave.png +share/octave/4.0.0/icons/hicolor/256x256/apps/octave.png +share/octave/4.0.0/icons/hicolor/512x512/apps/octave.png +share/octave/4.0.0/icons/hicolor/scalable/apps/octave.svg Added: trunk/dports/math/octave-devel/files/osmesa_mac_fix.patch =================================================================== --- trunk/dports/math/octave-devel/files/osmesa_mac_fix.patch (rev 0) +++ trunk/dports/math/octave-devel/files/osmesa_mac_fix.patch 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,29 @@ +diff -Naur a/libinterp/dldfcn/__osmesa_print__.cc b/libinterp/dldfcn/__osmesa_print__.cc +--- libinterp/dldfcn/__osmesa_print__.cc 2015-05-23 16:21:53.000000000 +0200 ++++ libinterp/dldfcn/__osmesa_print__.cc 2015-10-05 21:08:50.000000000 +0200 +@@ -27,6 +27,12 @@ + #include <config.h> + #endif + ++#if defined (HAVE_OSMESA_H) ++#include "osmesa.h" ++#elif defined (HAVE_GL_OSMESA_H) ++#include "GL/osmesa.h" ++#endif ++ + #include "oct-locbuf.h" + #include "unwind-prot.h" + +@@ -36,12 +42,6 @@ + #include "graphics.h" + #include "gripes.h" + +-#if defined (HAVE_OSMESA_H) +-#include "osmesa.h" +-#elif defined (HAVE_GL_OSMESA_H) +-#include "GL/osmesa.h" +-#endif +- + #if defined (HAVE_OSMESA) && defined (HAVE_OPENGL) + static void + close_fcn (FILE *f) Added: trunk/dports/math/octave-devel/files/patch-stdio.in.h.diff =================================================================== --- trunk/dports/math/octave-devel/files/patch-stdio.in.h.diff (rev 0) +++ trunk/dports/math/octave-devel/files/patch-stdio.in.h.diff 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,53 @@ +From d6176702c3ffb6c56e6620397470e1b3bd540b10 Mon Sep 17 00:00:00 2001 +From: Jonathan Perkin <jperkin@joyent.com> +Date: Thu, 04 Jun 2015 11:10:34 +0000 +Subject: stdio: Don't redefine gets when using C++ + +We've hit this failure a few times in pkgsrc with packages which embed gnulib, +an example being the latest gnutls: + + ../../src/gl/stdio.h:1034:1: error: 'char* gets(char*)' conflicts with a previous declaration + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + ^ + + /opt/tools/gcc49/lib/gcc/x86_64-sun-solaris2.11/4.9.2/include-fixed/iso/stdio_iso.h:259:14: note: previous declaration 'char* std::gets(char*)' + extern char *gets(char *); + ^ + +Full build log is here: + + http://us-east.manta.joyent.com/pkgsrc/public/reports/upstream-trunk32/20150... + +We've fixed it a few different ways over time: + + https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/devel/m4/patches... + https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/math/octave/patc... + https://github.com/joyent/pkgsrc/blob/joyent/release/2015Q1/security/gnutls/... + +but the cleanest fix appears to be the last, so I am proposing it here for +inclusion upstream. + +Message-Id: <20150604111034.GG66573@joyent.com> +Signed-off-by: Eric Blake <eblake@redhat.com> +--- +(limited to 'lib/stdio.in.h') + +diff --git a/lib/stdio.in.h b/lib/stdio.in.h +index fa6b595..476dee1 100644 +--- a/lib/stdio.in.h ++++ gnulib-hg/lib/stdio.in.h +@@ -723,11 +723,10 @@ _GL_WARN_ON_USE (getline, "getline is unportable - " + so any use of gets warrants an unconditional warning; besides, C11 + removed it. */ + #undef gets +-#if HAVE_RAW_DECL_GETS ++#if HAVE_RAW_DECL_GETS && !defined __cplusplus + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); + #endif + +- + #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ + struct obstack; + /* Grow an obstack with formatted output. Return the number of +-- +cgit v0.9.0.2 Added: trunk/dports/sysutils/octave_select/Portfile =================================================================== --- trunk/dports/sysutils/octave_select/Portfile (rev 0) +++ trunk/dports/sysutils/octave_select/Portfile 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,46 @@ +# -*- 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 +# $Id$ + +PortSystem 1.0 +PortGroup select 1.0 + +name octave_select +version 1.0 + +categories sysutils math +platforms darwin +maintainers mcalhoun openmaintainer +license BSD +supported_archs noarch + +description common files for selecting default octave version +long_description octave_select installs files that allow 'port select' to \ + switch between octave versions + +homepage http://www.gnu.org/software/octave +distfiles + +destroot.keepdirs-append \ + ${destroot}${prefix}/bin \ + ${destroot}${prefix}/share/man/man1 \ + ${destroot}${prefix}/share/info/ \ + ${destroot}${prefix}/share/appdata + +foreach sz {16 22 24 32 48 64 128 256 512} { + destroot.keepdirs-append \ + ${destroot}${prefix}/share/icons/hicolor/${sz}x${sz}/apps +} + +destroot.keepdirs-append \ + ${destroot}${prefix}/share/icons/hicolor/scalable/apps + +use_configure no + +build {} + +destroot { + select::install octave ${filespath}/base + select::install octave ${filespath}/none +} + +livecheck.type none Property changes on: trunk/dports/sysutils/octave_select/Portfile ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: trunk/dports/sysutils/octave_select/files/base =================================================================== --- trunk/dports/sysutils/octave_select/files/base (rev 0) +++ trunk/dports/sysutils/octave_select/files/base 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,30 @@ +bin/mkoctfile +bin/octave +bin/octave-cli +bin/octave-config +share/man/man1/mkoctfile.1.gz +share/man/man1/octave-cli.1.gz +share/man/man1/octave-config.1.gz +share/man/man1/octave.1.gz +share/info/liboctave.info +share/info/octave.info +share/info/octave.info-1 +share/info/octave.info-2 +share/info/octave.info-3 +share/info/octave.info-4 +share/info/octave.info-5 +share/info/octave.info-6 +share/info/octave.info-7 +share/info/octave.info-8 +share/info/octave.info-9 +share/appdata/www.octave.org-octave.appdata.xml +share/icons/hicolor/16x16/apps/octave.png +share/icons/hicolor/22x22/apps/octave.png +share/icons/hicolor/24x24/apps/octave.png +share/icons/hicolor/32x32/apps/octave.png +share/icons/hicolor/48x48/apps/octave.png +share/icons/hicolor/64x64/apps/octave.png +share/icons/hicolor/128x128/apps/octave.png +share/icons/hicolor/256x256/apps/octave.png +share/icons/hicolor/512x512/apps/octave.png +share/icons/hicolor/scalable/apps/octave.svg Added: trunk/dports/sysutils/octave_select/files/none =================================================================== --- trunk/dports/sysutils/octave_select/files/none (rev 0) +++ trunk/dports/sysutils/octave_select/files/none 2016-01-03 07:40:58 UTC (rev 144150) @@ -0,0 +1,30 @@ +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +-
participants (1)
-
mcalhoun@macports.org