diff options
author | Alex Dahl | 2016-12-26 19:11:18 -0600 |
---|---|---|
committer | Alex Dahl | 2016-12-26 19:11:18 -0600 |
commit | 3d5b272c308755b5407838eb7fff07aea62800ae (patch) | |
tree | 02f73a443870d7363264f3bbbc40fbc758b4246b | |
parent | 84c31d461ccb35601df291b54c032bfc9de884d1 (diff) | |
download | aur-3d5b272c308755b5407838eb7fff07aea62800ae.tar.gz |
Updated to compile. Not sure if properly installed. Hacked together fix for SeExpr v3 port.
-rw-r--r-- | CMakeLists.txt.patch | 17 | ||||
-rw-r--r-- | PKGBUILD | 10 | ||||
-rw-r--r-- | SeExprv3.patch | 243 |
3 files changed, 257 insertions, 13 deletions
diff --git a/CMakeLists.txt.patch b/CMakeLists.txt.patch index b62e159903c0..f506c4632e64 100644 --- a/CMakeLists.txt.patch +++ b/CMakeLists.txt.patch @@ -1,6 +1,8 @@ ---- /partio/CMakeLists.txt 2016-06-12 01:38:48.822497008 -0400 -+++ /partio/CMakeLists.txt 2016-06-12 01:36:36.842253172 -0400 -@@ -103,7 +103,7 @@ +diff --git /partio/CMakeLists.txt /partio/CMakeLists.txt +index fdab418..c6a5a4b 100644 +--- /partio/CMakeLists.txt ++++ /partio/CMakeLists.txt +@@ -103,11 +103,11 @@ SET( PARTIO_LIBRARIES partio ${ZLIB_LIBRARY} ) # make it so partio can be found INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/lib ) @@ -9,11 +11,8 @@ SET(SEEXPR_INCLUDE_PATH ${SEEXPR_BASE}/include) SET(SEEXPR_LIBDIR ${CMAKE_INSTALL_LIBDIR}) SET(SEEXPR_LINK_PATH ${SEEXPR_BASE}/${SEEXPR_LIBDIR}) -@@ -114,7 +114,5 @@ - ADD_SUBDIRECTORY (src/lib) - ADD_SUBDIRECTORY (src/tools) - ADD_SUBDIRECTORY (src/py) --ADD_SUBDIRECTORY (src/tests) --ADD_SUBDIRECTORY (src/doc) +-SET(SEEXPR_LIBS "SeExpr") ++SET(SEEXPR_LIBS "SeExpr2") + ## Traverse subdirectories @@ -1,4 +1,4 @@ -# Maintainer: meepzh <meep.aur@meepzh.com> +# Maintainer: Alex Dahl <adahl1@umbc.edu> pkgname=partio-git pkgver=1.1.0.r73.g7f3e0d1 pkgrel=4 @@ -13,8 +13,8 @@ optdepends=('python2: Python interface support' makedepends=('cmake>=2.4.6' 'git') provides=("${pkgname%-git}") conflicts=("${pkgname%-git}") -source=('git+https://github.com/wdas/partio.git' 'CMakeLists.txt.patch' 'py_CMakeLists.txt.patch') -md5sums=('SKIP' '795fd5b88af781f3d94d51bea44518f3' '306cacec7af0af3adb7876c288881062') +source=('git+https://github.com/wdas/partio.git' 'CMakeLists.txt.patch' 'py_CMakeLists.txt.patch' 'SeExprv3.patch') +md5sums=('SKIP' '2f7a6ddc41a5b7d9134820f877b0d2b3' '306cacec7af0af3adb7876c288881062' '92029f98bc024ed5034a299590906f1d') pkgver() { cd "$srcdir/${pkgname%-git}" @@ -24,6 +24,8 @@ pkgver() { prepare() { cd "$srcdir" + # Path PartioSe for SeExpr v3 until source fixed + patch -p1 -i "$srcdir/SeExprv3.patch" # Fix SeExpr dependency and remove tests patch -p1 -i "$srcdir/CMakeLists.txt.patch" # Change Python version to 2 to work with SeExpr @@ -32,7 +34,7 @@ prepare() { build() { cd "$srcdir/${pkgname%-git}" - mkdir build + mkdir -p build cd ./build cmake -DCMAKE_INSTALL_PREFIX=/usr -Wno-dev .. make diff --git a/SeExprv3.patch b/SeExprv3.patch new file mode 100644 index 000000000000..56f185977a45 --- /dev/null +++ b/SeExprv3.patch @@ -0,0 +1,243 @@ +diff --git /partio/src/lib/PartioSe.h /partio/src/lib/PartioSe.h +index 44a434d..02e92ac 100644 +--- /partio/src/lib/PartioSe.h ++++ /partio/src/lib/PartioSe.h +@@ -33,13 +33,17 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + #include <Partio.h> +-#include <SeExpression.h> ++#include <SeExpr2/Expression.h> + #include <map> + + namespace Partio{ + ++using Vec3d = SeExpr2::Vec<double,3>; ++ ++using Vec3dRef= SeExpr2::Vec<double,3,true>; ++ + template<class T> +-class AttribVar:public SeExprVarRef ++class AttribVar:public SeExpr2::ExprVarRef + { + Partio::ParticlesDataMutable* parts; + Partio::ParticleAttribute attr; +@@ -48,11 +52,11 @@ class AttribVar:public SeExprVarRef + public: + AttribVar(Partio::ParticlesDataMutable* parts, + Partio::ParticleAttribute attr,int& currentIndex) +- :parts(parts),attr(attr),currentIndex(currentIndex),clampedCount(std::min(attr.count,3)) ++ :SeExpr2::ExprVarRef(SeExpr2::TypeVec(1).Varying()),parts(parts),attr(attr),currentIndex(currentIndex),clampedCount(std::min(attr.count,3)) + {} + + bool isVec(){return attr.count!=1;} +- void eval(const SeExprVarNode* node,SeVec3d& result){ ++ void eval(double* result) { + const T* ptr=parts->data<T>(attr,currentIndex); + //std::cerr<<"in eval for "<<attr.name<<" count is "<<clampedCount<<" cur "<<currentIndex<<std::endl; + for(int k=0;k<clampedCount;k++){ +@@ -63,22 +67,36 @@ public: + result[k]=0; + } + } ++ void eval(const char** resultStr) {} ++ /// void eval(const SeExpr2::ExprVarNode* node,Vec3d& result){ ++ /// const T* ptr=parts->data<T>(attr,currentIndex); ++ /// //std::cerr<<"in eval for "<<attr.name<<" count is "<<clampedCount<<" cur "<<currentIndex<<std::endl; ++ /// for(int k=0;k<clampedCount;k++){ ++ /// result[k]=ptr[k]; ++ /// } ++ /// // set any remaining fields (i.e. if clampedCount is 2) ++ /// for(int k=clampedCount;k<3;k++){ ++ /// result[k]=0; ++ /// } ++ /// } + }; + +-struct SimpleVar:public SeExprVarRef{ ++struct SimpleVar:public SeExpr2::ExprVarRef{ + double val; +- SimpleVar():val(0){} ++ SimpleVar():SeExpr2::ExprVarRef(SeExpr2::TypeVec(1).Varying()), val(0){} + bool isVec(){return false;} +- void eval(const SeExprVarNode* node,SeVec3d& result){ +- result[0]=result[1]=result[2]=val; +- } ++ void eval(double* result) {result[0] = val;} ++ void eval(const char** resultStr) {} ++ /// void eval(const SeExprVarNode* node,Vec3d& result){ ++ /// result[0]=result[1]=result[2]=val; ++ /// } + }; + + /// Class that maps back to the partio data + template<class T> class VarToPartio; + + /// NOTE: This class is experimental and may be deleted/modified in future versions +-class PartioSe:public SeExpression{ ++class PartioSe:public SeExpr2::Expression{ + bool isPaired; + int currentIndex; + Partio::ParticleAttribute pairH1,pairH2; +@@ -98,7 +116,8 @@ class PartioSe:public SeExpression{ + mutable SimpleVar indexVar,countVar,timeVar; + + public: +- typedef SeExpression::LocalVarTable::const_iterator LocalVarTableIterator; ++ typedef std::map<std::string, SeExpr2::ExprVarRef*> LocalVarTable; ++ typedef LocalVarTable::const_iterator LocalVarTableIterator; + + PartioSe(Partio::ParticlesDataMutable* parts,const char* expr); + PartioSe(Partio::ParticlesDataMutable* partsPairing,Partio::ParticlesDataMutable* parts,const char* expr); +@@ -110,7 +129,7 @@ public: + void run(int i); + bool runRange(int istart,int iend); + void setTime(float val); +- SeExprVarRef* resolveVar(const std::string& s) const; ++ SeExpr2::ExprVarRef* resolveVar(const std::string& s) const; + private: + PartioSe(const PartioSe&); + PartioSe& operator=(const PartioSe&); +diff --git /partio/src/lib/PartioSe.cpp /partio/src/lib/PartioSe.cpp +index cd99686..ebefb43 100644 +--- /partio/src/lib/PartioSe.cpp ++++ /partio/src/lib/PartioSe.cpp +@@ -40,13 +40,13 @@ namespace Partio{ + template<class T> class VarToPartio + { + Partio::ParticlesDataMutable* parts; +- const SeExprLocalVarRef* local; ++ SeExpr2::ExprVarRef* local; + Partio::ParticleAttribute attr; + int& currentIndex; + int clampedCount; + + public: +- VarToPartio(Partio::ParticlesDataMutable* parts,const SeExprLocalVarRef* local, ++ VarToPartio(Partio::ParticlesDataMutable* parts, SeExpr2::ExprVarRef* local, + Partio::ParticleAttribute attr,int& currentIndex) + :parts(parts),local(local),attr(attr),currentIndex(currentIndex), + clampedCount(std::min(3,attr.count)) +@@ -55,8 +55,11 @@ public: + + void mapBack(){ + T* ptr=parts->dataWrite<T>(attr,currentIndex); ++ double* tmp=new double[clampedCount]; ++ local->eval(tmp); + for(int k=0;k<clampedCount;k++){ +- ptr[k]=local->val[k]; ++ /// ptr[k]=local->val[k]; ++ ptr[k]=tmp[k]; + } + if(clampedCount == 1) for(int k=clampedCount;k<attr.count;k++) + ptr[k]=ptr[clampedCount-1]; +@@ -84,7 +87,7 @@ void PartioSe::addSet(const char* suffix,Partio::ParticlesDataMutable* parts,int + } + + PartioSe::PartioSe(Partio::ParticlesDataMutable* parts,Partio::ParticlesDataMutable* partsPairing,const char* expression) +-:SeExpression(expression),parts(parts),partsPairing(partsPairing),isPaired(true) ++:SeExpr2::Expression(expression),parts(parts),partsPairing(partsPairing),isPaired(true) + { + parts->attributeInfo("p1",pairH1); + parts->attributeInfo("p2",pairH2); +@@ -95,41 +98,41 @@ PartioSe::PartioSe(Partio::ParticlesDataMutable* parts,Partio::ParticlesDataMuta + // checkout what we build + isValid(); + // go through local variables and look for exports +- const SeExpression::LocalVarTable& vars=getLocalVars(); +- typedef SeExpression::LocalVarTable::const_iterator LocalVarTableIterator; +- for(LocalVarTableIterator it=vars.begin(),itend=vars.end();it != itend;++it){ +- //std::cerr<<"assignment of "<<it->first<<std::endl; +- size_t idx=it->first.rfind("_"); +- std::string realName=it->first; +- int whichNum; +- if(idx != std::string::npos){ +- realName=it->first.substr(0,idx); +- whichNum=atoi(it->first.substr(idx+1).c_str()); +- //std::cerr<<"adding as stripped pairing "<<realName<<" which "<<whichNum<<std::endl; +- if(whichNum != 1 && whichNum != 2){ +- std::cerr<<"Expect _1 and _2 on the end of particle variables got "<<whichNum<<std::endl;; +- }else{ +- int *idxPtr=whichNum == 1 ? &pairIndex1 : &pairIndex2; +- addExport(realName,it,partsPairing,*idxPtr); +- } +- }else{ +- //std::cerr<<"adding as normal pairing "<<realName<<std::endl; +- addExport(realName,it,parts,currentIndex); +- } +- } ++ /// const LocalVarTable& vars=getLocalVars(); ++ /// typedef LocalVarTable::const_iterator LocalVarTableIterator; ++ /// for(LocalVarTableIterator it=vars.begin(),itend=vars.end();it != itend;++it){ ++ /// //std::cerr<<"assignment of "<<it->first<<std::endl; ++ /// size_t idx=it->first.rfind("_"); ++ /// std::string realName=it->first; ++ /// int whichNum; ++ /// if(idx != std::string::npos){ ++ /// realName=it->first.substr(0,idx); ++ /// whichNum=atoi(it->first.substr(idx+1).c_str()); ++ /// //std::cerr<<"adding as stripped pairing "<<realName<<" which "<<whichNum<<std::endl; ++ /// if(whichNum != 1 && whichNum != 2){ ++ /// std::cerr<<"Expect _1 and _2 on the end of particle variables got "<<whichNum<<std::endl;; ++ /// }else{ ++ /// int *idxPtr=whichNum == 1 ? &pairIndex1 : &pairIndex2; ++ /// addExport(realName,it,partsPairing,*idxPtr); ++ /// } ++ /// }else{ ++ /// //std::cerr<<"adding as normal pairing "<<realName<<std::endl; ++ /// addExport(realName,it,parts,currentIndex); ++ /// } ++ /// } + } + + PartioSe::PartioSe(Partio::ParticlesDataMutable* parts,const char* expression) +-:SeExpression(expression),parts(parts),partsPairing(0),isPaired(false) ++:SeExpr2::Expression(expression),parts(parts),partsPairing(0),isPaired(false) + { + addSet("",parts,currentIndex); + isValid(); +- const SeExpression::LocalVarTable& vars=getLocalVars(); +- typedef SeExpression::LocalVarTable::const_iterator LocalVarTableIterator; +- for(LocalVarTableIterator it=vars.begin(),itend=vars.end();it != itend;++it){ +- //std::cerr<<"assignment of "<<it->first<<std::endl; +- addExport(it->first,it,parts,currentIndex); +- } ++ /// const SeExpression::LocalVarTable& vars=getLocalVars(); ++ /// typedef SeExpression::LocalVarTable::const_iterator LocalVarTableIterator; ++ /// for(LocalVarTableIterator it=vars.begin(),itend=vars.end();it != itend;++it){ ++ /// //std::cerr<<"assignment of "<<it->first<<std::endl; ++ /// addExport(it->first,it,parts,currentIndex); ++ /// } + + } + +@@ -138,9 +141,9 @@ void PartioSe::addExport(const std::string& name,LocalVarTableIterator it,Partio + bool isParticleAttr=parts->attributeInfo(name.c_str(),attr); + if(isParticleAttr){ + if(attr.type==Partio::FLOAT || attr.type==Partio::VECTOR){ +- floatVarToPartio.push_back(new VarToPartio<float>(parts,&it->second,attr,setIndex)); ++ floatVarToPartio.push_back(new VarToPartio<float>(parts,it->second,attr,setIndex)); + }else if(attr.type==Partio::INT || attr.type==Partio::INDEXEDSTR){ +- intVarToPartio.push_back(new VarToPartio<int>(parts,&it->second,attr,setIndex)); ++ intVarToPartio.push_back(new VarToPartio<int>(parts,it->second,attr,setIndex)); + }else{ + std::cerr<<"unknown particle attribute type "<<attr.name<<std::endl; + } +@@ -175,7 +178,7 @@ void PartioSe::run(int i){ + std::cerr<<"Index "<<currentIndex<<" Referenced particle index "<<pairIndex1<<" is out of bounds"<<std::endl; + } + } +- SeVec3d value=evaluate(); ++ /// SeExpr2::Vec3d value=evaluate(); + // map data into the particles again + for(IntVarToPartio::iterator it=intVarToPartio.begin(),itend=intVarToPartio.end(); + it!=itend;++it) +@@ -223,7 +226,7 @@ bool PartioSe::runRandom(){ + return true; + } + +-SeExprVarRef* PartioSe::resolveVar(const std::string& s) const{ ++SeExpr2::ExprVarRef* PartioSe::resolveVar(const std::string& s) const{ + { + IntVarMap::iterator it=intVars.find(s); + if(it != intVars.end()) return it->second; |