Skip to content

Commit 643906e

Browse files
Make AbstractSession AutoCloseable (JAVA) and safer close
Enable safe automatic closing of ETP sessions and harden close semantics. - cmake/FetpapiClientUsingFesapi.java: Use try-with-resources for ClientSession so sessions are closed automatically and update messaging to reflect AutoCloseable behavior. - cmake/swigEtp1_2Include.i.in: Expose AbstractSession as java.lang.AutoCloseable via SWIG typemaps, add Java imports, implement a Java close() that calls closeAndBlock() then delete(), and add docs/nodefaultctor placement for AbstractSession. Fix #31 - src/fetpapi/etp/AbstractSession.h: Make the destructor call closeAndBlock() to ensure sockets are closed when instances are destroyed; guard close() and closeAndBlock() against repeated calls and log redundant attempts. These changes prevent resource leaks by making session lifetime management safer and allow Java callers to use try-with-resources for deterministic cleanup.
1 parent 6c9954e commit 643906e

11 files changed

Lines changed: 491 additions & 239 deletions

.github/workflows/github-actions.yml

Lines changed: 52 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -223,31 +223,36 @@ jobs:
223223
- name: Stub `setup.py` check
224224
# It will be generated during CMake run
225225
# https://github.com/pypa/cibuildwheel/issues/1139
226-
run: touch python/setup.py
226+
run: |
227+
touch python/setup.py
228+
cd ${{ runner.temp }}
229+
git clone --branch v2.14.1.0 --depth 1 https://github.com/F2I-Consulting/fesapi.git fesapi-src
230+
pip download fesapi --no-deps --only-binary=:all: --no-cache-dir --no-color
231+
$FESAPI_WHEEL = Get-ChildItem -File "fesapi-*.whl" | Select-Object -First 1 -ExpandProperty FullName
232+
Write-Host ("Found FESAPI_WHEEL: " + $FESAPI_WHEEL)
233+
7z x $FESAPI_WHEEL -o".\fesapi_wheel" -y
234+
$LIB_FESAPI_CPP = Get-ChildItem -Path "$(Get-Location)\fesapi_wheel\fesapi.libs" -Filter 'FesapiCpp*' -File | Select-Object -First 1 -ExpandProperty FullName
235+
Write-Host "Found libFesapiCpp file: " + $LIB_FESAPI_CPP
236+
# Set as environment variable for subsequent steps
237+
echo "LIB_FESAPI_CPP=$LIB_FESAPI_CPP" >> $env:GITHUB_ENV
227238
- name: Build wheels
228239
uses: pypa/cibuildwheel@v3.2.1
229240
env:
230241
CIBW_BUILD: cp38-win_amd64 cp39-win_amd64 cp310-win_amd64 cp311-win_amd64 cp312-win_amd64 cp313-win_amd64
231242
CIBW_ARCHS: auto64
232-
CIBW_BEFORE_ALL: >
233-
%VCPKG_INSTALLATION_ROOT%\vcpkg install boost-uuid minizip hdf5[zlib] &&
234-
cd ${{ runner.temp }} &&
235-
git clone --branch v2.14.1.0 --single-branch https://github.com/F2I-Consulting/fesapi.git ${{ runner.temp }}/fesapi-src &&
236-
mkdir fesapi-build &&
237-
cd fesapi-build &&
238-
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -G"Visual Studio 17 2022" -A x64 -T host=x64 -Wno-dev -Wno-deprecated -DCMAKE_INSTALL_PREFIX=${{ runner.temp }}/fesapi-install ${{ runner.temp }}\fesapi-src &&
239-
cmake --build . --config Release -j2 &&
240-
cmake --build . --config Release --target INSTALL &&
241-
%VCPKG_INSTALLATION_ROOT%\vcpkg install bext-wintls boost-beast boost-url avro-cpp &&
243+
CIBW_BEFORE_ALL_WINDOWS: >
244+
%VCPKG_INSTALLATION_ROOT%\vcpkg install --triplet x64-windows boost-uuid minizip hdf5[zlib] &&
245+
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -G"Visual Studio 17 2022" -A x64 -T host=x64 -Wno-dev -Wno-deprecated ${{ runner.temp }}\fesapi-src &&
242246
cd ${{ runner.temp }} &&
247+
robocopy "fesapi-src\src" "fesapi-src\fesapi" /E /MOVE &&
243248
mkdir fetpapi-build &&
244249
cd fetpapi-build &&
245-
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -G"Visual Studio 17 2022" -A x64 -T host=x64 -Wno-dev -Wno-deprecated -DWITH_FESAPI=TRUE -DFESAPI_ROOT=${{ runner.temp }}/fesapi-install -DWITH_PYTHON_WRAPPING=TRUE -DCMAKE_INSTALL_PREFIX=${{ runner.temp }}/fetpapi-install ${{ github.workspace }} &&
246-
cmake --build . --config Release -j2 &&
250+
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_INSTALLATION_ROOT%\scripts\buildsystems\vcpkg.cmake -G"Visual Studio 17 2022" -A x64 -T host=x64 -Wno-dev -Wno-deprecated -DWITH_FESAPI=TRUE -DFESAPI_INCLUDE_DIR=${{ runner.temp }}\fesapi-src -DFESAPI_LIBRARY_RELEASE=${{ env.LIB_FESAPI_CPP }} -DWITH_PYTHON_WRAPPING=TRUE -DCMAKE_INSTALL_PREFIX==${{ runner.temp }}/fetpapi-install ${{ github.workspace }} &&
251+
cmake --build . --config Release --parallel 2 &&
247252
cmake --build . --config Release --target INSTALL &&
248253
pip install delvewheel
249254
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: >
250-
delvewheel repair --add-path ${{ runner.temp }}\fetpapi-build\Release --add-path ${{ runner.temp }}\fesapi-build\Release --namespace-pkg fetpapi -w {dest_dir} {wheel}
255+
delvewheel repair --add-path ${{ runner.temp }}\fetpapi-build\Release --add-path ${{ runner.temp }}\fesapi.libs --exclude ${{ env.LIB_FESAPI_CPP }} --namespace-pkg fetpapi -w {dest_dir} {wheel}
251256
CIBW_TEST_COMMAND: python ${{github.workspace}}\python\example\etp_client_example.py
252257
with:
253258
package-dir: ./python
@@ -272,43 +277,39 @@ jobs:
272277
CIBW_BUILD: cp38-manylinux_* cp39-manylinux_* cp310-manylinux_* cp311-manylinux_* cp312-manylinux_* cp313-manylinux_*
273278
CIBW_ARCHS: auto64
274279
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
275-
CIBW_BEFORE_ALL: >
276-
yum install -y wget gcc-c++ boost-devel openssl-devel &&
277-
yum search epel-release &&
278-
yum info epel-release &&
279-
yum install -y epel-release &&
280-
yum --enablerepo=epel install -y minizip1.2-devel cmake3 &&
281-
cd / &&
282-
wget --no-verbose https://support.hdfgroup.org/releases/hdf5/v2_0/v2_0_0/downloads/hdf5-2.0.0.tar.gz &&
283-
tar -xzf hdf5-2.0.0.tar.gz &&
284-
mkdir hdf5-build &&
285-
cd hdf5-build &&
286-
cmake3 -G "Unix Makefiles" -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE:STRING=Release -DHDF5_ENABLE_ZLIB_SUPPORT:BOOL=ON -DBUILD_SHARED_LIBS:BOOL=OFF -DHDF5_BUILD_FORTRAN:BOOL=OFF -DHDF5_BUILD_JAVA:BOOL=OFF -DHDF5_ENABLE_PARALLEL:BOOL=OFF -DHDF5_BUILD_CPP_LIB:BOOL=OFF -DHDF5_BUILD_HL_LIB:BOOL=OFF -DHDF5_BUILD_EXAMPLES:BOOL=OFF -DHDF5_BUILD_GENERATORS:BOOL=OFF -DHDF5_BUILD_TOOLS:BOOL=OFF -DHDF5_BUILD_UTILS:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DCMAKE_INSTALL_PREFIX:STRING=/hdf5-install /hdf5-2.0.0 &&
287-
cmake3 --build . -j2 &&
288-
cmake3 --install . &&
289-
cd / &&
290-
git clone --branch v2.14.1.0 --single-branch https://github.com/F2I-Consulting/fesapi.git /fesapi-src &&
291-
mkdir fesapi-build &&
292-
cd fesapi-build &&
293-
cmake3 -DCMAKE_BUILD_TYPE=Release -DHDF5_ROOT=/hdf5-install -DHDF5_USE_STATIC_LIBRARIES=TRUE -DCMAKE_INSTALL_PREFIX:STRING=/fesapi-install /fesapi-src &&
294-
cmake3 --build . -j2 &&
295-
cmake3 --install . &&
296-
cd / &&
297-
git clone -b release-1.12.1 https://github.com/apache/avro.git avro &&
298-
mkdir avro-build &&
299-
cd avro-build &&
300-
cmake3 -Wno-dev -Wno-deprecated -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DAVRO_BUILD_EXECUTABLES=FALSE -DAVRO_BUILD_TESTS=FALSE -DAVRO_BUILD_SHARED=FALSE -DCMAKE_INSTALL_PREFIX=/avro-install /avro/lang/c++ &&
301-
cmake3 --build . -j2 &&
302-
cmake3 --install . &&
303-
cd / &&
304-
mkdir build &&
305-
cd build &&
306-
cmake3 -DCMAKE_BUILD_TYPE=Release -DAVRO_ROOT=/avro-install -DAVRO_USE_STATIC_LIBS=TRUE -DWITH_FESAPI=TRUE -DFESAPI_ROOT=/fesapi-install -DWITH_PYTHON_WRAPPING=TRUE -DCMAKE_INSTALL_PREFIX:STRING=/fetpapi-install {project} &&
307-
cmake3 --build . -j2 &&
280+
CIBW_BEFORE_ALL: |
281+
dnf install -y wget gcc-c++ boost-devel openssl-devel
282+
dnf search epel-release
283+
dnf info epel-release
284+
dnf install -y epel-release
285+
dnf --enablerepo=epel install -y minizip1.2-devel hdf5-devel cmake3
286+
cd /
287+
git clone --branch v2.14.1.0 --depth 1 https://github.com/F2I-Consulting/fesapi.git /fesapi-src
288+
mkdir fesapi-build
289+
cd fesapi-build
290+
cmake3 -DCMAKE_BUILD_TYPE=Release /fesapi-src
291+
mv /fesapi-src/src /fesapi-src/fesapi
292+
pip download fesapi --no-deps --only-binary=:all: --no-cache-dir --no-color
293+
FESAPI_WHEEL=$(ls fesapi-*.whl | head -n 1)
294+
unzip "$FESAPI_WHEEL"
295+
LIB_FESAPI_CPP=$(find "$(pwd)/fesapi.libs" -name 'libFesapiCpp*' -type f | head -n 1)
296+
echo "Found libFesapiCpp file: $LIB_FESAPI_CPP"
297+
cd /
298+
git clone -b release-1.12.1 https://github.com/apache/avro.git avro
299+
mkdir avro-build
300+
cd avro-build
301+
cmake3 -Wno-dev -Wno-deprecated -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DAVRO_BUILD_EXECUTABLES=FALSE -DAVRO_BUILD_TESTS=FALSE -DAVRO_BUILD_SHARED=FALSE -DCMAKE_INSTALL_PREFIX=/avro-install /avro/lang/c++
302+
cmake3 --build . --parallel $(nproc)
303+
cmake3 --install .
304+
cd /
305+
mkdir build
306+
cd build
307+
cmake3 -DCMAKE_BUILD_TYPE=Release -DAVRO_ROOT=/avro-install -DAVRO_USE_STATIC_LIBS=TRUE -DWITH_FESAPI=TRUE -DFESAPI_INCLUDE_DIR=/fesapi-src -DFESAPI_LIBRARY_RELEASE="$LIB_FESAPI_CPP" -DWITH_PYTHON_WRAPPING=TRUE -DCMAKE_INSTALL_PREFIX:STRING=/fetpapi-install {project}
308+
cmake3 --build . --parallel $(nproc)
308309
cmake3 --install .
309310
CIBW_REPAIR_WHEEL_COMMAND_LINUX: >
310-
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/fesapi-install/lib64:/fetpapi-install/lib64 &&
311-
auditwheel repair -w {dest_dir} {wheel}
311+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/fesapi-build/fesapi.libs:/fetpapi-install/lib64 &&
312+
auditwheel repair -w {dest_dir} {wheel} --exclude "$LIB_FESAPI_CPP"
312313
CIBW_TEST_COMMAND: python {project}/python/example/etp_client_example.py
313314
with:
314315
package-dir: ./python
@@ -356,7 +357,7 @@ jobs:
356357
cmake --build . --config Release -j2 &&
357358
cmake --install . &&
358359
cd ${{ github.workspace }}/.. &&
359-
git clone --branch v2.14.1.0 --single-branch https://github.com/F2I-Consulting/fesapi.git ${{ github.workspace }}/../fesapi-src &&
360+
git clone --branch v2.14.1.0 --depth 1 https://github.com/F2I-Consulting/fesapi.git ${{ github.workspace }}/../fesapi-src &&
360361
mkdir fesapi-build &&
361362
cd fesapi-build &&
362363
cmake -DCMAKE_BUILD_TYPE=Release -DBOOST_ROOT=${{ github.workspace }}/../boost-install -DMINIZIP_ROOT=${{ github.workspace }}/../minizip-install -DHDF5_ROOT=${{ github.workspace }}/../hdf5-install -DHDF5_USE_STATIC_LIBRARIES=TRUE -DCMAKE_INSTALL_PREFIX:STRING=${{ github.workspace }}/../fesapi-install ${{ github.workspace }}/../fesapi-src &&
@@ -370,7 +371,7 @@ jobs:
370371
make &&
371372
make install &&
372373
cd ${{ github.workspace }}/.. &&
373-
git clone -b release-1.12.1 https://github.com/apache/avro.git avro &&
374+
git clone --branch release-1.12.1 --depth 1 https://github.com/apache/avro.git avro &&
374375
mkdir avro-build &&
375376
cd avro-build &&
376377
cmake -Wno-dev -Wno-deprecated -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DAVRO_BUILD_EXECUTABLES=FALSE -DAVRO_BUILD_TESTS=FALSE -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/../avro-install ${{ github.workspace }}/../avro/lang/c++ &&

cmake/FetpapiClientUsingFesapi.java

Lines changed: 74 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -101,84 +101,83 @@ public static void main(String[] args) {
101101
additionalHeaderField.put("data-partition-id", "osdu"); // Example for OSDU RDDMS
102102
initializationParams.setAdditionalHandshakeHeaderFields(additionalHeaderField);
103103

104-
ClientSession clientSession = fetpapi.createClientSession(initializationParams, authorization);
105-
clientSession.setCoreProtocolHandlers(new CoreHandlers(clientSession));
106-
clientSession.setDataspaceProtocolHandlers(new DataspaceHandlers(clientSession));
107-
clientSession.setDiscoveryProtocolHandlers(new DiscoveryHandlers(clientSession));
108-
clientSession.setStoreProtocolHandlers(new StoreHandlers(clientSession));
109-
clientSession.setDataArrayProtocolHandlers(new DataArrayHandlers(clientSession));
110-
new Thread(clientSession::run).start();
111-
long start = System.currentTimeMillis();
112-
while (clientSession.isEtpSessionClosed() && System.currentTimeMillis() - start < 5000) {
113-
TimeUnit.MILLISECONDS.sleep(1);
114-
}
115-
if (clientSession.isEtpSessionClosed()) {
116-
System.err.println("The ETP session cound not be establisehd in 5 seconds.");
117-
return;
118-
}
119-
System.out.println("Now connected to ETP Server");
120-
// ****** We are now connected to ETP server through clientSession ******
121-
// Set the HDF proxy factory in order to use one compliant with ETP
122-
repo.setHdfProxyFactory(new FesapiHdfProxyFactory(clientSession));
123-
124-
// ****** Get a dataspace content. This corresponds to getting the content of an EPC file ******
125-
// Find an available ETP dataspace
126-
DataspaceVector allDataspaces = clientSession.getDataspaces();
127-
Optional<Dataspace> dataspace = allDataspaces.stream().findAny();
128-
if (dataspace.isEmpty()) {
129-
clientSession.close();
130-
System.err.println("The ETP server has no dataspace.");
131-
return;
132-
}
133-
System.out.println("Working on dataspace " + dataspace.get().getUri());
134-
// List resources of this ETP dataspace
135-
ContextInfo etpContext = new ContextInfo();
136-
etpContext.setUri(dataspace.get().getUri());
137-
etpContext.setDepth(1);
138-
ResourceVector allResources = clientSession.getResources(etpContext, ContextScopeKind.self);
139-
if (allResources.isEmpty()) {
140-
clientSession.close();
141-
System.err.println("The ETP dataspace has no resource.");
142-
return;
143-
}
144-
// Get dataobjects from the resources to the DataObjectRepository
145-
MapStringString uriMap = new MapStringString();
146-
long index = 0;
147-
for (Resource resource : allResources) {
148-
uriMap.put(Long.toString(index++), resource.getUri());
149-
}
150-
MapStringDataObject allDataObjects = clientSession.getDataObjects(uriMap);
151-
for (DataObject dataObject : allDataObjects.values()) {
152-
repo.addOrReplaceGsoapProxy(dataObject.getData(), fetpapi.getDataObjectType(dataObject.getResource().getUri()), fetpapi.getDataspaceUri(dataObject.getResource().getUri()));
153-
}
154-
// ****** We have now in the DataObjectRepository the same content as if we would have deserialized and EPC file looking like the dataspace ******
155-
156-
// ****** Use the DataObjectRepository exactly as you are used to do with FESAPI ******
157-
if (repo.getIjkGridRepresentationCount() > 0) {
158-
IjkGridExplicitRepresentation ijkGrid = repo.getIjkGridExplicitRepresentation(0);
159-
ijkGrid.loadSplitInformation();
160-
long originIndex = ijkGrid.getXyzPointIndexFromCellCorner(0, 0, 0, 0);
161-
System.out.println("The index of the grid origin in XYZ points is : " + originIndex);
162-
ijkGrid.unloadSplitInformation();
163-
if (ijkGrid.getValuesPropertyCount() > 0) {
164-
AbstractValuesProperty prop = ijkGrid.getValuesProperty(0);
165-
SWIGTYPE_p_double propValues = fesapi.new_DoubleArray(prop.getValuesCountOfPatch(0));
166-
try {
167-
prop.getDoubleValuesOfPatch(0, propValues);
168-
System.out.println("The first cell value of prop " + prop.getTitle() + " is " + fesapi.DoubleArray_getitem(propValues, 0));
169-
}
170-
finally {
171-
fesapi.delete_DoubleArray(propValues);
104+
try (ClientSession clientSession = fetpapi.createClientSession(initializationParams, authorization)) {
105+
clientSession.setCoreProtocolHandlers(new CoreHandlers(clientSession));
106+
clientSession.setDataspaceProtocolHandlers(new DataspaceHandlers(clientSession));
107+
clientSession.setDiscoveryProtocolHandlers(new DiscoveryHandlers(clientSession));
108+
clientSession.setStoreProtocolHandlers(new StoreHandlers(clientSession));
109+
clientSession.setDataArrayProtocolHandlers(new DataArrayHandlers(clientSession));
110+
new Thread(clientSession::run).start();
111+
long start = System.currentTimeMillis();
112+
while (clientSession.isEtpSessionClosed() && System.currentTimeMillis() - start < 5000) {
113+
TimeUnit.MILLISECONDS.sleep(1);
114+
}
115+
if (clientSession.isEtpSessionClosed()) {
116+
System.err.println("The ETP session cound not be establisehd in 5 seconds.");
117+
return;
118+
}
119+
System.out.println("Now connected to ETP Server");
120+
// ****** We are now connected to ETP server through clientSession ******
121+
// Set the HDF proxy factory in order to use one compliant with ETP
122+
repo.setHdfProxyFactory(new FesapiHdfProxyFactory(clientSession));
123+
124+
// ****** Get a dataspace content. This corresponds to getting the content of an EPC file ******
125+
// Find an available ETP dataspace
126+
DataspaceVector allDataspaces = clientSession.getDataspaces();
127+
Optional<Dataspace> dataspace = allDataspaces.stream().findAny();
128+
if (dataspace.isEmpty()) {
129+
clientSession.close();
130+
System.err.println("The ETP server has no dataspace.");
131+
return;
132+
}
133+
System.out.println("Working on dataspace " + dataspace.get().getUri());
134+
// List resources of this ETP dataspace
135+
ContextInfo etpContext = new ContextInfo();
136+
etpContext.setUri(dataspace.get().getUri());
137+
etpContext.setDepth(1);
138+
ResourceVector allResources = clientSession.getResources(etpContext, ContextScopeKind.self);
139+
if (allResources.isEmpty()) {
140+
clientSession.close();
141+
System.err.println("The ETP dataspace has no resource.");
142+
return;
143+
}
144+
// Get dataobjects from the resources to the DataObjectRepository
145+
MapStringString uriMap = new MapStringString();
146+
long index = 0;
147+
for (Resource resource : allResources) {
148+
uriMap.put(Long.toString(index++), resource.getUri());
149+
}
150+
MapStringDataObject allDataObjects = clientSession.getDataObjects(uriMap);
151+
for (DataObject dataObject : allDataObjects.values()) {
152+
repo.addOrReplaceGsoapProxy(dataObject.getData(), fetpapi.getDataObjectType(dataObject.getResource().getUri()), fetpapi.getDataspaceUri(dataObject.getResource().getUri()));
153+
}
154+
// ****** We have now in the DataObjectRepository the same content as if we would have deserialized and EPC file looking like the dataspace ******
155+
156+
// ****** Use the DataObjectRepository exactly as you are used to do with FESAPI ******
157+
if (repo.getIjkGridExplicitRepresentationCount() > 0) {
158+
IjkGridExplicitRepresentation ijkGrid = repo.getIjkGridExplicitRepresentation(0);
159+
ijkGrid.loadSplitInformation();
160+
long originIndex = ijkGrid.getXyzPointIndexFromCellCorner(0, 0, 0, 0);
161+
System.out.println("The index of the grid origin in XYZ points is : " + originIndex);
162+
ijkGrid.unloadSplitInformation();
163+
if (ijkGrid.getValuesPropertyCount() > 0) {
164+
AbstractValuesProperty prop = ijkGrid.getValuesProperty(0);
165+
SWIGTYPE_p_double propValues = fesapi.new_DoubleArray(prop.getValuesCountOfPatch(0));
166+
try {
167+
prop.getDoubleValuesOfPatch(0, propValues);
168+
System.out.println("The first cell value of prop " + prop.getTitle() + " is " + fesapi.DoubleArray_getitem(propValues, 0));
169+
}
170+
finally {
171+
fesapi.delete_DoubleArray(propValues);
172+
}
172173
}
173174
}
175+
else {
176+
System.out.println("This dataspace has no IJK Grid");
177+
}
178+
179+
System.out.println("Closing the session thanks to AutoCloseable...");
174180
}
175-
else {
176-
System.out.println("This dataspace has no IJK Grid");
177-
}
178-
179-
// Do not forget to close session once you have processed all the dataobject repository.
180-
System.out.println("Closing the session...");
181-
clientSession.close();
182181
} catch (InterruptedException e) {
183182
e.printStackTrace();
184183
}

cmake/pyproject.toml.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ issues = "https://github.com/F2I-Consulting/fetpapi/issues"
5656
packages=['fetpapi']
5757
package-dir={"fetpapi" = "fetpapi"}
5858
ext-modules = [
59-
{name='fetpapi._fetpapi', sources=['swigGeneratedPythonWrapper.cpp'], include-dirs=['${Boost_INCLUDE_DIR}','${AVRO_INCLUDE_DIR}'${FESAPI_INCLUDE_DIR_FOR_SETUP_PY}], library-dirs=['${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}'${AVRO_LIBRARY_DIR_RELEASE}${Boost_LIBRARY_DIR_RELEASE}${FESAPI_LIBRARY_DIR_RELEASE}], libraries=['${ASSEMBLY_NAME}'${AVRO_LIBRARY_RELEASE_WLE}${Boost_LIBRARY_RELEASE_WLE}${FESAPI_LIBRARY_RELEASE_WLE}], ${EXTRA_COMPILE_ARGS}}
59+
{name='fetpapi._fetpapi', sources=['swigGeneratedPythonWrapper.cpp'], include-dirs=['${Boost_INCLUDE_DIR}','${AVRO_INCLUDE_DIR}'${FESAPI_INCLUDE_DIR_FOR_SETUP_PY}], library-dirs=['${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}'${AVRO_LIBRARY_DIR_RELEASE}${Boost_LIBRARY_DIR_RELEASE}${FESAPI_LIBRARY_DIR_RELEASE}], libraries=['${ASSEMBLY_NAME}'${AVRO_LIBRARY_RELEASE_WLE}${Boost_LIBRARY_RELEASE_WLE}], ${EXTRA_COMPILE_ARGS}}
6060
]
6161

6262
[tool.setuptools.package-data]

0 commit comments

Comments
 (0)