Revision: 119608 https://trac.macports.org/changeset/119608 Author: mk@macports.org Date: 2014-05-02 03:57:29 -0700 (Fri, 02 May 2014) Log Message: ----------- rkward: update according to #32837 Modified Paths: -------------- trunk/dports/kde/rkward/Portfile Added Paths: ----------- trunk/dports/kde/rkward/files/ trunk/dports/kde/rkward/files/patch-rkward-rbackend-rkstructuregetter.cpp.diff Modified: trunk/dports/kde/rkward/Portfile =================================================================== --- trunk/dports/kde/rkward/Portfile 2014-05-02 09:55:17 UTC (rev 119607) +++ trunk/dports/kde/rkward/Portfile 2014-05-02 10:57:29 UTC (rev 119608) @@ -2,15 +2,17 @@ # $Id$ PortSystem 1.0 +PortGroup cmake 1.0 fetch.type svn -svn.url http://svn.code.sf.net/p/rkward/code/branches/release_branches/rkward_0.6.1 +name rkward +version 0.6.1 +revision 2 +svn.url http://svn.code.sf.net/p/rkward/code/branches/release_branches/rkward_${version} svn.revision 4635 -worksrcdir ${workpath}/rkward_0.6.1 +patchfiles patch-rkward-rbackend-rkstructuregetter.cpp.diff +worksrcdir ${name}_${version} -name rkward conflicts rkward-devel -version 0.6.1 -revision 1 categories kde kde4 math science maintainers hhu.de:meik.michalke license GPL-2 @@ -24,45 +26,27 @@ homepage http://rkward.sourceforge.net -master_sites https://sourceforge.net/projects/rkward/files/Current_Stable_Releases - -PortGroup cmake 1.0 - depends_lib port:kdelibs4 \ port:kate \ + port:okular \ port:R -# add port:okular once the graphics device is fully functional -# this needs port:poppler with +qt4 +quartz varaints which cannot be -# specified with depends_lib-append -variant okular description {Add okular for nice PDF handling} { - depends_lib-append port:okular -} - -if {${configure.compiler} == "clang"} { - # force the use of gcc 4.8 to be able to link with R-framework - depends_lib-append port:gcc48 - configure.compiler macports-gcc-4.8 - configure.objc /usr/bin/gcc - configure.env-append "OBJCXX=${configure.objc}" -} - post-extract { - # creates the build dir if it doesn't exist - # this won't return errors if directory is already there - file mkdir ${worksrcdir}/build + file mkdir ${worksrcpath}/build } -configure.dir ${worksrcdir}/build +configure.dir ${worksrcpath}/build configure.args-append \ -DNO_R_XML=1 \ -DRKVERSION_NUMBER=${version} \ -DBUNDLE_INSTALL_DIR=${applications_dir} \ - -DR_EXECUTABLE=${prefix}/Library/Frameworks/R.framework/Resources/R -# work around moved Qt include dir -if { ![file exists ${prefix}/include/Qt/qglobal.h] && [file exists ${prefix}/include/QtCore/qglobal.h] } { - configure.args-append -DQT_QT_INCLUDE_DIR=${prefix}/include/QtCore + -DR_EXECUTABLE=${frameworks_dir}/R.framework/Resources/R + +variant debug description {Add full debugging support} { + depends_lib-append port:valgrind } -configure.cmd cmake .. -build.dir ${worksrcdir}/build +configure.post_args .. + +build.dir ${worksrcpath}/build + Added: trunk/dports/kde/rkward/files/patch-rkward-rbackend-rkstructuregetter.cpp.diff =================================================================== --- trunk/dports/kde/rkward/files/patch-rkward-rbackend-rkstructuregetter.cpp.diff (rev 0) +++ trunk/dports/kde/rkward/files/patch-rkward-rbackend-rkstructuregetter.cpp.diff 2014-05-02 10:57:29 UTC (rev 119608) @@ -0,0 +1,47 @@ +Index: rkward/rbackend/rkstructuregetter.cpp +=================================================================== +--- rkward/rbackend/rkstructuregetter.cpp (revision 4653) ++++ rkward/rbackend/rkstructuregetter.cpp (revision 4660) +@@ -193,22 +193,33 @@ + + // get classes + SEXP classes_s; ++ QStringList classes; + + if ((TYPEOF (value) == LANGSXP) || (TYPEOF (value) == SYMSXP)) { // if it's a call, we should NEVER send it through eval +- extern SEXP R_data_class (SEXP, Rboolean); +- classes_s = R_data_class (value, (Rboolean) 0); ++ // stripped down and adjusted from R_data_class ++ PROTECT (classes_s = Rf_getAttrib (value, R_ClassSymbol)); ++ if (Rf_length (classes_s)) classes = RKRSupport::SEXPToStringList(classes_s); ++ UNPROTECT (1); ++ if (classes.isEmpty ()) { ++ if (TYPEOF (value) == LANGSXP) { ++ SEXP symb = PROTECT (CAR (value)); ++ QString cl; ++ if (TYPEOF (symb) == SYMSXP) cl = CHAR (PRINTNAME (symb)); ++ UNPROTECT (1); ++ if ((cl != "if") && (cl != "while") && (cl != "for") && (cl != "=") && (cl != "<-") && (cl != "(") && (cl != "{")) cl = "call"; ++ classes = QStringList (cl); ++ } else { ++ classes = QStringList ("name"); ++ } ++ } + + REPROTECT (value = Rf_coerceVector (value, EXPRSXP), value_index); // make sure the object is safe for everything to come +- +- PROTECT (classes_s); + } else { +- classes_s = RKRSupport::callSimpleFun (class_fun, value, baseenv); +- PROTECT (classes_s); ++ PROTECT (classes_s = RKRSupport::callSimpleFun (class_fun, value, baseenv)); ++ classes = RKRSupport::SEXPToStringList (classes_s); ++ UNPROTECT (1); + } + +- QStringList classes = RKRSupport::SEXPToStringList (classes_s); +- UNPROTECT (1); /* classes_s */ +- + // store classes + RData *classdata = new RData; + classdata->setData (classes);