Feature/test externalized iotdb tools thrift (#10893)

This commit is contained in:
Christofer Dutz 2023-08-24 11:13:39 +02:00 committed by GitHub
parent e9fe0b1082
commit 97a5ab693b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 28 additions and 608 deletions

17
.gitattributes vendored
View File

@ -1 +1,18 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
* text=auto eol=lf

View File

@ -66,10 +66,10 @@ jobs:
# Explicitly using mvnw here as the build requires maven 3.9 and the default installation is older
# Explicitly using "install" instead of package in order to be sure we're using libs built on this machine
# (was causing problems on windows, but could cause problem on linux, when updating the thrift module)
run: ./mvnw clean install -P with-tools,with-cpp -pl distribution -am -DskipTests
run: ./mvnw clean install -P with-cpp -pl distribution -am -DskipTests
- name: Test with Maven
# Explicitly using mvnw here as the build requires maven 3.9 and the default installation is older
run: ./mvnw clean verify -P with-tools,with-cpp -pl iotdb-client/client-cpp -am
run: ./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp -am
- name: Show test result
if: failure()
run: cat iotdb-client/client-cpp/target/build/test/Testing/Temporary/LastTest_*.log
@ -96,11 +96,11 @@ jobs:
# Explicitly using mvnw here as the build requires maven 3.9 and the default installation is older
# Explicitly using "install" instead of package in order to be sure we're using libs built on this machine
# (was causing problems on windows, but could cause problem on linux, when updating the thrift module)
run: ./mvnw clean install -P with-tools,with-cpp -pl distribution -am -DskipTests
run: ./mvnw clean install -P with-cpp -pl distribution -am -DskipTests
- name: Test with Maven
shell: bash
# Explicitly using mvnw here as the build requires maven 3.9 and the default installation is older
run: ./mvnw clean verify -P with-tools,with-cpp -pl iotdb-client/client-cpp -am
run: ./mvnw clean verify -P with-cpp -pl iotdb-client/client-cpp -am
- name: Upload Artifact
if: failure()
uses: actions/upload-artifact@v3

View File

@ -97,9 +97,9 @@
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.iotdb</groupId>
<groupId>org.apache.iotdb.tools</groupId>
<artifactId>iotdb-tools-thrift</artifactId>
<version>${project.version}</version>
<version>${iotdb-tools-thrift.version}</version>
<classifier>${os.classifier}</classifier>
<type>zip</type>
<overWrite>true</overWrite>

View File

@ -77,9 +77,9 @@
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.apache.iotdb</groupId>
<groupId>org.apache.iotdb.tools</groupId>
<artifactId>iotdb-tools-thrift</artifactId>
<version>${project.version}</version>
<version>${iotdb-tools-thrift.version}</version>
<classifier>${os.classifier}</classifier>
<type>zip</type>
<overWrite>true</overWrite>

11
pom.xml
View File

@ -24,7 +24,7 @@
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>23</version>
<version>30</version>
</parent>
<groupId>org.apache.iotdb</groupId>
<artifactId>iotdb-parent</artifactId>
@ -112,6 +112,8 @@
we'll stay at 0.14.1.
-->
<thrift.version>0.14.1</thrift.version>
<!-- This is the version of the thrift binary -->
<iotdb-tools-thrift.version>0.14.1.0</iotdb-tools-thrift.version>
<airline.version>0.8</airline.version>
<jackson.version>2.13.5</jackson.version>
<disrupter.version>3.4.2</disrupter.version>
@ -1368,13 +1370,6 @@
<module>integration-test</module>
</modules>
</profile>
<!-- Enable the building of the tools (Currently this only adds building of the Thrift module) -->
<profile>
<id>with-tools</id>
<modules>
<module>tools</module>
</modules>
</profile>
<!-- Make sure the source assembly has the right name -->
<profile>
<id>apache-release</id>

View File

@ -1,183 +0,0 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Building compile tools
## Requirements
* Java 8+
* Maven 3.5+
* Flex
* Bison 2.7+
* Boost
* OpenSSL 1.0+
### Mac
- Bison
Bison 2.3 is preinstalled on OSX, but this version is too low.
When building Thrift with Bison 2.3, the following error would pop out:
```invalid directive: '%code'```
For such case, please update `Bison`:
```
brew install bison
brew link bison --force
```
Then, you need to tell the OS where the new bison is.
For Bash users:
```
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
```
For zsh users:
```
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.zshrc
```
- Boost
Please make sure a relative new version of Boost is ready on your machine.
If no Boost available, install the latest version of Boost:
```
brew install boost
brew link boost
```
- OpenSSL
Make sure the Openssl libraries has been install on your Mac.
The default Openssl include file search path is "/usr/local/opt/openssl/include".
If Openssl header files can not be found when building Thrift, please add option
```-Dopenssl.include.dir=""``` to specify the correct directory on your Mac.
### Linux
#### Additional requirements
* g++
To install all dependencies, run:
Debian/Ubuntu:
```
sudo apt-get install gcc g++ bison flex libboost-all-dev
```
CentOS:
```
yum install gcc g++ bison flex boost-devel
```
### Windows
Make sure a complete Windows C++ building environment is prepared on your machine.
MSVC, MinGW... are supported.
If you are using MS Visual Studio, remember to install Visual Studio C/C++ IDE and compiler(supporting CMake, Clang, MinGW).
#### Flex and Bison
Windows Flex and Bison could be downloaded from SourceForge: https://sourceforge.net/projects/winflexbison/
After downloaded, please rename the executables to flex.exe and bison.exe and add them to "PATH" environment variables.
#### Boost
For Boost, please download from the official website: https://www.boost.org/users/download/
Then build Boost by executing bootstrap.bat and b2.exe.
```
bootstrap.bat
.\b2.exe
```
To help CMake find your Boost libraries on windows, you should set `-Dboost.include.dir=${your boost header folder} -Dboost.library.dir=${your boost lib (stage) folder}`
to your mvn build command.
#### Cmake generator on Windows
There is a long list of supported Cmake generators on Windows environment.
```
Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
Borland Makefiles = Generates Borland makefiles.
* NMake Makefiles = Generates NMake makefiles.
NMake Makefiles JOM = Generates JOM makefiles.
MSYS Makefiles = Generates MSYS makefiles.
MinGW Makefiles = Generates a make file for use with
mingw32-make.
Unix Makefiles = Generates standard UNIX makefiles.
Green Hills MULTI = Generates Green Hills MULTI files
(experimental, work-in-progress).
Ninja = Generates build.ninja files.
Ninja Multi-Config = Generates build-<Config>.ninja files.
Watcom WMake = Generates Watcom WMake makefiles.
CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
CodeBlocks - NMake Makefiles = Generates CodeBlocks project fi
```
(the list is gotten by `cmake --help`.)
When building client-cpp project, use -Dcmake.generator="" option to specify a Cmake generator.
E.g., `mvn package -Dcmake.generator="Visual Studio 15 2017 [arch]"`
### FAQ
#### on Mac
if you occur some errors when compiling thrift source code, try to downgrade your xcode-commandline from 12 to 11.5
see https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file/65518087#65518087
#### on Windows
When Building Thrift and downloading packages via "wget", a possible annoying issue may occur with
error message looks like:
```
Failed to delete cached file C:\Users\Administrator\.m2\repository\.cache\download-maven-plugin\index.ser
```
Possible fix:
- Try to delete the ".m2\repository\\.cache\" directory and try again.
- Add "\<skipCache>true\</skipCache>" configuration to the download-maven-plugin maven phase that complains this error.

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.iotdb</groupId>
<artifactId>iotdb-parent</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
<artifactId>iotdb-tools</artifactId>
<packaging>pom</packaging>
<name>IoTDB: Tools</name>
<modules>
<module>thrift</module>
</modules>
</project>

View File

@ -1,312 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.iotdb</groupId>
<artifactId>iotdb-tools</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
<artifactId>iotdb-tools-thrift</artifactId>
<packaging>pom</packaging>
<name>IoTDB: Tools: Thrift</name>
<description>Local build of the Apache Thrift compiler.</description>
<properties>
<thrift.with.cpp>ON</thrift.with.cpp>
<thrift.with.go>ON</thrift.with.go>
<thrift.with.python>ON</thrift.with.python>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<executions>
<!-- Download the sources for building the thrift compiler -->
<execution>
<id>get-thrift</id>
<phase>generate-sources</phase>
<goals>
<goal>wget</goal>
</goals>
<configuration>
<url>https://archive.apache.org/dist/thrift/${thrift.version}/thrift-${thrift.version}.tar.gz</url>
<unpack>true</unpack>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<executions>
<!-- Uses a CMake generator to generate the build using the build tool of choice -->
<execution>
<id>cmake-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>${cmake.generator}</generator>
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
<targetPath>${project.build.directory}/build</targetPath>
<options>
<!-- Disable testing for now -->
<option>-DBUILD_TESTING=OFF</option>
<!-- Enable and disable the building of code generators for different languages -->
<option>-DTHRIFT_COMPILER_AS3=OFF</option>
<option>-DTHRIFT_COMPILER_C_GLIB=OFF</option>
<option>-DTHRIFT_COMPILER_CL=OFF</option>
<option>-DTHRIFT_COMPILER_CPP=${thrift.with.cpp}</option>
<option>-DTHRIFT_COMPILER_D=OFF</option>
<option>-DTHRIFT_COMPILER_DART=OFF</option>
<option>-DTHRIFT_COMPILER_DELPHI=OFF</option>
<option>-DTHRIFT_COMPILER_ERL=OFF</option>
<option>-DTHRIFT_COMPILER_GO=${thrift.with.go}</option>
<option>-DTHRIFT_COMPILER_GV=OFF</option>
<option>-DTHRIFT_COMPILER_HAXE=OFF</option>
<option>-DTHRIFT_COMPILER_HS=OFF</option>
<option>-DTHRIFT_COMPILER_HTML=OFF</option>
<option>-DTHRIFT_COMPILER_JAVA=ON</option>
<option>-DTHRIFT_COMPILER_JAVAME=ON</option>
<option>-DTHRIFT_COMPILER_JSON=OFF</option>
<option>-DTHRIFT_COMPILER_LUA=OFF</option>
<option>-DTHRIFT_COMPILER_NETSTD=ON</option>
<option>-DTHRIFT_COMPILER_OCAML=OFF</option>
<option>-DTHRIFT_COMPILER_PERL=OFF</option>
<option>-DTHRIFT_COMPILER_PHP=OFF</option>
<option>-DTHRIFT_COMPILER_PY=${thrift.with.python}</option>
<option>-DTHRIFT_COMPILER_RB=OFF</option>
<option>-DTHRIFT_COMPILER_RS=OFF</option>
<option>-DTHRIFT_COMPILER_ST=OFF</option>
<option>-DTHRIFT_COMPILER_SWIFT=OFF</option>
<option>-DTHRIFT_COMPILER_XML=OFF</option>
<option>-DTHRIFT_COMPILER_XSD=OFF</option>
<!-- Enable and disable the building of libs for different languages -->
<option>-DBUILD_C_GLIB=OFF</option>
<option>-DBUILD_CPP=${thrift.with.cpp}</option>
<!-- Don't build Java, as the libs are available via Maven -->
<option>-DBUILD_JAVA=OFF</option>
<option>-DBUILD_NODEJS=OFF</option>
<option>-DBUILD_PYTHON=${thrift.with.python}</option>
<option>-DBUILD_JAVASCRIPT=OFF</option>
<option>-DBUILD_HASKELL=OFF</option>
<option>-DWITH_SHARED_LIB=OFF</option>
<!-- Generate libthrift.a to compile IoTDB Session -->
<option>-DWITH_STATIC_LIB=ON</option>
<option>-DCMAKE_POSITION_INDEPENDENT_CODE=ON</option>
</options>
</configuration>
</execution>
<!-- Actually executes the build -->
<execution>
<id>cmake-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<config>${cmake.build.type}</config>
<!-- The directory where the "generate" step generated the build configuration -->
<projectDirectory>${project.build.directory}/build</projectDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!--
Bundle up the needed parts into an archive for this architecture
The bundle contains the Thrift executable, the shared libraries and the header-files,
which are all needed to build the client
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<descriptors>
<descriptor>src/main/assembly/thrift.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>.os-unix</id>
<activation>
<os>
<family>unix</family>
<name>Linux</name>
<arch>!aarch64</arch>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<executions>
<!-- Uses a CMake generator to generate the build using the build tool of choice -->
<execution>
<id>cmake-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>${cmake.generator}</generator>
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
<targetPath>${project.build.directory}/build</targetPath>
<options combine.children="append">
<!-- Tell the linker to build statically linked binaries -->
<option>-DCMAKE_EXE_LINKER_FLAGS=-static</option>
<option>-DZLIB_USE_STATIC_LIBS=ON</option>
<option>-DOPENSSL_USE_STATIC_LIBS=ON</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>.os-unix-arm</id>
<activation>
<os>
<family>unix</family>
<name>Linux</name>
<arch>aarch64</arch>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<executions>
<!-- Uses a CMake generator to generate the build using the build tool of choice -->
<execution>
<id>cmake-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>${cmake.generator}</generator>
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
<targetPath>${project.build.directory}/build</targetPath>
<options combine.children="append">
<!-- Tell the linker to build statically linked binaries -->
<option>-DCMAKE_EXE_LINKER_FLAGS=-static</option>
<option>-DZLIB_USE_STATIC_LIBS=ON</option>
<option>-DOPENSSL_USE_STATIC_LIBS=ON</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>.os-mac</id>
<activation>
<os>
<family>mac</family>
<arch>!aarch64</arch>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<executions>
<!-- Uses a CMake generator to generate the build using the build tool of choice -->
<execution>
<id>cmake-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>${cmake.generator}</generator>
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
<targetPath>${project.build.directory}/build</targetPath>
<options combine.children="append">
<!-- Specify new version Bison path for Mac-OS, as the default version is too old -->
<option>-DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>.os-mac-arm</id>
<activation>
<os>
<family>mac</family>
<arch>aarch64</arch>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.googlecode.cmake-maven-project</groupId>
<artifactId>cmake-maven-plugin</artifactId>
<executions>
<!-- Uses a CMake generator to generate the build using the build tool of choice -->
<execution>
<id>cmake-generate</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generator>${cmake.generator}</generator>
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
<targetPath>${project.build.directory}/build</targetPath>
<options combine.children="append">
<!-- Specify new version Bison path for Mac-OS, as the default version is too old -->
<option>-DBISON_EXECUTABLE=/opt/homebrew/opt/bison/bin/bison</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${os.classifier}</id>
<formats>
<format>zip</format>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<!-- Include the executable -->
<fileSet>
<directory>${project.build.directory}/build/compiler/cpp/bin</directory>
<!-- Make the file executable -->
<fileMode>0755</fileMode>
<includes>
<include>**</include>
</includes>
<outputDirectory>bin</outputDirectory>
</fileSet>
<!-- Include the shared-libraries -->
<fileSet>
<directory>${project.build.directory}/build</directory>
<includes>
<include>lib/*.a</include>
<include>lib/Release/*.lib</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
<!-- Include the header-files -->
<fileSet>
<directory>${project.build.directory}/thrift-${thrift.version}/lib/cpp/src</directory>
<includes>
<include>**</include>
</includes>
<outputDirectory>include</outputDirectory>
</fileSet>
<!-- Include the config.h -->
<fileSet>
<directory>${project.build.directory}/build/thrift</directory>
<includes>
<include>config.h</include>
</includes>
<outputDirectory>include/thrift</outputDirectory>
</fileSet>
</fileSets>
</assembly>