cie-middleware-linux
cie-middleware-linux copied to clipboard
Improvements required to be able to include middleware in Linux distributions repositories
Hello, I am writing this ticket in English language cause some fellow Fedora developers will intervene in this discussion. I would like to package CIE Middleware for Fedora, in order to redistribute it in official Fedora repositories. The current status of the software unables me to do so, so hereby I would like to ask you some modifications that I am pretty sure will also lead CIE Middleware being shipped on many other Linux distributions:
- concerning C/C++ code, please switch to using CMake build system completely: some parts of the software need to be built through Eclipse, I.E. cie-pkcs11. The obligation of using a graphical application to build makes no sense, in particular because all Linux distributions make use of headless build systems.
- Please switch to using Maven for building the Java code. This makes it much clearer which Java dependencies the project uses and makes it possible to easily build the Java code from the command line. See this Maven pom.xml for CIE middleware from @mkoncek. Gradle is not a preferred build system in Fedora due to various problems with its distribution.
- concerning libraries dependencies: libraries cannot be shipped in form of binary or bytecode (I.E. list at footnote [A]), for the following reasons:
- Fedora has to distribute a copy of the tarball/git archive, and cannot distribute anything that is non-free;
- the CIE Middleware must try to link to link to pre-installed packages with CMake find_package or use the even better alternative CMake FetchContent. (A discussion about the latter between Fedora developers and Estonia ID card developers is available here)
- we want to make CIE Middleware available for all CPU architectures supported by Fedora (x86_64, aarch64, ppc64le, etc.);
- we handle security patches of dependencies which requires linking dynamically to packages.
.dfiles and.mkfiles (I.E. list at footnote [B]) should not be in a source code repository because are generated automatically during the build process.
The type of support we can offer as Fedora community:
- During transition: not much, it requires too much knowledge of how the project is/will work. Sometimes the community can volunteer to review and offer advice or reference;
- Post transition: we offer patches to keep up with dependency changes, (optional) integration testing environment (packit+copr)
Best regards
[A]:
user@machine:~/cie-middleware-linux$ fd -e jar
CIEID/lib/Notify-3.7.jar
CIEID/lib/ObjectPool-2.9.jar
CIEID/lib/ShellExecutor-1.1.jar
CIEID/lib/SystemTray-3.17.jar
CIEID/lib/TweenEngine-8.3.jar
CIEID/lib/commons-beanutils-1.9.2.jar
CIEID/lib/commons-collections-3.2.1.jar
CIEID/lib/commons-io-1.3.1.jar
CIEID/lib/commons-logging-1.1.1.jar
CIEID/lib/core-1.0.0.jar
CIEID/lib/ghost4j-1.0.1.jar
CIEID/lib/gson-2.6.2.jar
CIEID/lib/itext-2.1.7.jar
CIEID/lib/javassist-3.23.0-GA.jar
CIEID/lib/jgoodies-forms-1.8.0-sources.jar
CIEID/lib/jgoodies-forms-1.8.0.jar
CIEID/lib/jna-4.1.0.jar
CIEID/lib/jna-4.5.2.jar
CIEID/lib/jna-platform-4.5.2.jar
CIEID/lib/log4j-1.2.17.jar
CIEID/lib/slf4j-api-1.7.25.jar
CIEID/lib/twinkle-1.0.0.jar
CIEID/lib/xmlgraphics-commons-1.4.jar
user@machine:~/cie-middleware-linux$ fd -e a
cie-pkcs11/libcryptopp.a
cie_sign_sdk/Dependencies/bzip2/libbz2.a
cie_sign_sdk/Dependencies/fontconfig/libfontconfig.a
cie_sign_sdk/Dependencies/freetype/libfreetype.a
cie_sign_sdk/Dependencies/libcurl/libcurl.a
cie_sign_sdk/Dependencies/libiconv/libcharset.a
cie_sign_sdk/Dependencies/libiconv/libiconv.a
cie_sign_sdk/Dependencies/libpng/libpng16.a
cie_sign_sdk/Dependencies/libxml2/libxml2.a
cie_sign_sdk/Dependencies/openssl/libcrypto.a
cie_sign_sdk/Dependencies/openssl/libssl.a
cie_sign_sdk/Dependencies/podofo/libpodofo.a
cie_sign_sdk/Dependencies/zlib/libz.a
[B]:
user@machine:~/cie-middleware-linux$ fd -e d
TestCIE/Debug/TestCIE.d
TestCIE/Debug/UUCByteArray.d
user@machine:~/cie-middleware-linux$ fd -e mk
TestCIE/Debug/objects.mk
TestCIE/Debug/sources.mk
TestCIE/Debug/subdir.mk
A post scriptum which I forgot to add to the previous message: on long term you may really want to switch to Qt libraries in order to just have a single middleware stack for Linux, Mac OS and Windows, like the Republic of Estonia does with its DigiDoc client (that I am maintaining on Fedora) and Federal Republic of Germany with its AusweisApp (Fedora package)
Hi, I was able to work independently on this project to make it run on my RHEL system. My modifications to the source code are public at my fork. I'm mentioning this in hope that it could be helpful if the project owners ever decide to work towards the goal of this issue. I was also able to create a working RPM Package that should (more or less) be compliant with the Fedora guidelines. Now, my version of this project is still far from complete, but whoever wanted to use my code as reference (or even use it as it is) is welcome to do so.