Maintaining binary compatibility with previous versions - glibc

Apologies if this is more Server Fault than SO, but it is related to coding so here goes...
I have someone else's code that I am trying to compile on RHEL 7 but will run (for the moment at least) on RHEL 6. I've written my own RPM spec file to build and output an RPM file. The RPM builds fine on both RHEL 6 and RHEL 7 but when I build it on RHEL 7, does not produce an RPM which can be installed on RHEL 6 due to versions of GLIBC.
Is there a simple switch I can add to the build somewhere which will allow the resulting binary to be satisfied with an earlier version of GLIBC and be able to be installed on RHEL 6?
To be clear, I don't actually need a RHEL 7 binary at present, I'd just like to be able to compile for RHEL 6 on a RHEL 7 dev box.

You can use mock (sadly only in EPEL) to create a Red Hat Enterprise Linux 6 chroot on your Red Hat Enterprise Linux 7 system. If you use only libraries with Tier 1 ABI compatibility, your application will continue to run on Red Hat Enterprise Linux 7 without recompilation. Building on the oldest supported release (from the application point of view) is really the only way to do this. If you need a more recent C++ compiler and that's the reason why you are building on Red Hat Enterprise Linux 7, consider using Developer Toolset (DTS) instead.
Tier 1 libraries are described in the Application Compatibility Guide. There is supposed to be a PDF attachment with the previous list of packages, but I cannot access this right now.

Related

codenameone Cant Open Designer or Settings

I've a new computer with Debian 9 / 64bits.
After installing Netbeans 8.2 and Codename Plugin 5.0 if i try to open "CodenameOne Settings" or "CodenameOne Designer" nothing happens.
I've checked JRE_JAVA and JDK_JAVA and PATH environment variables and them points to the correct path.
I don't see any error message but the tools dont start.
I dont know what happens but i remember a similar issue in the old computer with Debian 6 / 32bits.
Can anybody help me?
Thanks a lot
Ramon Garcia
The default version of Java on Linux systems is OpenJDK which is a bit problematic due to its lack of JavaFX support. With newer JDKs we updated Codename One to download JavaFX dynamically as it was removed from the JDK but since the dynamic download only works with JDK 10 or newer (due to the way the people at Oracle compiled JavaFX) this would be the minimum version of OpenJDK.
So you can either install Oracle JDK 8 or Open JDK 11 to keep compatibility.
Notice you can track this issue by running the designer/gui builder from the command line and seeing the point of failure: https://www.codenameone.com/blog/tip-track-designer-guibuilder-issues.html

How/where to download openjdk/openjre for windows [duplicate]

This question already has answers here:
OpenJDK availability for Windows OS [closed]
(11 answers)
Closed 6 years ago.
How do I go about downloading OpenJDK and OpenJRE for Windows ?
Is there a Server version of Open JRE ?
The reason I'm asking is since googling around didn't get me anywhere. Since more and more companies have started looking at openjdk/openjre, and some of us need to deploy/develop on windows, this is a valid question.
If you think building the open jdk/jre is the only solution for now, pls. say so.
All : It's not a duplicate. Since the original question was asked (and corresponding answers), JDK 8 has been released. The OpenJDK site does not have OpenJDK 8 or OpenJRE 8 binaries. It's quite difficult for a java developer to build one for himself. I'm looking for an "Official" OpenJDK, client OpenJRE, server OpenJRE that I can download and redistribute as per the license.
How do I go about downloading OpenJDK and OpenJRE for Windows ?
On the OpenJDK home page it states
Download and install the open-source JDK 8 for most popular Linux distributions. If you came here looking for Oracle JDK 8 product binaries for Solaris, Linux, Mac OS X, or Windows, which are based largely on the same code, you can download them from java.oracle.com.
You can download and built the OpenJDK yourself, as others have done, however I am not sure this is a good idea for a production instance and it is a pretty complicated product to build and test.
Is there a Server version of Open JRE ?
Yes, the server JVM runs by default on Linux and 64-bit windows.
If you think building the open jdk/jre is the only solution for now
There is plenty of other free JDKs including Oracle's and IBM's
If you want support I suggest considering Azul's Zulu.

Why -Xmt command line option not working in IBM JDK 7 release 1?

I have installed IBM JDK 7 with release 1 and i am try to run Hello world program with -Xmt option on Ubuntu 14(OS installed in Virtual Box), but runtime i got Command-line option not recognized: -Xmt.
[In IBM documentation they said to create tenant use -Xmt with java command.]
These features are no longer available in their latest release thats why.
Check the links: here and here
They say that the had some issues but the thing is they also removed it from the developers preview page so there is no way to actually test it.

C++ Building on CentOS 7 & Running on 6.5

I've written a program which uses a lot of the new features in C++11. I wrote it on MacOS X, it compiles and runs fine with Apple Clang, Boost 1.5* and libc++ (assumption, as opposed to libstdc++). The program is for personal use and it won't need to be deployed on more than a few servers.
I shipped the production server to its overseas location with CentOS 6.5 installed. So I built a dev server with CentOS 6.5 installed. Pushed my code up to the dev server, used the package manager to get everything I thought I needed and then tried to compile - only to be bitterly disappointed.
Problem: I think the Clang version from EPEL is fine. However it wasn't playing nice with libstdc++ provided by the base repo - CentOS 6.5 is only up to GCC ~4.4. For example, I couldn't get GTest to compile. So I searched around and found a repo called the devtoolset-2 which had GCC ~4.8. It was made clear that this repo should only be used for testing purposes. Using the libstdc++ from this worked much better. However, now I was having a few boost problems - as the base CentOS 6.5 repo is only up to ~1.44. I've been trying to get 1.55 installed but failing... tried from repos and building myself but I'm guessing other dependencies are still out of date - e.g. Binutils. Either way it had all been a big mess.
I think moving the dev server to CentOS 7 would make things much easier. However, it is not going to be easy to move my production server over.
Basically I'm looking for advice. Can I build on CentOS 7 and copy the required libraries over to the production server? And what are the potential pitfalls of this? Should I statically link everything - including libstdc++? Or are there any other suggestions - apart from moving the production server to CentOS 7 (which I'll try do if I absolutely need to).
If you think this is not a 'stackoverflow' question please let me know.
Thanks.
John.

Does Apple support Java 6 yet?

A while back I released an application in Java. While I targetted it for Java 6, I realized that there was a significant Macintosh user base. At the time, Apple had not gotten around to creating a JRE 6 for their users, so I had to make the application compatible with both Java 5 and 6.
Now I've returned to that project and realize that I can't support those users any more; Sun won't let me download the JDK 5 anymore because it's end of life. So I'm caught at a crossroads; as far as I can tell, PPC Mac users still don't have a JRE 6 to use.
So I ask this question: How do I resolve this predicament? I still want to support those users, but I simply don't have a JDK with which to build. Has Apple released a JRE 6 for their PPC users? Is there an alternate way to get JDK 5 (other than becoming a business member of Sun)? Is there some alternative recommendation to supporting these users?
Regards,
-- Shirik
EDIT: Some additional info, if Apple has released Java 6 for PPC, how easy is it to get? I ask this because I'm still constantly seeing logs from my users which indicate PPC architecture with a Java 5 VM.
You could use -target 1.5 -source 1.5 with your Java 6 JDK, to generate 1.5-compatible class files.
You can download Java 5 from Sun. You just have to look in the right place.
http://java.sun.com/javase/downloads/previous.jsp - J2SE 5.0, 1.4.2, 1.3.1
http://java.sun.com/products/archive/ - all releases going back to JDK 1.1
Note that these are all existing public releases. The material you got from Sun would have said there would be no new public releases of Java 5.0. They were pointing out that if you needed patches for recently discovered security issues and other bug fixes for Java 5.0 etc, you would have to pay for them.
Obviously, JDKs for Apple platforms are not available from Sun, but this is nothing to do with the fact that Sun have "end-of-lifed" Java 5.0. The fact is that they have never been available from Sun ...
Having said that, in the long term you need to be able to migrate your application to Java 6.0, 7.0 (due out later this year) and so on. At some point you are going to have to draw the line and say "sorry ... no more updates" for the shrinking number of users with old PPC and 32-bit Intel Macs.
As far as I know, Apple has only released Java 6 for x86-64, and I'd be willing to bet my hat that they will never release Java 6 for either PPC or for plain old 32-bit x86 (note that every Mac released after about mid-2007 or so is x86-64).
Soylatte might work (I have not tried it myself).
If you want to support older platforms, including PowerPC macs, it is a good idea to write code that can run on older Java releases. These days Java 5 is a relatively safe bet, but you may want to go even further and e.g. use retroweaver to generate Java 1.4.
You can download a version of the OpenJDK 1.7 from intricatesoftware.com
it is, unfortunately, a headless build of the JDK; i.e., can't open a display, and hence can't use to run IntelliJ, but Eclipse runs on it just fine.
I'm running it on 10.5.8, on a PPC ("cheese grater",) with Eclipse 4.3.2 / Kepler, and it all seems to work fine. :-)
(though, in honesty, a new configuration on the box, so we'll see how it goes over time)

Resources