ACE/TAO build an rpm after sucessful make - rpmbuild

ACE and TAO is used for our deployment and they will be required to be packaged as RPM from now on (for SUSE platform if it matters).
While I know there are RPM files available we have some specific "$ACE_ROOT/include/makeinclude/platform_macros.GNU" file that we use and we would like to have the RPM build out of the binaries resulted from our own build.
Can we create an RPM after following the steps from ACE-INSTALL.html, based on that build output?

See ACE_wrappers/rpmbuild for the spec file that is used for all RPMs on OpenSuSE Build service. Couldn't you extend that script with the options you need and contribute that back into the main github repo?

Related

How to build a selection of Qt5 submodules from source?

The Qt download page (http://download.qt.io/official_releases/qt/5.12/5.12.2/) offers multiple source archives that can be used to build Qt5 from source. One contains all sources, which I managed to build successfully, but it takes rather long and contains a lot of stuff that I do not use.
They also offer submodule source packages that can be used to only build a subset of what Qt offers. Howerver I could not find a manual on how to properly build these. I need the QtBase and the QtXmlPatterns packages. I manged to build the QtBase package on its own, but I would like to know how to build multiple of the submodules.
The QtXmlPatterns package can not be build on its own, so I tried to simply copy the sources from the QtXmlPatterns submodule into the QtBase submodule. But that gives me errors when I execute the configure step.
So what is the correct procedure for combining multiple of the submodule source packages into one setup that can be build?
Thank you for your time.
Edit:
Not sure if it is relevant, but I am building Qt5.12.2 on Windows with Visual Studio 2019.
The build flow is a bit different from building the full source package.
configure and build qtbase stand-alone as you have already done it. Use a PREFIX so that you can call make install and install the build results to some location in your file system.
you may want to add the resulting bin folder to your PATH environment variable
extract the other submodule you want to build into a separate folder
run qmake, make and make install on your submodule as if it was a "normal" Qt project. This will install the submodule to the PREFIX location of qtbase.

How to invoke RPM as service

How to start or invoke a service from RPM after installing it.
As I have rpm package and installed it using rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm, now I want to invoke the rpm automatically
you cannot "invoke an rpm"; an rpm just installs certain files on your system. That does not even mean that any of those files is executable. The command to launch the application will also always be different (systemctl, init.d, just launch the binary, ...).

Source of qt5 cmake Config-file Packages

Trying to build qt5 with buildroot. I need to download the source so that everything is compiled through the cross-compiler.
One of my project relies on the 'Config-file Packages' (CMake helper config file) provided by Qt5 in the binary tarball at this location Qt5.8.0/5.8/gcc_64/lib/cmake.
Problem: I can't find that folder anywhere in the source. When I take one example file (e.g. Qt5Config.cmake), I can't find any git repo hosting it.
Had a look at Ubuntu packages and it is being distributed in qtbase5-dev. When I look at this package documentation, it says it is using qtbase-opensource-src 5.5.1+dfsg-16ubuntu7.4 as the source package. Had a look at the source package for 5.8 but the cmake files are not there.
I could upload those files in an ad-hoc git repo, but that just seems weird that those files are not hosted by the qt repo.
What am I missing?
The cmake files are generated while build. On Linux the results are installed to qt/lib/cmake.

How to specify RPM_BUILD_ROOT for sbt-native-package

I have a Play project that I would like to deploy via RPM. I'm trying to use SBT to build the RPM, on CentOS, using the sbt-native-packager RPM plugin.
At the end I gt the rpm package.
But it stored in directory under %appname%/target/rpm
How can I use my own path for rpm buildroot tree?
Say, for example /home/build/buildroot
Sbt-native-packager version in use 0.8.0.
The simple (rpm config centric) answer is to configure %_topdir in ~/.rpmmacros before invoking rpmbuild. SBT may be adding additional complexities.

How to run a Qt application on a system where Qt is not installed?

I have made an application using QtWebKit, Qt4. I have the binary generated in Fedora 16. Now, I want to run that application on another PC (running some other Fedora version), where Qt is not installed. How can I package my Qt application so that it can run on a platform where Qt is not installed? Is there any command line utility as well as QtCreator utility to do so. I have tried "deploy all" command, but it didn't have any affect.
Create an Installer with the Qt Installer Framework and just supply all needed shared libraries (Win/OSX) or compile statically. Under Linux there is always the problem between system-wide libraries or bundled libraries. The documentation https://qt-project.org/doc/qt-5.0/qtdoc/deployment.html should give you a good start
Obviously, you need to have access to the qt libraries, which are exactly the same version that you used to compile your application.
There are two options :
link qt libraries statically
create a RPM package (see this how)
Also check Deploying Qt Applications.
Since you're deploying using rpm, to systems where Qt 4 rpms are available, you don't need to do anything besides simply adding a dependency on the qt to your rpm's specfile. The user installing your package using yum localinstall will get the Qt dependencies automatically installed. That's the correct way of doing it - it will keep your package size small.
Of course you need a separate rpm build for every fedora/centos major version out there, but that's almost always a requirement.
If your package needs newer Qt version than the one provided by the platform packages, you can still make a specific version dependency (say qt >= 4.7.0) and have a readme that indicates that newer packages can be obtained from a 3rd party repository (epel etc.)
For deployment under Linux I've used Bitrock Installer Tool.
The main thing before deploying is to check your dependencies. You can do that by using command:
ldd appName | grep libQt
After that you'll see list of dependencies. You'll have to set environment variable LD_LIBRARY_PATH to let linker know where're your libraries. To do that:
export LD_LIBRARY_PATH=.
. means current directory
And after that:
./appName $*
After that you'll be able to use your executable with Bitrock Installer Tool.

Resources