GLIBC: GNOME guys romp with C# standards

Compiling and porting software packages to SunOS, aka Solaris 10, Solaris 11.x or OpenIndiana (former openSolaris), not only requires a tremendous experience but as well a significant amount of patience alongside the preference for craziness.

Especially when it comes to port bigger source packages which require you to dive deep into ugly hardcore C/C++ sources to correct program code errors.

But what happens, when you - after having spent numerous days on the same problem - suddenly spot that the biggest open source desktop vendor GNOME is messing around with C-Standards?

You are doomed to fail with all your compiles!


Whilst preparing currently a tremendous amount of new package ports to OpenIndiana in order to release maybe very soon the Xorg 7.7 alongside GIMP 2.99 based on GTK+3.0, I was "gently" subjected to such an ordeal.


The issue is about compiling the brand new glib-2.37.1.

GLIB is a mandatory external collection of C/C++ libraries providing program facilities and functions for the GNOME desktop.

It handles e. g. DBUS message bus calls and notifications as well as many other network, file system and core desktop system events such as recognition of a plugged in USB drive and opening a pop-up window.

First of all:

When you intent to build glib-2.x with Python3 support, you must apply some modifications to configure prior running it, or your Python3 will be awarded the 'too old' message by the configure script.

Python3 comes with significant syntax changes which must be honored in the configure script as follows:

AFFECTING ALL PYTHON PRINT COMMANDS:

Python 2.x (OLD):

import sys; print sys.version[:3]

Python 3.x (NEW):

import sys; print (sys.version[:3])

AFFECTING CORRECT PYTHON VERSION STRING DETERMINATION:

Python 2.x (OLD):

prog="import sys, string;
minver = map(int, string.split('2.5.0', '.')) + [0, 0, 0]
minverhex = 0
for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[i]
sys.exit(sys.hexversion < minverhex)"


Python 3.x (NEW):

prog="import sys, string;
minver = list(map(int, '2.5.0'.split('.'))) + [0, 0, 0]
minverhex = 0
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
sys.exit(sys.hexversion < minverhex)"


Without making an exception ALL builds of the recent glib-2.0 branch initially fail in the instance of compiling file system events: statfs / statvfs.

On SunOS (here on OpenIndiana 151a7 amd64) the compiling fails on gio/glocalfile.c

The reason for this is a missing declaration of an integer value for:

int statfs_result;

in function check call for:

static GFileInfo * {
...
#elif defined(USE_STATVFS)
struct statvfs statfs_buffer;
}


and resigns from compile with the following error:

file.Tpo -c glocalfile.c -fPIC -DPIC -o .libs/libgio_2_0_la-glocalfile.o
glocalfile.c: In function 'is_remote_fs':
glocalfile.c:2439: error: 'statfs_result' undeclared (first use in this function)
glocalfile.c:2439: error: (Each undeclared identifier is reported only once
glocalfile.c:2439: error: for each function it appears in.)
make[4]: *** [libgio_2_0_la-glocalfile.lo] Error 1
make[4]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/gio'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/gio'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/gio'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1'
make: *** [all] Error 2


To get over it to continue compiling the following patch is due:

--- gio/glocalfile_orig.c Tue May 28 05:36:06 2013
+++ gio/glocalfile.c Sat Jun 15 22:20:51 2013
@@ -2435,7 +2435,7 @@
#elif defined(USE_STATVFS)
struct statvfs statfs_buffer;
-
+ int statfs_result = 0;
statfs_result = statvfs (filename, &statfs_buffer);
#else
return FALSE;


Once fixed the above and continued the make command, the second surprise won't make you wait that much long.

Compiling again fails when it comes to the string functions in the glib tests.

GCC-Compile steps out with the following complaint:

/opt/gcc/4.4.4/bin/gcc -m64 -DHAVE_CONFIG_H -I. -I../.. -g -I../.. -I../../glib -I../../glib -I../.. -DG_LOG_DOMAIN=\"GLib\" -DSRCDIR=\""."\" -DEXEEXT=\"\" -DG_ENABLE_DEBUG -D_REENTRANT -D_PTHREADS -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format=2 -Werror=missing-include-dirs -m64 -O2 -MT strfuncs.o -MD -MP -MF .deps/strfuncs.Tpo -c -o strfuncs.o strfuncs.c
In file included from /usr/include/iso/ctype_iso.h:48,
from /usr/include/ctype.h:36,
from strfuncs.c:25:
/usr/include/sys/feature_tests.h:355:2: error: #error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications require the use of c99"
make[4]: *** [strfuncs.o] Error 1
make[4]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib/tests'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1'
make: *** [all] Error 2


But, why does this happen?

The file strfuncs.c explicitly declares ctype variables according to the C99 standard. This is a bit ancient but of course not a bad attempt to do this. The problem here is, that all the other sources from the glib package are compiled according to ISO/IEC 9899:2011, and thus: C11

It is invalid to compile an XPG3, XPG4, XPG4v2, or XPG5 application using c99. The same is true for POSIX.1-1990, POSIX.2-1992, POSIX.1b, and POSIX.1c applications. Likewise, it is invalid to compile an XPG6 or a POSIX.1-2001 application with anything other than a c99 or later compiler. Therefore, an error must be forced in both cases.

The current C#-Standards are outlined in FULL in this 553-pages document:

One might have the idea now, to initially pass:

CFLAGS="-std=c99"

to the compiler, but this fails as well on 2 reasons:

1.) glib requires thread safety
2.) SunOS only has libthreads and libpthreads according to C11, but not C99


In respect to above 2.), configure will fatally fail as it can't find any POSIX thread libraries.

Another (horrible) attempt could be to uncomment the forced error in sys/feature_tests.h. However, compiling continues but you might later on run nicely into very new surprises.

I got this resolved a tiny bit more "elegant" but not completely waterproof. What I did was to edit glib/tests/Makefile and added the -std=c99 to the CFLAGS:

CFLAGS = -m64 -O2 -std=c99

and let compile only these source pieces under c99, which require it.

Shortly the build fails then another time exactly because of the opposite!

/opt/gcc/4.4.4/bin/gcc -m64 -DHAVE_CONFIG_H -I. -I../.. -g -I../.. -I../../glib -I../../glib -I../.. -DG_LOG_DOMAIN=\"GLib\" -DSRCDIR=\""."\" -DEXEEXT=\"\" -DG_ENABLE_DEBUG -D_REENTRANT -D_PTHREADS -Wall -Wstrict-prototypes -Werror=declaration-after-statement -Werror=missing-prototypes -Werror=implicit-function-declaration -Werror=pointer-arith -Werror=init-self -Werror=format=2 -Werror=missing-include-dirs -m64 -O2 -std=c99 -MT thread.o -MD -MP -MF .deps/thread.Tpo -c -o thread.o thread.c
In file included from /usr/include/sys/time.h:19,
from thread.c:26:
/usr/include/sys/feature_tests.h:351:2: error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications"
make[4]: *** [thread.o] Error 1
make[4]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib/tests'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1/glib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/oi_pkg_builds/Downloads/glib-2.37.1'
make: *** [all] Error 2


Now I edited again the glib/tests/Makefile and removed the previously set -std=c99 flag.

The build process then successfully finished without any further interrupts through errors.

The above turns out very clearly, that the GNOME guys caused an remarkable amount of confusion by breaching compile standards even in such an important code package as the glib library.

glib-2.37.1 is now available for OpenIndiana 151a7 i386_x65 and was built against the new Python 3.3.0. - please refer to my above comments regarding Python 3.x.x.

The new glib-2.37.1 has been released and published in the repository as 'SFPglib-2.37.1'

Repository update & 73 new packs

Unfortunately there where some annoying issues with the package repository at http://pkg.openindiana.co.uk.

The problem came in style of dependencies between certain packages which where not properly resolved and as well there had been some issues with file system permissions when retrieving a particular package from the repository.

Therefore, I managed to action a full re-setup of the entire repository server involving the latest ipkg5 repository port from the OpenIndiana oi_151a7 release.

Nevertheless, I also spent a tremendous time and effort feeding the new repository with new packages.

Over the past 14 days I have compiled, build and released the remarkable amount of over 70 new and most recent package ports for the best operating system this planet has ever seen: OpenIndiana

In respect of another ongoing project involving OpenIndiana, at present I am
dealing with a GTK+-3.x portage of 'The Gimp' Vers. 2.99 that was so far even partially successful.

Please note:

The OpenIndiana.co,uk package repository contains only 64bit x86/sparcv9 builds.

As the released packages must be strictly considered to be for development purposes, their usage is anyway on your own risks.

Despite the packages contain dependency information, they are and remain autonomous and come with a special naming convention which is: SFP<pkg-name>-<pkg-version>

I also recommend to turn an eye to the pkg manifest file prior fetching the package from the repository.

This is still work in progress, which is only done by myself when there's left some space for spare time.

Please read the HowTo Page which provides you a brief introduction how to deal with packages on compiling, building, installing and finally how to setup OpenIndiana.co,uk as an additional package publisher for your OpenIndiana system instance.

Finally, below is a list of current released packages:

SFPapr-1.4.6 Apache apr Vers. 1.4.6
SFPapr-util-1.5.1 Apache apr-util Vers. 1.5.1
SFPat-spi2-core-2.9.2 at-spi2-core Vers. 2.9.2
SFPatk-2.6.0 atk Accessibility Toolkit Vers. 2.6.0
SFPatk-2.8.0 atk Accessibility Toolkit Vers. 2.8.0
SFPatk-bridge-2.0-2.9.2 at-spi2-atk (atk-bridge-2.0) Vers. 2.9.2
SFPautoconf-2.69 GNU autoconf Vers. 2.69
SFPautomake-1.10b GNU automake Vers. 1.10b
SFPautomake-1.13 GNU automake Vers. 1.13
SFPbabl-0.1.10 gegl babl Vers. 0.1.10
SFPbabl-0.1.11 gegl babl Vers. 0.1.11
SFPc-ares-1.9.1 c-ares library Vers. 1.9.1
SFPcairo-1.12.14 cairo Vers. 1.12.14
SFPcups-1.7b1 CUPS Printing System Vers. 1.7b1
SFPcurl-7.30.0 curl (libcurl) Vers. 7.30.0
SFPdb-5.3.21 Oracle BerkeleyDB Vers. 5.3.21
SFPexpat-2.1.0 expat library Vers. 2.1.0
SFPfile-5.14 GNU file Vers. 5.14
SFPfontconfig-2.10.93 fontconfig Vers. 2.10.93
SFPfreetype-14.1.8 freetype Vers. 14.1.8
SFPgdk-pixbuf-2.26.5 gdk-pixbuf Vers. 2.26.5
SFPgegl-0.2.0 GEGL, Generic Graphics Library Vers. 0.2.0
SFPgegl-0.3.0 gegl Vers. 0.3.0
SFPghostscript-9.0.7-shared Ghostscript (gs) (shared, libgs.so) Vers. 9.07
SFPglib-2.34.3 GNOME glib Vers. 2.34.3
SFPglib-2.37.1 GNOME glib Vers. 2.37.1
SFPgm4-1.9 GNU M4 macro processor Vers. 1.9
SFPgtk+-3.6.4 GTK+ Vers. 3.6.4
SFPharfbuzz-0.9.18 harfbuzz Vers. 0.9.18
SFPhttpd-2.4.4 Apache httpd Vers. 2.4.4
SFPijs-0.35 ijs Server Vers. 0.35
SFPimage-magick-6.8.5.5 ImageMagick Vers. 6.8.5.5
SFPintltool-0.50.2 GNU intltool Vers. 0.50.2
SFPjoe-3.7 Joe's own editor Vers. 3.7
SFPjpeg-6b jpeg/libjpeg Vers. 6b
SFPkrb5-1.11.2 MIT KerberosV5 Vers. 1.11.2
SFPlcms2-2.2.4 lcms2 library Vers. 2.2.4
SFPlibcanberra-0.30 libcanberra(-gtk) Vers. 0.30
SFPlibexif-0.6.21 libexif Vers. 0.6.21
SFPlibiconv-1.14 libiconv Vers. 1.14
SFPlibmcrypt-2.5.7 libmcrypt library Vers. 2.5.7
SFPlibmng-1.0.10 libmng Vers. 1.0.10
SFPlibpng-1.6.2 libpng Vers. 1.6.2
SFPlibrsvg-2.37.0 GNOME librsvg Vers. 2.37.0
SFPlibspectre-0.2.7 libspectre Vers. 0.2.7
SFPlibsvg-0.1.4 libsvg Vers. 0.1.4
SFPlibtool-2.4.2 GNU libtool Vers. 2.4.2
SFPlibxml2-2.9.1 libxml2 library Vers. 2.9.1
SFPlzma-4.32.7 lzma data compression library Vers. 4.32.7
SFPmcrypt-2.6.8 mcrypt library Vers. 2.6.8
SFPmhash-0.9.9.9 mhash library Vers. 0.9.9.9
SFPmysql-7.2.12 MySQL GPL Cluster Vers. 7.2.12
SFPneon-0.29.6 neon library Vers. 0.29.6
SFPossl-1.0.1e OpenSSL Cryptography Tools Vers. 1.0.1e
SFPpango-1.32.6 pango Vers. 1.32.6
SFPpcre-8.33 pcre Perl Compatible Regular Expressions Vers. 8.33
SFPperl5-5.18.0 Perl5 Programming Language Vers. 5.18.0
SFPperl5-5.18.0-shared Perl (shared, libperl.so) Vers. 5.18.0
SFPpgsql-9.2.4 PostgreSQL Database Cluster Vers. 9.2.4
SFPphp5-5.4.12 PHP Vers. 5.4.12
SFPpoppler-0.22.4 poppler Vers. 0.22.4
SFPpostgresql-9.2.3 PostgreSQL Database Cluster Server Vers. 9.2.3
SFPpostgresql-9.2.4 PostgreSQL Database Cluster Vers. 9.2.4
SFPpython3-3.3.2 Python Vers. 3.3.2
SFPqpdf-4.1.0 qpdf Vers. 4.1.0
SFPreadline-6.2 GNU readline Vers. 6.2
SFPruby2-2.0.0p0 Ruby & Gems Vers. 2.0.0p0
SFPsasl2-2.1.26 Cyrus SASLv2 Vers. 2.1.26
SFPsqlite3-3.7.17 sqlite3 Vers. 3.7.17
SFPsubversion-1.7.9 Subversion Repository System Vers. 1.7.9
SFPtiff-4.0.3 tiff (libtiff & tools) Vers. 4.0.3
SFPxz-5.0.4 xz utils Vers. 5.0.4
SFPzlib-1.2.8 zlib compression library Vers. 1.2.8

UK Business In favour of OpenIndiana



[DE]SYSTEMS ENGINEERING Ltd., the major project sponsor and initiator of the OpenIndiana support community UK announced on 7 October 2012 its commitment to support the OpenIndiana community as well as entering a step by step migration process of their entire core server infrastructure to the sophisticated OpenIndiana OS.

Furthermore, with the same published announcement [DE]SYSTEMS ENGINEERING Ltd. provided a deep insight about Oracle's transaction and acquisition of Sun Microsystems and its impacts to the global IT industries.

The press release was published in English and German language, each available as downloadable PDF document:

English:

German:

About

What is OpenIndiana?

OpenIndiana is the world's most advanced and sophisticated free available operating system which derives from the last available OpenSolaris release what is based on the kernel sources of the great and well-known Sun Solaris OS from Sun Microsystems.

In 2010 a new consortium of individuals and sponsors from the industry incorporated the illumos project and continued from the original Sun Solaris kernel and opensolaris sources under the new name 'openindiana'. [DE]SYSTEMS ENGINEERING Ltd. (the founder and main sponsor of openindiana.co.uk) tested on many occasions the new openindiana OS and indeed we got completely surprised that it runs extremely fast and reliable on x86 desktops and server machines.

Nevertheless: openindiana provides automated updates and comparing to the last release of openSolaris (082010) major improvements und updates such as latest OpenSSL, Gnome, IPFilter, and many more have been applied.

A significant advantage of openindiana is its complete independence from Oracle and thus, all parts on which Oracle could claim license and/or copyrights have been either removed or were replaced with newer versions.

Finally, the OpenIndiana operating system is the complete (and reasonable) independent answer and alternate to the Oracle Solaris OS which was put back under a costly license scheme by Oracle right shortly after Oracle closed the acquisition of Sun Microsystems in January 2010.

OpenIndiana is a fantastic alternate for all those who wish to keep their old Sun hardware systems - no matter on server or desktop systems, there are 2 releases of the OpenIndiana OS available: one for server machines and one for desktop workstations.

The OpenIndiana United Kingdom Community

OpenIndiana United Kingdom is a free of charge and 100% voluntary support community of illuminos openindiana.org. and consists of the entire sunfreepacks.com community which was founded in 2008 and is now fully implemented in the all new OpenIndiana United Kingdom Community.

As we are well aware how time consuming and difficulty it can be to maintain open source solutions, the aim of this community is to provide support and contribution to the US openindiana.org main community.

In order to do so, we will provide not only proper IT equipment such as servers, web space and bandwidth but an own repository server on which we provide as an independent package publisher freshly and up to date package ports which may considered to find their final place in upcoming releases of the illumos OpenIndiana OS.

About the project sponsor of OpenIndiana United Kingdom Community

Project sponsor is the British IT company [DE]SYSTEMS ENGINEERING Ltd. which founded and sponsored the sunfreepacks.com community.

Since 2008, when sunfreepacks.com was launched, we have ported a numberless amount of open source software packages in order to role out a significant contribution for the Sun Solaris 10/11 and OpenSolaris OS.

Thus, we have years of professional experience in compiling and building processor/architecture optimized software packages each on x86 and Sparc platforms. sunfreepacks.com was the first package repository at all which provided Solaris OS packages of MPlayer, UnrealIRC server, Wine, Cyrus IMAP, Cyrus SASL2 and many others each in their latest version, e. g. PostgreSQL, Perl, OpenSSL, PHP, Apache.

Many of the sunfreepacks.com's ported packages became later on a part of official Sun Solaris and OpenSolaris OS releases.

The sponsoring company [DE]SYSTEMS ENGINEERING Ltd. is a former Sun Microsystems Principal Partner and as well a verified and authorized Sun GlassFish System Integrator. The company is specialized in high reliable web hosting services on Sun hardware and one of the leading Sun GlassFish web hosting service provider in Europe. Development of individual database and online software solutions is another focus the company is committed to.

[DE]SYSTEMS ENGINEERING Ltd. was founded in 2007 and derives from the former German IT company de-web.net I ISP which professional experience goes far back of about 20 years in IT and Internet history

About the project initiator of OpenIndiana United Kingdom Community

The responsible initiator and maintainer of this community is MR Dave Eckert, a German Computer Scientist and Software Engineer, born in 1975 in the near of Berlin, the capitol of Germany.

Dave is Managing Director of [DE]SYSTEMS ENGINEERING Ltd. and also worked for over 15 years as a course instructor for operating systems, software development, digital forensic and IT security.

Download issues with SXCE ISO Images

Dear sunfreepacks.com community,

since we have made available SXCE SNV b130 for download here on sunfreepacks.com many enquiries have been sent to us mentioning problems to download the ISO images.

First of all our apologies for the inconveniences this has caused you, but you'll be glad to know, that both snv_b130 ISO image files (sparc and x86) are NOT corrupt and work properly.

The download problems occurred where to a heavy bandwidth load caused by worldwide hits to sunfreepacks.com to download the ISO images. Precisely this was something we have foreseen as recently stated, that as per 27 January 2010 Oracle has removed all the SXCE SNV Builts from the Sun Microsystems download area and they have been no longer available.

Unfortunately we just have had noted on 26 January 2010 that the SXCE SNV Builds will be removed from sun.com.

Precisely due to this tight deadline we have not been able to repsond much earlier to the expected massive increase of bandwidth load
so that we could have had ordered a higher bandwidth througput from our carriers.

Anyway we have by now put the matter right thanks to our new sunfreepacks.com sponsor stollfuss.net Germany who provided us with a free of charge load balancing service in order to spread and increase the throughput.

stollfuss.net is a small but highly motivated
professional enterprise from Germany which provides e. g. Online Storage Solutions, Bandwidth & Data Mirroring Services adapted from their very fast and reliable Gentoo-Linux server machines.

Furthermore stollfuss.net for years supports the Gentoo-Linux Community with their contribution to software package portings to Gentoo-Linux.

We have to highlight as well, that stollfuss.net has provided sunfreepacks.com with an outstanding contribution to make us the first repository who released the Unreal-IRCd, an Internet Relay Chat system as a Solaris 10 Sparcâ„¢ package. The particular porting even had a significant impact to improvements of the Unreal-IRCd development and is considered in all future releases of the relay chat system.

Thank you, for making sunfreepacks.com one of the most considered online repositories for Solaris / openSolaris software packages.

If you demand support, have suggestions or complains just write us! Where are here, and we are listening carefully to your comments. Drop us your comments at any time to: contact[\at/]sunfreepacks.com

Oracle's acquisition of Sun

Dear sunfreepacks.com community,

The merge of Oracle and Sun Microsystems has indeed caused a few questions demanding an answer.

On the one hand some of us may feel sad about that Sun Microsystems no longer operates as an independet company under its own trade mark and corporate identity. Personally, we share those feelings. But on the other hand, it is for all the great and reliable products Sun Microsystems is well known for, a good opportunity to move on with them
and to continue their development.


The bad news first...

It has been announced on opensolaris.org, that SXCE Nevada Build 130 (snv_130) will be the final release and no other future releases will be provided. As per end of January 2010 SXCE Nevada Build 130, coupled with all earlier releases issued, will be removed completely from cds.sun.com and are no longer available for download. The product name Sun Solaris has now changed to Oracle Solaris, furthermore: the old sun.com web site now carries the Oracle logo - everything now seems to run under the name of Oracle. The last point mentioned is an issue what could have been foreseen as Orcale is well known for acquiring companies and after conclusion of the deal the brand is erased from the market.


Now the good ones...

Despite all, it won't prevent us, sunfreepacks.com, to continue our support for the Solaris operating system and deliver our contribution to make it the best operating system the planet has ever seen. We understand the desire of users and urgent needs of developers to test and maintain their packages and software on a particular SXCE release. With respect to all satisfied SXCE users and developers this evening we will provide for you downloads of SXCE Nevada Build 130 x86/sparc -Build 129 x86/sparc remains available as well.

For the new year you may look forward to a lot of changes at sunfreepacks.com. We will not only surprise you this year with a complete new design, we will launch a lot of more convenient facilities making package handling much easier for you.

Finally...

sunfreepacks.com would like to thank all the people relying on our package repository. Since launching the repository in December 2008 the amount of visitors, traffic and packages as well has increased continuously.

Thank you, for making sunfreepacks.com one of the most considered online repositories for Solaris / openSolaris software packages.

If you demand support, have suggestions or complains just write us! Where are here, and we are listening carefully to your comments.

Drop us a line with your comments, recommendations or complaints at any time to:

contact[\at/]sunfreepacks.com