Hi Xiangdong,

Depending on what parts you are using it might be a bit more. 

In PLC4X I setup a groovy script which checks if everything is in place
https://github.com/apache/plc4x/blob/develop/src/main/script/prerequisiteCheck.groovy

But we don't have a dependency on the Thrift executable as this is built as 
part of our build.
https://github.com/apache/plc4x/tree/develop/tools/thrift

The reason for this is that this is the only way we can ensure the Thrift 
version executed and 
hereby for which the code is generated also matches the Thrift version used in 
the dependencies. 

In contrast to the Java world, in the C world we had a lot of problems with for 
example old bison versions which are typically installed on Macs

If you decided to use thrift and C++ stuff in your project I would strongly 
suggest to also put similar safeguards in place.

But I would suggest to discuss this with the project (On the list), before 
merging it to master.

Chris


Am 16.10.19, 17:47 schrieb "Xiangdong Huang" <saint...@gmail.com>:

    Well, I have to put the work aside temporarily because I do not know how to
    write the CMakeList.txt now...
    I thought that if I have installed CMake and Thrift well, I just need to
    run something like `g++ -o something.cpp -lthrift` in [1] ...
    I was too young to naive...
    
    [1]
    
https://github.com/apache/incubator-iotdb/pull/415/files#diff-2bf8bbbfa32bdb4567f25fcef92e6655
    
    Best,
    -----------------------------------
    Xiangdong Huang
    School of Software, Tsinghua University
    
     黄向东
    清华大学 软件学院
    
    
    Christofer Dutz <christofer.d...@c-ware.de> 于2019年10月16日周三 下午5:25写道:
    
    > Hi Xiangdong,
    >
    > glad you like it, however I would suggest to caution.
    >
    > While it is possible to do it as we did, it does come with a downside (As
    > probably all multi-language projects know).
    > It increases complexity of the build and it increases the complexity of
    > setting up the development environment and it increases the build time.
    >
    > We set up quite a bit of tooling to keep the users from stumbling into
    > unwanted pits, but still the plc4x community is considering the current
    > build to be too complex.
    >
    > So I am happy to help you with this, but I would like you to think about
    > the implications and discuss them in the community first.
    >
    >
    > Chris
    >
    >
    > Am 16.10.19, 11:16 schrieb "Xiangdong Huang" <saint...@gmail.com>:
    >
    >     Hi,
    >
    >     I read how plc4x organizes the modules and pom files. It is awesome
    > that
    >     using maven to build a so complex project (with many subprojects...).
    >
    >     I'd like to organize IoTDB thrift codes like:
    >
    >     ```
    >     service-rpc/
    >     ├── pom.xml
    >     ├── rpc4cpp
    >     │   └── pom.xml
    >     ├── rpc4java
    >     │   └── pom.xml
    >     ├── src
    >     │   └── main
    >     │       └── thrift
    >     │           └── rpc.thrift
    >     └── target
    >     ```
    >
    >     The organize is quite like plc-tools module. The difference is that, I
    > want
    >     to put the generated codes (defined by
    >     service-rpc/src/main/thrift/rpc.thrift and automatically generated by
    >     plugin in the service-rpc/pom.xml) into rpc4cpp/target,
    > rpc4java/target.
    >
    >     Then, when compiling rpc4cpp module according to rpc4cpp/pom.xml,
    > maven
    >     download cmake and some other binaries to compile the codes under the
    >     rpc4cpp/target.
    >
    >     I think maybe I can follow how plc4x using Maven to compile CPP codes
    >     automatically, and will try it these days.
    >
    >     Best,
    >     -----------------------------------
    >     Xiangdong Huang
    >     School of Software, Tsinghua University
    >
    >      黄向东
    >     清华大学 软件学院
    >
    >
    >     Xiangdong Huang <saint...@gmail.com> 于2019年10月13日周日 上午8:07写道:
    >
    >     > Hi Chris,
    >     >
    >     > Of course I want to compile the generated codes... Please give us
    > help. :D
    >     >
    >     > Best,
    >     > -----------------------------------
    >     > Xiangdong Huang
    >     > School of Software, Tsinghua University
    >     >
    >     >  黄向东
    >     > 清华大学 软件学院
    >     >
    >     >
    >     > Christofer Dutz <christofer.d...@c-ware.de> 于2019年10月12日周六 下午5:06写道:
    >     >
    >     >> Well it generates the api, but doesn't build it as a module,
    > correct?
    >     >>
    >     >> Was not referring to if you wanted to also compile the generated
    > stuff.
    >     >>
    >     >> Chris
    >     >>
    >     >> Holen Sie sich Outlook für Android<https://aka.ms/ghei36>
    >     >>
    >     >> ________________________________
    >     >> From: Xiangdong Huang <saint...@gmail.com>
    >     >> Sent: Saturday, October 12, 2019 9:07:47 AM
    >     >> To: dev@iotdb.apache.org <dev@iotdb.apache.org>
    >     >> Subject: Re: More programming language APIs generated by Thrift
    >     >>
    >     >> Hi Chris,
    >     >>
    >     >> I have used maven plugin to generate these language apis in [1].
    > Are there
    >     >> some other suggestions?
    >     >>
    >     >> [1] https://github.com/apache/incubator-iotdb/pull/445
    >     >>
    >     >> Best,
    >     >> -----------------------------------
    >     >> Xiangdong Huang
    >     >> School of Software, Tsinghua University
    >     >>
    >     >>  黄向东
    >     >> 清华大学 软件学院
    >     >>
    >     >>
    >     >> Christofer Dutz <christofer.d...@c-ware.de> 于2019年10月11日周五
    > 下午3:59写道:
    >     >>
    >     >> > Hi all,
    >     >> >
    >     >> > having done all the Thrift compilation stuff for PLC4X I guess I
    > might
    >     >> be
    >     >> > able to help here.
    >     >> >
    >     >> > Chris
    >     >> >
    >     >> > Am 11.10.19, 09:17 schrieb "Xiangdong Huang" <saint...@gmail.com
    > >:
    >     >> >
    >     >> >     Hi,
    >     >> >
    >     >> >     I notice there are some PRs [2][3] for generating CPP, python
    > apis
    >     >> by
    >     >> > using
    >     >> >     thrift.
    >     >> >
    >     >> >     Actually it can be compiled automatically by Maven.
    >     >> >
    >     >> >     Chris introduced a maven-thrift-plugin several months ago.
    > And, just
    >     >> >     modifying the configuration can archive that..
    >     >> >
    >     >> >     Using PR [1], we can generate cpp, python, and go apis under
    >     >> >     server-rpc/target/generated-sources-{language}.
    >     >> >
    >     >> >     For other PRs, maybe you just need to write examples about
    > how to
    >     >> use
    >     >> > these
    >     >> >     api...  (and some docs?)
    >     >> >
    >     >> >
    >     >> >     [1] https://github.com/apache/incubator-iotdb/pull/445
    >     >> >     [2] https://github.com/apache/incubator-iotdb/pull/444
    >     >> >     [3] https://github.com/apache/incubator-iotdb/pull/415
    >     >> >
    >     >> >     Best,
    >     >> >     -----------------------------------
    >     >> >     Xiangdong Huang
    >     >> >     School of Software, Tsinghua University
    >     >> >
    >     >> >      黄向东
    >     >> >     清华大学 软件学院
    >     >> >
    >     >> >
    >     >> >
    >     >>
    >     >
    >
    >
    >
    

Reply via email to