Packaging the third-party dependencies for the inference server is necessary so that clients don't need to install them manually.
Implementation
In #51, the resulting Python wheel lacked the third party dependencies. Here, we manually add some of the dependencies to the install (though some are split right now between Debian dependencies and those copied into the installation itself). As a result, the wheel creation will also pick up the same dependencies (though not the Debian ones of course).
There's also a combined .so for client and server. There are known issues with using gRPC/protobuf from multiple compile units and here, the tests, when linked with both proteus-server.so and proteus-client.so used gRPC symbols from both libraries to resolve a gRPC call which just resulted in a hang. So while applications can link to one of the proteus-server or proteus-client libraries, they should not link to both. If both are needed, then the application should link to the combined .so.
Summary of Changes
Motivation
Packaging the third-party dependencies for the inference server is necessary so that clients don't need to install them manually.
Implementation
In #51, the resulting Python wheel lacked the third party dependencies. Here, we manually add some of the dependencies to the install (though some are split right now between Debian dependencies and those copied into the installation itself). As a result, the wheel creation will also pick up the same dependencies (though not the Debian ones of course).
There's also a combined
.so
for client and server. There are known issues with using gRPC/protobuf from multiple compile units and here, the tests, when linked with bothproteus-server.so
andproteus-client.so
used gRPC symbols from both libraries to resolve a gRPC call which just resulted in a hang. So while applications can link to one of theproteus-server
orproteus-client
libraries, they should not link to both. If both are needed, then the application should link to the combined.so
.