SUSE Linux Porting Advisories
SLE 10 to SLE 11: GCC
ISVs should read through the GNU GCC documentation to be aware of any differences in the new compiler.
SLES 9 to SLES 10: Deprecation of Linux Threads in favor of NPTL
Applications that depend on the semantics of the older LinuxThreads model will not work due to the deprecation of the older Linux Threads model in favor of the newer NPTL (Native POSIX Threads Library) in SLES 10. This will also mean that the LD_ASSUME_KERNEL environment variable can only be set to a value greater than '2.6.4'. The developer is advised to test to the newer NPTL (Native POSIX Thread Library) which is default on SLES 9.
SLES 9 to SLES 10: GCC
There are some common issues that are raised when porting applications from SLES 9 GCC 3.3.3 to SLES 10 GCC 4.1.0. Some changes were made at the GCC 3.4 level that carry through to GCC 4.1.0 that developers need to be aware of.
- New in GCC 3.4
- Common Misunderstandings with GNU C++
- GCC 3.4 Changes, New Features and Fixes
- GCC 4.0 Changes, New Features and Fixes
- In the event you may think you have found a defect in GCC, please check GCC Bugs first before contacting Novell.
SLES 9 to SLES 10: Apache Development
See http://httpd.apache.org/docs/2.2/upgrading.html and http://httpd.apache.org/docs/2.2/new_features_2_2.html for full details.
- A few modules were renamed. If you use the LoadModule directive
for these modules you will need to adjust your config file accordingly.
- mod_auth->mod_auth_basic, mod_authn_file, mod_authz_user, mod_authz_groupfile
- APR 1.0 API is now required
- The bundled PCRE is now version 5.0.
- The apachectl startssl option is no longer available.
- The default setting of UseCanonicalName is now Off. If you did not have this directive in your config file, you can add UseCanonicalName On to retain the old behavior.
- The module mod_userdir will no longer act on requests unless a UserDir directive specifying a directory name is present in the config file. To restore the old default behavior, place the directive UserDir public_html in your config file.
- Apache 2.2 uses the APR 1.0 API. All deprecated functions and symbols have been removed from APR and APR-Util.
- The pcreposix.h header is no longer available; it is replaced by the new ap_regex.h header.
- Apache 2.1 and later provides the ap_dbd API for managing database connections (including optimised strategies for threaded and unthreaded MPMs), while APR 1.2 and later provides the apr_dbd API for interacting with the database.
SLES 9 to SLES 10: Java
SLES 10 includes Sun JVM 1.4.2_10 where SLES 9 includes Sun JVM 1.4.2. Sun JVM 1.4.2_10 introduces several bug fixes and some additional minor features. For a list of changes see http://java.sun.com/j2se/1.4.2/ReleaseNotes.html. Java applications built on SLES 9 using the included Sun JVM should work properly on SLES 10 using the Sun JVM with no modification. SLES also includes the JVM from IBM as well. There are implications for some of the supported architectures that SLES runs on such as the s390 since only the IBM JVM is included on that platform. Please refer to either the IBM or Sun documentation for the respective JVMs in regards to Java standards compatibility.
SLES/SLED 10 SP1 includes the Sun JVM 1.4.2_15, IBM JVM 1.4.2 and IBM JVM 1.5.0.
SLES 9 to SLES 10: Tomcat
SLES 10 no longer includes mod_jk for connecting Tomcat and Apache. Apache 2.2 (shipped with SLES 10) includes mod_proxy_ajp (mod_proxy_ajp documentation) which provides a new way for Apache to forward requests on to Tomcat. Developer and administrators will either need to download and compile their own Apache Tomcat connector or use mod_proxy_ajp to handle these connections.
SLES 9 to SLES 10: MySQL Development
See http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-4-1.html for full details.
- MySQL changed major versions from 4.1 to 5.0.
- Natural joins and joins with the USING clause follow the SQL 2003 standard now. This means that redundant output columns are no longer returned and the output columns may be ordered differently now.
- The precedence of the comma operator is now lower than the
JOIN operator. This means queries that combine comma joins and other
joins may not work correctly unless you use parenthesis to specify
- MySQL 4.1 -> t1, t2 LEFT JOIN t3 === (t1, t2) LEFT JOIN t3
- MySQL 5.0 -> t1, t2 LEFT JOIN t3 === t1, (t2 LEFT JOIN t3)
- DECIMAL and NUMERIC data types changed.
- Maximum length of a VARCHAR/VARBINARY is now 65,535.
- Trailing spaces are no longer removed from VARCHAR/VARBINARY values
- User variables are no longer case sensitive.
- SET @var = 1; === SET @VaR = 1;
- Binary columns are now padded with 0x00 instead of a space
- TEXT indexes have changed slightly.
- The update log is no longer available, use the binary log instead.
- The ISAM table type is no longer supported
- The namespace for triggers has changed. Trigger names must be unique with in the database now.
- The CHAR function now returns a binary string rather than a string in the connection character set.
- NOW() and SYSDATE() may return slightly different times.
- GREATEST() and LEAST() have changed behavior is both values passed in are NULL.
- A DATETIME+0 now results in a value in the format YYYYMMDDHHMMSS.000000 instead of just YYYYMMDDHHMMSS.
- Rules for using reserved words as identifiers have changed.
- BIT is a true datatype now.
SLES 9 to SLES 10: PHP Development
See http://www.php.net/manual/en/migration5.php for full details.
- Changed major version of PHP to PHP5.
- New key words were introduced.
- A new object model was introduced.
- exception, final, php_user_filter, interface, implements, public, private, protected, abstract, clone, try, catch, throw
- strrpos() and strripos() now use the entire string as a needle.
- Illegal use of string offsets causes E_ERROR instead of E_WARNING. An example illegal use is: $str = 'abc'; unset($str);.
- array_merge() was changed to accept only arrays.
- The T_ML_COMMENT constant is no longer defined by the Tokenizer extension.
- The CLI version will now always populate the global $argc and $argv variables.
- An object with no properties is no longer considered 'empty'.
- In some cases classes must be declared before used.
- get_class(), get_parent_class() and get_class_methods() now return the name of the classes/methods in a case-sensitive manner.
- ip2long() now returns FALSE when passed an invalid IP address instead of -1.
- Functions defined in an included file will be defined in the main file whether they are before or after a return() instruction.
SLES 9 to SLES 10: NFS Changes
See openSUSE.org NFS for full details.
- NFSv4: SLES 10 includes support for NFSv4. Applications can leverage this support to provide additional features and better performance.
- NFS Structural Changes: In SLES 9, many NFS pieces (nfs_fs, nfs_acl_support, lockd, sunrpc, sunrpc_gss, rpcsec_gss_krb5) were compiled into the kernel. In SLES 10, these modules are loadable. Applications which interact with NFS at a kernel-level may be impacted by these structural changes.
SLES 9 to SLES 10: Oracle Development
- linuxthread support is removed in SLES10 i.e. only NPTL support causes Oracle 9iR2 and older products not to work with SLES10. If your application is based on 9iR2, work toward migrating to Oracle 10gR2, which is known to work.
- Java 1.3.1 support is removed in SLES10, causes Oracle Installer of 9iR2 not to work, no problem with 10gR2. If your application is using JAVA 1.3.x, please work to migrate to newer version of Java supported by SLES10.
- Use orarun 1.9 provided with SLES10 under 'Oracle Server Base' pattern selection. Eliminates requirement of LD_ASSUME_KERNEL environment variable.
- gcc_old SLES9 package is obsolete in SLES10. While gcc_old is generally obsolete for SLES 10, it is required for the use of EBS 11i on SLES 10 and has been provided by Novell explicitly for this use.
SLES 9 to SLES 10: FORTRAN
SLES9 used gcc 3.3, SLES10 uses gcc 4.1, these FORTRAN versions are not at all compatible with each other. Developers and users will need to install the older Fortran package for compatibility. This package has been added to the latest Service Pack for the SDK for SLE 10.
More details on the GNU Fortran environment can be found on the GNU GCC website.
SLES 8 (x86_64) to SLES 9 (x86_64) porting issue relating to the use of statvfs.f_flag
Applications that are built on SLES 8 (x86_64) that use statvfs.f_flag will not operate correctly on SLES 9 (x86_64) due to a binary incompatibility introduced between glibc version 2.2.x (used on SLES 8) and glibc version 2.3.x (used on SLES 9). The only known solution is to recompile the application on SLES 9 (x86_64).
Definition of HZ in /usr/include/asm/param.h
The system header file /usr/include/asm/param.h defines HZ=1024, but /proc/config.gz shows that the kernel has been compiled with HZ=250. The definition of HZ in the file /usr/include/asm/param.h is static, /proc/config.gz is a compile time option when the kernel is built. This makes it impossible to change the system headers to a value which reflects what the kernel was built with. Applications still using HZ need to be fixed to use sysconf [SYSCONF(3)], as changing the definition in the system header file will not change what the kernel was built with.
GCC Compiler, GLIBC Library, and LSB versions in SUSE Linux Enterprise
SLE 11 SP1 (SLES and SLED)
- Linux Kernel 2.6.32
- GCC 4.3.4
- GDB 7.0
- GLIBC 2.11.1
- LSB Version 4.0
SLE 11 (SLES and SLED)
- Linux Kernel 2.6.27
- GCC 4.3.2
- GDB 6.8
- GLIBC 2.9
- LSB Version 4.0
SLES 10 / SLED 10
- Linux Kernel 2.6.16
- GCC 4.1.0
- GDB 6.5
- GLIBC 2.4
- binutils 2.16.91
- LSB Version 3.1
SLES 9 / NLD 9
- Linux Kernel 2.6.5
- GCC 3.3.3
- GLIBC 2.3.3
- LSB Version 3.0 at SLES 9 SP3
- Linux Kernel 2.4.x
- GCC 3.2
- GLIBC 2.2.5
- LSB Version 1.3
More information can be found in the SUSE Linux Enterprise Release Notes
openSUSE Linux information can be found at openSUSE.org
LSB version information can be found in the LSB Certification Product Directory
SUSE Linux Enterprise Kernel Version History
- 22.214.171.124-5 GA
- 126.96.36.199-0.7 SP1 kABI change
- 188.8.131.52-0.12 SP1 kABI change
- 184.108.40.206-0.21 SP2 kABI change
- 220.127.116.11-0.54.5 SP3 kABI change
- 2.6.5-7.244 SP3 kABI change
- 2.6.5-7.308 SP4 kABI change