Apostolos\’ Daily Plate

Creating NTFS and ZFS file systems on an external USB disk

Posted in OpenIndiana by asyropoulos on Σεπτεμβρίου 8, 2017

Recently, I bought an external USB 3.0 hard disk. The disk comes pre-formatted in NTFS but for my own reasons I wanted two partitions: the first formatted in NTFS and the second formatted in ZFS. The first thing one should do is to delete all partition on the disk. To do this use a command like the following one:

# rmformat -l
Looking for devices...
     1. Logical Node: /dev/rdsk/c12t0d0p0
        Physical Node: /pci@0,0/pci1458,5004@13,2/storage@3/disk@0,0
        Connected Device: Generic- SD/MMC           1.00
        Device Type: Removable
        Bus: USB
        Size: 30,4 GB
        Label: 
# fdisk /dev/rdsk/c12t0d0p0

The first command should be used to discover the name of the device that represents your disk. Will see something like the following:

             Total disk size is 3880 cylinders
             Cylinder size is 16065 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1                 IFS: NTFS         0  1939    1940     50

SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Edit/View extended partitions
   6. Exit (update disk configuration and exit)
   7. Cancel (exit without updating disk configuration)
Enter Selection: 

Now press 3 to delete the partition and when prompted press 1 and then 6 to exit. This program cannot create NTFS partitions so you
need to use parted as shown below:

# parted /dev/rdsk/c12t0d0p0
GNU Parted 1.8.8
Using /dev/rdsk/c12t0d0p0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart                                                           
mkpart
Partition type?  primary/extended? primary                                
primary
File system type?  [ext2]? ntfs                                           
ntfs
Start? 0                                                                  
0
End? 50%                                                                  
50%
(parted) print                                                            
print
Model: Generic Ide (ide)
Disk /dev/rdsk/c12t0d0p0: 31.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32.3kB  16.0GB  16.0GB  primary                    

(parted) quit                                                             
quit
#

Start again fdisk to create a Solaris partition. After pressing 1 and then 1 again you can enter 50 to specify the percentage that the second partition will occupy.

             Total disk size is 3880 cylinders
             Cylinder size is 16065 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length    %
      =========   ======    ============  =====   ===   ======   ===
          1                 IFS: NTFS         0  1939    1940     50
          2       Active    Solaris2       1940  3879    1940     50



SELECT ONE OF THE FOLLOWING:
   1. Create a partition
   2. Specify the active partition
   3. Delete a partition
   4. Change between Solaris and Solaris2 Partition IDs
   5. Edit/View extended partitions
   6. Exit (update disk configuration and exit)
   7. Cancel (exit without updating disk configuration)
Enter Selection: 


Partition 2 is now the active partition.

Of course you can make the first partition active.  Now let’s create an NTFS file system.

# mkntfs -s 4096 -c 4096 -S 65535 -f -v /dev/dsk/c12t0d0p1

The next thing is to modify the slice table on the Solaris partition. Start the format utility and
chose your disk. Then select «partition». You should see something like the following after pressing «p»:

Current partition table (original):
Total disk cylinders available: 14590 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm       0                0         (0/0/0)             0
  1 unassigned    wm       0                0         (0/0/0)             0
  2     backup    wu       0 - 14589      447.06GB    (14590/0/0) 937553400
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0
  8       boot    wu       0 -     0       31.38MB    (1/0/0)         64260
  9 unassigned    wm       0                0         (0/0/0)             0

This is wrong for our purpose and we need to modify it. First press 2 and change the «backup» tag to «unassigned», make the start cylinder 0 and the size 0gb. Then press 0 and change the tag to «root», make the start cylinder 1, and enter the size. In this case it should be 447gb. After pressing «p» you should see something like the following.

partition> p   
Current partition table (unnamed):
Total disk cylinders available: 14590 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wu       1 - 14589      447.03GB    (14589/0/0) 937489140
  1 unassigned    wm       0                0         (0/0/0)             0
  2 unassigned    wu       0                0         (0/0/0)             0
  3 unassigned    wm       0                0         (0/0/0)             0
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm       0                0         (0/0/0)             0
  6 unassigned    wm       0                0         (0/0/0)             0
  7 unassigned    wm       0                0         (0/0/0)             0
  8       boot    wu       0 -     0       31.38MB    (1/0/0)         64260
  9 unassigned    wm       0                0         (0/0/0)             0

Now press «label» to write the new table onto the disk. After this you can terminate the format utility. The next step is to create the zpool

# zpool create utank /dev/dsk/c12t0d0s0

Notice that the pool is created on slice 0. We continue by creating the file system:

# zfs create utank/external

The command that follows makes sure the disk is readable by «your» user:

# chown -R apostolo:staff /utank/external/

You can copy things to folder /utank/external/. Before unplugging the disk export the zpool:

# zpool export utank

The next time just use zpool import to import the pool. That’s all!

PS I would like to thank Udo Grabowski for his comments and suggestions.

Advertisements

Γιατί να διδάσκεται η πληροφορική;

Posted in Επιστήμη, Πληροφορική by asyropoulos on Μαΐου 6, 2015

Διάβασα το παρακάτω σχόλιο και κατάλαβα πόσο βαθιά νυχτωμένος είναι ο λαός μας…

 

Bullshit2

Αφού υπάρχουν όλα τα προγράμματα, τι να πω εγώ;

Best Practices in (computer) Education

Posted in Επιστήμη, Πληροφορική by asyropoulos on Απρίλιος 23, 2015

Every year there is a competition about best practices in (computer) education. This competition has a prize of EUR 5,000.00, funded through a Microsoft grant. Obviously, such a competition is doomed  to promote things that are do not harm Microsoft’s image in any way. For example, how can one propose the use of, say, Ubuntu Linux as an educational environment in a competition founded by Microsoft?  In addition, I have noticed that all awards go to University people who have nothing to do with high school education. How can one propose something that cannot be tested in classrooms? In most cases, schools have to follow curricula that are imposed my the ministry of education. Therefore, schools do not have any flexibility to follow different ideas and/or methodologies.

Compiling pulseaudio-5.99.3 on Solaris x86

Posted in Πληροφορική, OpenIndiana, OpenSolaris by asyropoulos on Φεβρουαρίου 9, 2015

Oracle has released some patches that can be used to compile a very old version of PulseAudio. I have used these patches and after adding some things and removing some others I have successfully managed to compile Pulse Audio. The patches follows:


diff -rupN pulseaudio-5.99.3.old/src/daemon/default.pa.in pulseaudio-5.99.3/src/daemon/default.pa.in
--- pulseaudio-5.99.3.old/src/daemon/default.pa.in 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/daemon/default.pa.in 2015-02-08 22:11:11.577334805 +0200
@@ -54,7 +54,7 @@ ifelse(@HAVE_ALSA@, 1, [dnl
#load-module module-alsa-source device=hw:1,0
])dnl
ifelse(@HAVE_OSS_OUTPUT@, 1, [dnl
-#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
])dnl
ifelse(@HAVE_WAVEOUT@, 1, [dnl
diff -rupN pulseaudio-5.99.3.old/src/daemon/esdcompat.in pulseaudio-5.99.3/src/daemon/esdcompat.in
--- pulseaudio-5.99.3.old/src/daemon/esdcompat.in 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/daemon/esdcompat.in 2015-02-08 22:11:11.577649151 +0200
@@ -88,7 +88,10 @@ EOF
;;
esac

– shift
+ # don’t try to shift nonexisting args
+ if [ $1 ]; then
+ shift
+ fi
done

eval «exec ‘@PA_BINARY@’$ARGS»
diff -rupN pulseaudio-5.99.3.old/src/modules/gconf/module-gconf.c pulseaudio-5.99.3/src/modules/gconf/module-gconf.c
— pulseaudio-5.99.3.old/src/modules/gconf/module-gconf.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/gconf/module-gconf.c 2015-02-08 22:11:11.578283648 +0200
@@ -56,7 +56,7 @@ struct module_item {
uint32_t index;
};

-struct module_info {
+struct pa_module_info {
struct userdata *userdata;
char *name;

@@ -129,7 +129,7 @@ static char *read_string(struct userdata
}
}

-static void unload_one_module(struct module_info *m, unsigned i) {
+static void unload_one_module(struct pa_module_info *m, unsigned i) {
struct userdata *u;

pa_assert(m);
@@ -148,7 +148,7 @@ static void unload_one_module(struct mod
m->items[i].name = m->items[i].args = NULL;
}

-static void unload_all_modules(struct module_info *m) {
+static void unload_all_modules(struct pa_module_info *m) {
unsigned i;

pa_assert(m);
@@ -160,7 +160,7 @@ static void unload_all_modules(struct mo
}

static void load_module(
– struct module_info *m,
+ struct pa_module_info *m,
unsigned i,
const char *name,
const char *args,
@@ -199,7 +199,7 @@ static void load_module(
}

static void module_info_free(void *p) {
– struct module_info *m = p;
+ struct pa_module_info *m = p;

pa_assert(m);

@@ -227,14 +227,14 @@ static int handle_event(struct userdata

case ‘+’: {
char *name;
– struct module_info *m;
+ struct pa_module_info *m;
unsigned i, j;

if (!(name = read_string(u)))
goto fail;

if (!(m = pa_hashmap_get(u->module_infos, name))) {
– m = pa_xnew(struct module_info, 1);
+ m = pa_xnew(struct pa_module_info, 1);
m->userdata = u;
m->name = name;
m->n_items = 0;
diff -rupN pulseaudio-5.99.3.old/src/modules/module-augment-properties.c pulseaudio-5.99.3/src/modules/module-augment-properties.c
— pulseaudio-5.99.3.old/src/modules/module-augment-properties.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/module-augment-properties.c 2015-02-08 22:11:11.578666761 +0200
@@ -158,8 +158,8 @@ static void update_rule(struct rule *r)
/* Let’s try a more aggressive search, but only one level */
if ((desktopfiles_dir = opendir(DESKTOPFILEDIR))) {
while ((dir = readdir(desktopfiles_dir))) {
– if (dir->d_type != DT_DIR
– || pa_streq(dir->d_name, «.»)
+ if (/* dir->d_type != DT_DIR
+ || */ pa_streq(dir->d_name, «.»)
|| pa_streq(dir->d_name, «..»))
continue;

diff -rupN pulseaudio-5.99.3.old/src/modules/module-solaris.c pulseaudio-5.99.3/src/modules/module-solaris.c
— pulseaudio-5.99.3.old/src/modules/module-solaris.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/module-solaris.c 2015-02-08 22:11:11.579626929 +0200
@@ -135,6 +135,7 @@ static const char* const valid_modargs[]
static uint64_t get_playback_buffered_bytes(struct userdata *u) {
audio_info_t info;
uint64_t played_bytes;
+ int64_t buffered_bytes;
int err;

pa_assert(u->sink);
@@ -161,10 +162,13 @@ static uint64_t get_playback_buffered_by

pa_smoother_put(u->smoother, pa_rtclock_now(), pa_bytes_to_usec(played_bytes, &u->sink->sample_spec));

– if (u->written_bytes > played_bytes)
– return u->written_bytes – played_bytes;
– else
– return 0;
+ buffered_bytes = u->written_bytes – played_bytes;
+
+ if (buffered_bytes < 0) {
+ buffered_bytes = 0;
+ }
+
+ return (uint64_t) buffered_bytes;
}

static pa_usec_t sink_get_latency(struct userdata *u, pa_sample_spec *ss) {
@@ -415,7 +419,7 @@ static int sink_process_msg(pa_msgobject
if (unsuspend(u) < 0) return -1; u->sink->get_volume(u->sink);
– u->sink->get_mute(u->sink);
+ u->sink->get_mute(u->sink,(_Bool*)1);
}
u->sink_suspended = false;
}
@@ -486,14 +490,26 @@ static int source_process_msg(pa_msgobje
static void sink_set_volume(pa_sink *s) {
struct userdata *u;
audio_info_t info;
+ pa_volume_t v;

pa_assert_se(u = s->userdata);

+ if (u->fd < 0) { + u->fd = pa_open_cloexec(u->device_name, u->mode | O_NONBLOCK, 0);
+ }
+
if (u->fd >= 0) {
AUDIO_INITINFO(&info);

– info.play.gain = pa_cvolume_max(&s->real_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
– pa_assert(info.play.gain <= AUDIO_MAX_GAIN); + v = pa_cvolume_max(&s->real_volume);
+ if (v > PA_VOLUME_NORM) {
+ v = PA_VOLUME_NORM;
+ }
+
+ info.play.gain = v * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+
+ pa_log_debug(«PA_VOLUME_NORM is %ld», PA_VOLUME_NORM);
+ pa_log_debug(«Setting volume %ld %ld», v, info.play.gain);

if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { if (errno == EINVAL) @@ -513,22 +529,29 @@ static void sink_get_volume(pa_sink *s) if (u->fd >= 0) {
if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0) pa_log(«AUDIO_SETINFO: %s», pa_cstrerror(errno)); – else + else { + pa_log_debug(«Getting volume %ld %ld», info.play.gain, (info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN)); pa_cvolume_set(&s->real_volume, s->sample_spec.channels, info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ }
}
}

static void source_set_volume(pa_source *s) {
struct userdata *u;
audio_info_t info;
+ pa_volume_t v;

pa_assert_se(u = s->userdata);

if (u->fd >= 0) {
AUDIO_INITINFO(&info);

– info.play.gain = pa_cvolume_max(&s->real_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
– pa_assert(info.play.gain <= AUDIO_MAX_GAIN); + v = pa_cvolume_max(&s->real_volume);
+ if (v > PA_VOLUME_NORM) {
+ v = PA_VOLUME_NORM;
+ }
+
+ info.play.gain = v * AUDIO_MAX_GAIN / PA_VOLUME_NORM;

if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) { if (errno == EINVAL) @@ -1034,7 +1057,7 @@ int pa__init(pa_module *m) { if (sink_new_data.muted_is_set) u->sink->set_mute(u->sink);
else
– u->sink->get_mute(u->sink);
+ u->sink->get_mute(u->sink,(_Bool*)1);

pa_sink_put(u->sink);
}
diff -rupN pulseaudio-5.99.3.old/src/modules/oss/module-oss.c pulseaudio-5.99.3/src/modules/oss/module-oss.c
— pulseaudio-5.99.3.old/src/modules/oss/module-oss.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/oss/module-oss.c 2015-02-08 22:11:11.581263125 +0200
@@ -32,6 +32,10 @@
*
*/

+#define HAVE_OSSV4
+#define TRUE 1
+#define FALSE 0
+
#ifdef HAVE_CONFIG_H
#include
#endif
@@ -123,7 +127,18 @@ struct userdata {
int mode;

int mixer_fd;
+
+#ifdef HAVE_OSSV4
+ int mixer_dev;
+ int mixer_sink_control;
+ int mixer_source_control;
+ int mixer_cmax;
+ int mixer_dsp_fd;
+ oss_mixext sink_mixext;
+ oss_mixext source_mixext;
+#else
int mixer_devmask;
+#endif

int nfrags, frag_size, orig_frag_size;

@@ -809,6 +824,160 @@ static int source_process_msg(pa_msgobje
return ret;
}

+#ifdef HAVE_OSSV4
+
+static const char *
+mixer_ext_type_get_name (int type)
+{
+ switch (type) {
+ case MIXT_DEVROOT:
+ return «Device root entry»;
+ case MIXT_GROUP:
+ return «Controller group»;
+ case MIXT_ONOFF:
+ return «On/Off switch»;
+ case MIXT_ENUM:
+ return «Enumeration control»;
+ case MIXT_MONOSLIDER:
+ return «Mono slider (0-255)»;
+ case MIXT_STEREOSLIDER:
+ return «Stereo slider (0-255)»;
+ case MIXT_MESSAGE:
+ return «Textual message»;
+ case MIXT_MONOVU:
+ return «Mono VU meter value»;
+ case MIXT_STEREOVU:
+ return «Stereo VU meter value»;
+ case MIXT_MONOPEAK:
+ return «Mono VU meter peak value»;
+ case MIXT_STEREOPEAK:
+ return «Stereo VU meter peak value»;
+ case MIXT_RADIOGROUP:
+ return «Radio button group»;
+ case MIXT_MARKER:
+ /* Separator between normal and extension entries */
+ return «Separator»;
+ case MIXT_VALUE:
+ return «Decimal value entry»;
+ case MIXT_HEXVALUE:
+ return «Hex value entry»;
+ case MIXT_SLIDER:
+ return «Mono slider (31-bit value range)»;
+ case MIXT_3D:
+ return «3D»;
+ case MIXT_MONOSLIDER16:
+ return «Mono slider (0-32767)»;
+ case MIXT_STEREOSLIDER16:
+ return «Stereo slider (0-32767)»;
+ case MIXT_MUTE:
+ return «Mute switch»;
+ default:
+ break;
+ }
+
+ return «Unknown»;
+}
+
+void
+mixer_showflags (int flags)
+{
+ struct
+ {
+ int flag;
+ char nick[16];
+ } all_flags[] = {
+ /* first the important ones */
+ {
+ MIXF_MAINVOL, «MAINVOL»}, {
+ MIXF_PCMVOL, «PCMVOL»}, {
+ MIXF_RECVOL, «RECVOL»}, {
+ MIXF_MONVOL, «MONVOL»}, {
+ MIXF_DESCR, «DESCR»},
+
+ /* now the rest in the right order */
+ {
+ MIXF_READABLE, «READABLE»}, {
+ MIXF_WRITEABLE, «WRITABLE»}, {
+ MIXF_POLL, «POLL»}, {
+ MIXF_HZ, «HZ»}, {
+ MIXF_STRING, «STRING»}, {
+ MIXF_DYNAMIC, «DYNAMIC»}, {
+ MIXF_OKFAIL, «OKFAIL»}, {
+ MIXF_FLAT, «FLAT»}, {
+ MIXF_LEGACY, «LEGACY»}, {
+ MIXF_CENTIBEL, «CENTIBEL»}, {
+ MIXF_DECIBEL, «DECIBEL»}, {
+ MIXF_WIDE, «WIDE»}
+ };
+ int num_flags = (sizeof (all_flags) / sizeof ((all_flags)[0]));
+ int i;
+
+ if (flags == 0) {
+ pa_log_debug (» flags : None»);
+ return;
+ }
+
+ for (i=0; i < num_flags; i++) { + if ((flags & all_flags[i].flag)) { + pa_log_debug (» flag : %s», all_flags[i].nick); + flags &= ~all_flags[i].flag; /* unset */ + } + } + + /* Unknown flags? */ + if (flags != 0) { + pa_log_debug (» flag : ????»); + } + + return; +} + +static void sink_get_volume(pa_sink *s) { + struct userdata *u; + + pa_assert_se(u = s->userdata);
+
+ if (pa_oss_get_volume(u->mixer_dsp_fd, &(u->sink_mixext), &s->sample_spec, &s->real_volume) >= 0)
+ return;
+
+ pa_log_info(«Device doesn’t support reading mixer settings: %s», pa_cstrerror(errno));
+}
+
+static void sink_set_volume(pa_sink *s) {
+ struct userdata *u;
+
+ pa_assert_se(u = s->userdata);
+
+ if (pa_oss_set_volume(u->mixer_dsp_fd, &(u->sink_mixext), &s->sample_spec, &s->real_volume) >= 0)
+ return;
+
+ pa_log_info(«Device doesn’t support writing mixer settings: %s», pa_cstrerror(errno));
+}
+
+static void source_get_volume(pa_source *s) {
+ struct userdata *u;
+
+ pa_assert_se(u = s->userdata);
+
+ if (pa_oss_get_volume(u->mixer_dsp_fd, &(u->source_mixext), &s->sample_spec, &s->real_volume) >= 0)
+ return;
+
+ pa_log_info(«Device doesn’t support reading mixer settings: %s», pa_cstrerror(errno));
+}
+
+static void source_set_volume(pa_source *s) {
+ struct userdata *u;
+
+ pa_assert_se(u = s->userdata);
+
+ if (pa_oss_set_volume(u->mixer_dsp_fd, &(u->source_mixext), &s->sample_spec, &s->real_volume) >= 0)
+ return;
+
+ pa_log_info(«Device doesn’t support writing mixer settings: %s», pa_cstrerror(errno));
+}
+
+#else
+
static void sink_get_volume(pa_sink *s) {
struct userdata *u;

@@ -880,6 +1049,7 @@ static void source_set_volume(pa_source

pa_log_info(«Device doesn’t support writing mixer settings: %s», pa_cstrerror(errno));
}
+#endif

static void thread_func(void *userdata) {
struct userdata *u = userdata;
@@ -1162,6 +1332,11 @@ finish:

int pa__init(pa_module*m) {

+#ifdef HAVE_OSSV4
+ struct oss_sysinfo si = { {0,}, };
+ struct oss_mixerinfo mi = { 0, };
+#endif
+
struct audio_buf_info info;
struct userdata *u = NULL;
const char *dev;
@@ -1259,7 +1434,9 @@ int pa__init(pa_module*m) {
m->userdata = u;
u->fd = fd;
u->mixer_fd = -1;
+#ifndef HAVE_OSSV4
u->mixer_devmask = 0;
+#endif
u->use_getospace = u->use_getispace = true;
u->use_getodelay = true;
u->mode = mode;
@@ -1426,6 +1603,194 @@ int pa__init(pa_module*m) {
if ((u->mixer_fd = pa_oss_open_mixer_for_device(u->device_name)) >= 0) {
bool do_close = true;

+#ifdef HAVE_OSSV4
+#define IGNORE_DEV 1
+ int i;
+
+ u->mixer_dsp_fd = -1;
+
+ if (ioctl (u->mixer_fd, SNDCTL_SYSINFO, &si) < 0) {
+ pa_log_debug («SNDCTL_SYSINFO failed»);
+ goto fail;
+ }
+ for (i = 0; i < si.nummixers; i++) { + mi.dev = i; + if (ioctl (u->mixer_fd, SNDCTL_MIXERINFO, &mi) < 0) {
+ pa_log_debug(«SNDCTL_MIXERINFO failed»);
+ goto fail;
+ }
+ if (mi.enabled != 0) {
+ /*
+ * There could be multiple mixers. First we only care about
+ * ones which are enabled. In any case we should not touch
+ * disabled mixers! But beyond that it may not be clear which
+ * one to use! There is a way to relate the card number to the
+ * device node name. But there does not seem to be a real good
+ * way to chose which one to use. So maybe an env. var. could
+ * be used to select a dsp device node name and then pick the
+ * correct mixer number. (See load_devices() in audioctl).
+ * This code now will always pick the first enabled mixer
+ * found. Which may be wrong for multiple mixers and/or sound
+ * cards. It may be possible/desirable to control all mixers
+ * found at the same time???
+ */
+ break;
+ }
+ }
+
+ if (i < si.nummixers) {
+ struct stat sbuf;
+
+ if ((stat(mi.devnode, &sbuf) != 0) ||
+ ((sbuf.st_mode & S_IFCHR) == 0)) {
+ pa_log(«Failed to get mixer dsp device.»);
+ i = si.nummixers;
+ }
+ }
+
+ if (i < si.nummixers && + (u->mixer_dsp_fd = pa_oss_open_mixer(mi.devnode)) >= 0) {
+
+ /* Will cause for loop to exit if not filled in by OSS */
+ u->mixer_cmax = -1;
+ if (ioctl(u->mixer_dsp_fd, SNDCTL_MIX_NREXT, &u->mixer_cmax) < 0) { + pa_log(«Failed to get max control.»); + goto fail; + } + + pa_log_debug («Opened mixer device %d with %d controls\n», + mi.dev, mi.nrext); + + u->mixer_sink_control = -1;
+ u->mixer_source_control = -1;
+
+ for (i=0; i < u->mixer_cmax; i++) {
+ memset (&(u->sink_mixext), 0, sizeof (oss_mixext));
+
+#ifdef IGNORE_DEV
+ /* This will cause dev to be ignored */
+ u->sink_mixext.dev = -1;
+#else
+ u->sink_mixext.dev = mi.dev;
+#endif
+
+ /*
+ * The real way to pick a control on a mixer is with this
+ * number. Note that control numbers are unique across all
+ * mixers. So dev can just be ignored. When dev is included
+ * it will only be used to check for correct dev from
+ * userland. But it will not be used to select a mixer.
+ */
+ u->sink_mixext.ctrl = i;
+
+ pa_log_debug («Control %d», u->sink_mixext.ctrl);
+
+ if (ioctl (u->mixer_dsp_fd, SNDCTL_MIX_EXTINFO,
+ &(u->sink_mixext)) < 0) { + pa_log_debug («SNDCTL_MIX_EXTINFO failed»); + continue; + } + + pa_log_debug (» name : %s», u->sink_mixext.extname);
+ pa_log_debug (» type : %s (%d)»,
+ mixer_ext_type_get_name (u->sink_mixext.type),
+ u->sink_mixext.type);
+ pa_log_debug (» maxval : %d», u->sink_mixext.maxvalue);
+ pa_log_debug (» parent : %d», u->sink_mixext.parent);
+ mixer_showflags (u->sink_mixext.flags);
+
+ if ((u->sink_mixext.flags & MIXF_PCMVOL)) {
+ pa_log_debug («First PCM control: %d», i);
+ u->mixer_sink_control = i;
+ break;
+ }
+
+ /*
+ * Note that MIXF_MAINVOL may not be an exclusive single
+ * control. For example on AudioHD there will be one for each
+ * output jack (Green, Black, Orange…). So to really do a
+ * master volume you would need to do all MIXF_MAINVOL at the
+ * same time…
+ */
+ if (((u->sink_mixext.flags & MIXF_MAINVOL)) &&
+ u->mixer_sink_control == -1) {
+ pa_log_debug («First main volume control: %d», i);
+ u->mixer_sink_control = i;
+ }
+ }
+
+ if (u->mixer_sink_control != -1) {
+ pa_log_debug («Setting OSS sink callbacks.»);
+ pa_sink_set_get_volume_callback(u->sink, sink_get_volume);
+ pa_sink_set_set_volume_callback(u->sink, sink_set_volume);
+ u->sink->n_volume_steps = 101;
+ do_close = FALSE;
+ } else {
+ pa_log_debug («Not setting OSS sink callbacks.»);
+ }
+
+ for (i=0; i < mi.nrext; i++) { + memset (&(u->source_mixext), 0, sizeof (oss_mixext));
+#ifdef IGNORE_DEV
+ /* This will cause dev to be ignored */
+ u->source_mixext.dev = -1;
+#else
+ u->source_mixext.dev = mi.dev;
+#endif
+ /*
+ * The real way to pick a control on a mixer is with this
+ * number. Note that control numbers are unique across all
+ * mixers. So dev can just be ignored. When dev is included
+ * it will only be used to check for correct dev from userland.
+ * But it will not be used to select a mixer.
+ */
+ u->source_mixext.ctrl = i;
+
+ pa_log_debug («Control %d», u->source_mixext.ctrl);
+
+ if (ioctl (u->mixer_dsp_fd, SNDCTL_MIX_EXTINFO,
+ &(u->source_mixext)) == -1) {
+ pa_log_debug («SNDCTL_MIX_EXTINFO failed»);
+ continue;
+ }
+
+ pa_log_debug (» name : %s», u->source_mixext.extname);
+ pa_log_debug (» type : %s (%d)»,
+ mixer_ext_type_get_name (u->source_mixext.type),
+ u->source_mixext.type);
+ pa_log_debug (» maxval : %d», u->source_mixext.maxvalue);
+ pa_log_debug (» parent : %d», u->source_mixext.parent);
+ mixer_showflags (u->source_mixext.flags);
+
+ /*
+ * There may be more then one MIXF_RECVOL on a mixer. In fact
+ * for audioHD the can be three (line-in, mix-in, and cd-in).
+ * For a master gain it may be good to adjust all…
+ */
+ if ((u->source_mixext.flags & MIXF_RECVOL)) {
+ pa_log_debug («First REC control: %d», i);
+ u->mixer_source_control = i;
+ break;
+ }
+ }
+
+ if (u->mixer_source_control != -1) {
+ pa_log_debug («Setting OSS source callbacks.»);
+ pa_source_set_get_volume_callback(u->source, source_get_volume);
+ pa_source_set_set_volume_callback(u->source, source_set_volume);
+ u->source->n_volume_steps = 101;
+ do_close = FALSE;
+ } else {
+ pa_log_debug («Not setting OSS source callbacks.»);
+ }
+
+ if (do_close == TRUE) {
+ pa_close(u->mixer_dsp_fd);
+ u->mixer_dsp_fd = -1;
+ }
+ }
+
+#else
if (ioctl(fd, SOUND_MIXER_READ_DEVMASK, &u->mixer_devmask) < 0) pa_log_warn(«SOUND_MIXER_READ_DEVMASK failed: %s», pa_cstrerror(errno)); else { @@ -1445,11 +1810,14 @@ int pa__init(pa_module*m) { do_close = false; } } +#endif if (do_close) { pa_close(u->mixer_fd);
u->mixer_fd = -1;
+#ifndef HAVE_OSSV4
u->mixer_devmask = 0;
+#endif
}
}

@@ -1568,6 +1936,10 @@ void pa__done(pa_module*m) {
if (u->fd >= 0)
pa_close(u->fd);

+#ifdef HAVE_OSSV4
+ if (u->mixer_dsp_fd >= 0)
+ pa_close(u->mixer_dsp_fd);
+#endif
if (u->mixer_fd >= 0)
pa_close(u->mixer_fd);

diff -rupN pulseaudio-5.99.3.old/src/modules/oss/oss-util.c pulseaudio-5.99.3/src/modules/oss/oss-util.c
— pulseaudio-5.99.3.old/src/modules/oss/oss-util.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/oss/oss-util.c 2015-02-08 22:11:11.581982216 +0200
@@ -246,6 +246,190 @@ int pa_oss_set_fragments(int fd, int nfr
return 0;
}

+#ifdef HAVE_OSSV4
+static int
+oss4_mixer_slider_pack_volume (oss_mixext *mixext, int channels, const pa_cvolume *volume)
+{
+ int val = 0;
+ int lvol = 0;
+ int rvol = 0;
+ int lval = 0;
+ int rval = 0;
+
+ switch (mixext->type) {
+ case MIXT_MONOSLIDER:
+ case MIXT_MONOSLIDER16:
+ case MIXT_SLIDER:
+ lvol = volume->values[0] > PA_VOLUME_NORM ? PA_VOLUME_NORM : volume->values[0];
+ val = (lvol*mixext->maxvalue)/PA_VOLUME_NORM;
+ break;
+
+ case MIXT_STEREOSLIDER:
+ lvol = volume->values[0] > PA_VOLUME_NORM ? PA_VOLUME_NORM : volume->values[0];
+ lval = (lvol*mixext->maxvalue)/PA_VOLUME_NORM;
+ if (channels >= 2) {
+ rvol = volume->values[1] > PA_VOLUME_NORM ? PA_VOLUME_NORM : volume->values[1];
+ rval = (rvol*mixext->maxvalue)/PA_VOLUME_NORM;
+ }
+
+ val = ((rval & 0xff) << 8) | (lval & 0xff); + break; + + case MIXT_STEREOSLIDER16: + lvol = volume->values[0] > PA_VOLUME_NORM ? PA_VOLUME_NORM : volume->values[0];
+ lval = (lvol*mixext->maxvalue)/PA_VOLUME_NORM;
+ if (channels >= 2) {
+ rvol = volume->values[1] > PA_VOLUME_NORM ? PA_VOLUME_NORM : volume->values[1];
+ rval = (rvol*mixext->maxvalue)/PA_VOLUME_NORM;
+ }
+
+ val = ((rval & 0xffff) << 16) | (lval & 0xffff); + + break; + + default: + return 0; + } + + return val; +} + +static void +oss4_mixer_slider_unpack_volume (oss_mixext *mixext, int v, pa_cvolume * volume) +{ + uint32_t val, vol; + + val = (uint32_t) v; + switch (mixext->type) {
+ case MIXT_SLIDER:
+ vol = val;
+ volume->values[0] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ if (volume->channels >= 2) {
+ volume->values[1] = volume->values[0];
+ }
+ break;
+ case MIXT_MONOSLIDER:
+ /* oss repeats the value in the upper bits, as if it was stereo */
+ vol = val & 0x00ff;
+ volume->values[0] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ if (volume->channels >= 2) {
+ volume->values[1] = volume->values[0];
+ }
+ break;
+ case MIXT_MONOSLIDER16:
+ /* oss repeats the value in the upper bits, as if it was stereo */
+ vol = val & 0x0000ffff;
+ volume->values[0] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ if (volume->channels >= 2) {
+ volume->values[1] = volume->values[0];
+ }
+ break;
+ case MIXT_STEREOSLIDER:
+ vol = (val & 0x00ff);
+ volume->values[0] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ if (volume->channels >= 2) {
+ vol = (val & 0xff00) >> 8;
+ volume->values[1] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ }
+ break;
+ case MIXT_STEREOSLIDER16:
+ vol = (val & 0x0000ffff);
+ volume->values[0] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ if (volume->channels >= 2) {
+ vol = (val & 0xffff0000) >> 16;
+ volume->values[1] = PA_CLAMP_VOLUME((vol * PA_VOLUME_NORM) / mixext->maxvalue);
+ }
+ break;
+ default:
+ return;
+ }
+}
+
+static int
+oss4_mixer_get_control_val (int fd, oss_mixext *mixext, int *val)
+{
+ oss_mixer_value ossval = { 0, };
+
+ /* ossval.dev = mixext->dev; */
+ ossval.dev = -1; /* if -1 on entry then is ignored */
+ /*
+ * The real way to pick a control on a mixer is with this number.
+ * Note that control numbers are uniq across all mixers. So dev
+ * can just be ignored. When dev is included it will only be used
+ * to check for correct dev from userland. But it will not be used
+ * to select a mixer.
+ */
+ ossval.ctrl = mixext->ctrl;
+ ossval.timestamp = mixext->timestamp;
+
+ if (ioctl (fd, SNDCTL_MIX_READ, &ossval) == -1) {
+ pa_log_debug («SNDCTL_MIX_READ failed»);
+ *val = 0;
+ return -1;
+ }
+
+ *val = ossval.value;
+ pa_log_debug («got value 0x%08x from %s», *val, mixext->extname);
+ return 0;
+}
+
+static int
+oss4_mixer_set_control_val (int fd, oss_mixext *mixext, int val)
+{
+ oss_mixer_value ossval = { 0, };
+
+ /* ossval.dev = mixext->dev; */
+ ossval.dev = -1; /* if -1 on entry then is ignored */
+ /*
+ * The real way to pick a control on a mixer is with this number.
+ * Note that control numbers are uniq across all mixers. So dev
+ * can just be ignored. When dev is included it will only be used
+ * to check for correct dev from userland. But it will not be used
+ * to select a mixer.
+ */
+ ossval.ctrl = mixext->ctrl;
+ ossval.timestamp = mixext->timestamp;
+ ossval.value = val;
+
+ if (ioctl (fd, SNDCTL_MIX_WRITE, &ossval) == -1) {
+ pa_log_debug («SNDCTL_MIX_WRITE failed»);
+ return -1;
+ }
+
+ pa_log_debug («set value 0x%08x on %s», val, mixext->extname);
+ return 0;
+}
+
+int pa_oss_get_volume(int fd, oss_mixext *mixext, const pa_sample_spec *ss, pa_cvolume *volume) {
+ int v = 0;
+
+ if (oss4_mixer_get_control_val (fd, mixext, &v) != 0) {
+ pa_log_debug («Getting volume failed»);
+ return -1;
+ }
+
+ pa_cvolume_reset(volume, ss->channels);
+
+ oss4_mixer_slider_unpack_volume (mixext, v, volume);
+
+ return 0;
+}
+
+int pa_oss_set_volume(int fd, oss_mixext *mixext, const pa_sample_spec *ss, const pa_cvolume *volume) {
+ int val = 0;
+
+ val = oss4_mixer_slider_pack_volume (mixext, ss->channels, volume);
+
+ if (oss4_mixer_set_control_val (fd, mixext, val) != 0) {
+ pa_log_debug («Setting volume failed»);
+ return -1;
+ }
+
+ return 0;
+}
+
+#else
+
int pa_oss_get_volume(int fd, unsigned long mixer, const pa_sample_spec *ss, pa_cvolume *volume) {
char cv[PA_CVOLUME_SNPRINT_VERBOSE_MAX];
unsigned vol;
@@ -288,6 +472,7 @@ int pa_oss_set_volume(int fd, unsigned l
pa_log_debug(«Wrote mixer settings: %s», pa_cvolume_snprint(cv, sizeof(cv), volume));
return 0;
}
+#endif

static int get_device_number(const char *dev) {
const char *p, *e;
@@ -386,9 +571,11 @@ int pa_oss_get_hw_description(const char
return r;
}

-static int open_mixer(const char *mixer) {
+int pa_oss_open_mixer(const char *mixer) {
int fd;

+ pa_log_debug («Opening device %s», mixer);
+
if ((fd = pa_open_cloexec(mixer, O_RDWR|O_NDELAY, 0)) >= 0)
return fd;

@@ -400,19 +587,22 @@ int pa_oss_open_mixer_for_device(const c
char *fn;
int fd;

– if ((n = get_device_number(device)) < 0)
+ if ((n = get_device_number(device)) < 0) { + pa_log_debug («Cannot find device»); return -1; + } if (n == 0) – if ((fd = open_mixer(«/dev/mixer»)) >= 0)
+ if ((fd = pa_oss_open_mixer(«/dev/mixer»)) >= 0)
return fd;

fn = pa_sprintf_malloc(«/dev/mixer%i», n);
– fd = open_mixer(fn);
+ fd = pa_oss_open_mixer(fn);
pa_xfree(fn);

if (fd < 0)
pa_log_warn(«Failed to open mixer ‘%s’: %s», device, pa_cstrerror(errno));
+ else

return fd;
}
diff -rupN pulseaudio-5.99.3.old/src/modules/oss/oss-util.h pulseaudio-5.99.3/src/modules/oss/oss-util.h
— pulseaudio-5.99.3.old/src/modules/oss/oss-util.h 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/modules/oss/oss-util.h 2015-02-08 22:11:11.582249622 +0200
@@ -29,11 +29,21 @@ int pa_oss_auto_format(int fd, pa_sample

int pa_oss_set_fragments(int fd, int frags, int frag_size);

+#define HAVE_OSSV4
+
+#ifdef HAVE_OSSV4
+int pa_oss_set_volume(int fd, oss_mixext *mixext, const pa_sample_spec *ss, const pa_cvolume *volume);
+int pa_oss_get_volume(int fd, oss_mixext *mixext, const pa_sample_spec *ss, pa_cvolume *volume);
+
+#else
+
int pa_oss_set_volume(int fd, unsigned long mixer, const pa_sample_spec *ss, const pa_cvolume *volume);
int pa_oss_get_volume(int fd, unsigned long mixer, const pa_sample_spec *ss, pa_cvolume *volume);
+#endif

int pa_oss_get_hw_description(const char *dev, char *name, size_t l);

int pa_oss_open_mixer_for_device(const char *device);
+int pa_oss_open_mixer(const char *device);

#endif
diff -rupN pulseaudio-5.99.3.old/src/pulse/sample.h pulseaudio-5.99.3/src/pulse/sample.h
— pulseaudio-5.99.3.old/src/pulse/sample.h 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/pulse/sample.h 2015-02-08 22:11:11.582624201 +0200
@@ -121,7 +121,9 @@ PA_C_DECL_BEGIN
#if defined(__sparc__) && defined(_BIG_ENDIAN)
#define WORDS_BIGENDIAN
#endif

+#if defined(_BIG_ENDIAN)
+#define WORDS_BIGENDIAN
+#endif
#endif

/** Maximum number of allowed channels */
diff -rupN pulseaudio-5.99.3.old/src/pulsecore/core-scache.h pulseaudio-5.99.3/src/pulsecore/core-scache.h
— pulseaudio-5.99.3.old/src/pulsecore/core-scache.h 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/pulsecore/core-scache.h 2015-02-08 22:11:11.582922144 +0200
@@ -25,7 +25,6 @@
#include <pulsecore/memchunk.h> #include <pulsecore/sink.h>

-#define PA_SCACHE_ENTRY_SIZE_MAX (1024*1024*16)

typedef struct pa_scache_entry {
uint32_t index;
@@ -65,4 +64,5 @@ size_t pa_scache_total_size(pa_core *c);

void pa_scache_unload_unused(pa_core *c);

+#define PA_SCACHE_ENTRY_SIZE_MAX (1024*1024*16)
#endif
diff -rupN pulseaudio-5.99.3.old/src/pulsecore/shm.c pulseaudio-5.99.3/src/pulsecore/shm.c
— pulseaudio-5.99.3.old/src/pulsecore/shm.c 2015-01-21 16:16:53.000000000 +0200
+++ pulseaudio-5.99.3/src/pulsecore/shm.c 2015-02-08 22:11:11.583260666 +0200
@@ -371,8 +371,11 @@ int pa_shm_cleanup(void) {
if (strncmp(de->d_name, «pulse-shm-«, SHM_ID_LEN))
#endif
continue;

+#if defined(__sun)
+ if (pa_atou(de->d_name + 10, &id) < 0) +#else if (pa_atou(de->d_name + SHM_ID_LEN, &id) < 0)
+#endif
continue;

if (pa_shm_attach(&seg, id, false) < 0) diff -rupN pulseaudio-5.99.3.old/src/utils/padsp.c pulseaudio-5.99.3/src/utils/padsp.c — pulseaudio-5.99.3.old/src/utils/padsp.c 2015-01-21 16:16:53.000000000 +0200 +++ pulseaudio-5.99.3/src/utils/padsp.c 2015-02-08 22:17:07.921244432 +0200 @@ -2275,6 +2275,7 @@ static int dsp_ioctl(fd_info *i, unsigne break; } +#ifndef __sun case SOUND_PCM_READ_RATE: debug(DEBUG_LEVEL_NORMAL, __FILE__»: SOUND_PCM_READ_RATE\n»); @@ -2298,6 +2299,7 @@ static int dsp_ioctl(fd_info *i, unsigne *(int*) argp = pa_sample_size(&i->sample_spec)*8;
pa_threaded_mainloop_unlock(i->mainloop);
break;
+#endif

case SNDCTL_DSP_GETOPTR: {
count_info *info;
@@ -2368,7 +2370,7 @@ fail:
return ret;
}

-#ifdef sun
+#ifdef __sun
int ioctl(int fd, int request, …) {
#else
int ioctl(int fd, unsigned long request, …) {

Programming and Linguistic Imperialism

Posted in Παιδεία, Πληροφορική by asyropoulos on Αύγουστος 3, 2014

In 2010, the book Steps in Scala, which I co-authored, was published by Cambridge University Press. The book got various reviews but I think the reviews that complained about Greek variable names were teh most annoying! The book was written by two people whose native language is not English and who use their own language in the programs they write. A practice that is followed by the majority of programmers since most programmers do not have English as their native language. In addition, the Unicode standard was created to allow computer system to handle non-Latin characters in a unified way. Thus, although all modern operating systems are Unicode-aware and provide many different keyboard layouts, still people think that in programming one should use only English! And although in both Java and Scala one can use ant Unicode character in the name of an identifier, still most books do not bother showing examples where this happens, the book got a bad review because we dared to use Greek and Cyrillic letters in many examples! Go figure…

Compiling OpenOffice4

Posted in Πληροφορική, OpenIndiana, OpenSolaris by asyropoulos on Φεβρουαρίου 5, 2014

NOTE: The patches that are described below have been included in the source tree of OpenOffice and some of them in the source tree of LibreOffice. In all cases the patches have been included using the Apache License 2.0 and the corresponding license for LibreOffice.

 

Recently I tried to compile the latest version of OpenOffice4. Since I do not think SunStudio is worth the trouble, I decided tocompile using gcc and GNU ld. I have used gcc v. 4.8.2 and GNU ld (GNU Binutils) 2.24. Also, I have used Perl 5.16.3 and Java version «1.7.0_51». The following commands show what I did to configure the system:

$ export CONFIG_SHELL=/bin/bash
$ export LD_ALTEXEC=/opt/gnu/bin/gld 
$ PATH=/opt/gnu/ant/bin:/opt/gnu/perl5/5.16.3/bin:$PATH
$ export ANT_HOME=/opt/gnu/ant/
$ export JAVA_HOME=/usr/jdk/jdk1.7.0
$ autoconf
$ ./configure \\
   --with-dmake-url=http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2\
   --with-epm-url=http://www.msweet.org/files/project2/epm-3.7-source.tar.gz --disable-odk\ 
   --with-lang="el en" \
   --with-junit=/extra/sources/OpenOffice/java/junit-4.11.jar --disable-randr \ 
   --enable-category-b --enable-pdfimport \
   --enable-wiki-publisher --with-dict=ALL  
   --with-build-version="Build by Apostolos Syropoulos" \
   --with-package-format="pkg" --with-jdk-home=/usr/jdk/jdk1.7.0\
   --without-stlport --with-system-libxml
$ ./bootstrap
$ source SolarisX86GccEnv.Set.sh
$ cd instsetoo_native
$ build --all

Note that it might be helpful to set the varible GNUMAKE in file SolarisX86GccEnv.Set.sh. Also, before starting to build you should make sure you have updated some of the makefiles. In particular, I had to modify the following files:

aoo4/main/solenv/gbuild/platform/solaris.mk
aoo4/main/solenv/inc/unxsogi.mk
aoo4/main/solenv/inc/tg_compv.mk

The last file should be modified as the following patch shows:

--- tg_compv.mk.old	Τετ Φεβ  5 18:25:31 2014
+++ tg_compv.mk	Παρ Ιαν 10 20:00:33 2014
@@ -28,7 +28,9 @@
 .IF "$(COMNAME)"=="" || "$(COMPATH:s!\!/!)"!="$(COMPATH_STORED)"
 .IF "$(L10N_framework)"==""

-COMNAME:=
+COM:=GCC
+COMNAME:=gcc3
+COMID=gcc3

 .IF "$(COM)"=="GCC"
 CFLAGSVERSION=-dumpversion
@@ -157,3 +159,5 @@

 .ENDIF			# "$(L10N_framework)"==""
 .ENDIF			# "$(COMNAME)"==""
+COMID=gcc3
+SHORTSTDCPP3="6"

This should be modified, at least in principle, by the configuration process but this is not something I have noticed. Now, the system has only one makefile for Solaris which is wrong! So I had to create one file based on the corresponding Linux makefile. Note that OpenOffice uses both dmake and GNUmake and the following file is used by GNUmake.

#File solaris.mk

GUI := UNX
COM := GCC

gb_MKTEMP := mktemp -t gbuild.XXXXXX

gb_CC := gcc
gb_CXX := g++
gb_GCCP := gcc
gb_AR := ar
gb_AWK := /usr/xpg4/bin/awk
gb_CLASSPATHSEP := :

# use CC/CXX if they are nondefaults
ifneq ($(origin CC),default)
gb_CC := $(CC)
gb_GCCP := $(CC)
endif
ifneq ($(origin CXX),default)
gb_CXX := $(CXX)
endif

gb_OSDEFS := \
	-D$(OS) \
	-D$(GUI) \
	-DSYSV \
	-DSUN \
	-DSUN4 \
	-D_REENTRANT \
	-D_POSIX_PTHREAD_SEMANTICS \
	-D_PTHREADS \
	-DUNIX \
	-DUXN \

ifeq ($(CPUNAME),INTEL)
gb_OSDEFS += -DINTEL

endif

ifeq ($(GXX_INCLUDE_PATH),)
GXX_INCLUDE_PATH=$(COMPATH)/include/c++/$(shell gcc -dumpversion)
endif

gb_COMPILERDEFS := \
	-D$(COM) \
	-DCPPU_ENV=gcc3 \
	-DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \

gb_CFLAGS := \
	-Wall \
	-Wendif-labels \
	-Wextra \
	-Wshadow \
	-fPIC \
	-fmessage-length=0 \
	-fno-common \
	-fno-strict-aliasing \
	-pipe \

gb_CXXFLAGS := \
	-Wall \
	-Wendif-labels \
	-Wextra \
	-Wno-ctor-dtor-privacy \
	-Wno-non-virtual-dtor \
	-Wshadow \
	-fPIC \
	-fmessage-length=0 \
	-fno-common \
	-fno-strict-aliasing \
	-fno-use-cxa-atexit \
	-pipe \

ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
gb_CFLAGS_WERROR := -Werror
gb_CXXFLAGS_WERROR := -Werror
endif

gb_LinkTarget_EXCEPTIONFLAGS := \
	-DEXCEPTIONS_ON \
	-fexceptions \
	-fno-enforce-eh-specs \

gb_LinkTarget_NOEXCEPTIONFLAGS := \
	-DEXCEPTIONS_OFF \
	-fno-exceptions \

gb_LinkTarget_LDFLAGS += \
	$(subst -L../lib , ,$(SOLARLIB)) \
	-w \
	-lpthread  \
	-Bdirect \
	-z defs \
	-z combreloc \

ifeq ($(gb_DEBUGLEVEL),2)
gb_COMPILEROPTFLAGS := -O0
else
gb_COMPILEROPTFLAGS := -Os
endif

gb_COMPILERNOOPTFLAGS := -O0

# Helper class

gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs)

# convert parametters filesystem root to native notation
# does some real work only on windows, make sure not to
# break the dummy implementations on unx*
define gb_Helper_convert_native
$(1)
endef

# CObject class

define gb_CObject__command
$(call gb_Output_announce,$(2),$(true),C  ,3)
$(call gb_Helper_abbreviate_dirs,\
	mkdir -p $(dir $(1)) && \
	mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \
	$(gb_CC) \
		$(DEFS) $(CFLAGS) \
		-c $(3) \
		-o $(1) \
		-MMD -MT $(call gb_CObject_get_target,$(2)) \
		-MF $(call gb_CObject_get_dep_target,$(2)) \
		-I$(dir $(3)) \
		$(INCLUDE))
endef

# CxxObject class

define gb_CxxObject__command
$(call gb_Output_announce,$(2),$(true),CXX,3)
$(call gb_Helper_abbreviate_dirs,\
	mkdir -p $(dir $(1)) && \
	mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \
	$(gb_CXX) \
		$(DEFS) $(CXXFLAGS) \
		-c $(3) \
		-o $(1) \
		-MMD -MT $(call gb_CxxObject_get_target,$(2)) \
		-MF $(call gb_CxxObject_get_dep_target,$(2)) \
		-I$(dir $(3)) \
		$(INCLUDE_STL) $(INCLUDE))
endef

# LinkTarget class

define gb_LinkTarget__get_rpath_for_layer
$(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
endef

gb_LinkTarget__RPATHS := \
	URELIB:\dORIGIN \
	UREBIN:\dORIGIN/../lib:\dORIGIN \
	OOO:\dORIGIN:\dORIGIN/../ure-link/lib \
	BRAND:\dORIGIN:\dORIGIN/../basis-link/program:\dORIGIN/../basis-link/ure-link/lib \
	SDKBIN:\dORIGIN/../../ure-link/lib \
	NONEBIN:\dORIGIN/../lib:\dORIGIN \

gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)

ifeq ($(gb_DEBUGLEVEL),2)
gb_LinkTarget_CXXFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline

endif

gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))

define gb_LinkTarget__command_dynamiclink
$(call gb_Helper_abbreviate_dirs,\
	mkdir -p $(dir $(1)) && \
	$(gb_CXX) \
		$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
		$(subst \d,$$,$(RPATH)) $(LDFLAGS) \
		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
		$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
		$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
		$(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
		$(patsubst %,-l%,$(EXTERNAL_LIBS)) \
		$(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
		-o $(1))
endef

define gb_LinkTarget__command_staticlink
$(call gb_Helper_abbreviate_dirs,\
	mkdir -p $(dir $(1)) && \
	$(gb_AR) -rsu $(1) \
		$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
		$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
		$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
		2> /dev/null)
endef

define gb_LinkTarget__command
$(call gb_Output_announce,$(2),$(true),LNK,4)
$(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
endef

# Library class

gb_Library_DEFS :=
gb_Library_TARGETTYPEFLAGS := -shared -Wl,-z,noexecstack
gb_Library_SYSPRE := lib
gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
gb_Library_PLAINEXT := .so
gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
ifeq ($(gb_PRODUCT),$(true))
gb_Library_STLEXT := port_gcc$(gb_Library_PLAINEXT)
else
gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
endif

ifeq ($(CPUNAME),X86_64)
gb_Library_OOOEXT := $(gb_Library_PLAINEXT)
gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
else
gb_Library_OOOEXT := $(gb_Library_PLAINEXT)
gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
endif

gb_STDLIBS := \
        m \
        c \

gb_Library_PLAINLIBS_NONE += \
	$(gb_STDLIBS) \
	dl \
	freetype \
	jpeg \
	pthread \
	X11 \
	Xext \
	SM \
	ICE \
	z \
	cppunit

gb_Library_FILENAMES := \
	$(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
	$(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
	$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
	$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
	$(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
	$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
	$(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
	$(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
	$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \

gb_Library_LAYER := \
	$(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
	$(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
	$(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
	$(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
	$(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
	$(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
	$(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
	$(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \

define gb_Library_get_rpath
'-R$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1)))'
endef

define gb_Library_Library_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))

endef

# StaticLibrary class

gb_StaticLibrary_DEFS :=
gb_StaticLibrary_SYSPRE := lib
gb_StaticLibrary_PLAINEXT := .a
gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)

gb_StaticLibrary_FILENAMES := \
	$(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
	$(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \

gb_StaticLibrary_StaticLibrary_platform =

# Executable class

gb_Executable_EXT :=

gb_Executable_LAYER := \
	$(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
	$(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
	$(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
	$(foreach exe,$(gb_Executable_BRAND),$(exe):BRAND) \
	$(foreach exe,$(gb_Executable_NONE),$(exe):NONEBIN) \

define gb_Executable_get_rpath
'-R$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))'
endef

define gb_Executable_Executable_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1))

endef

# CppunitTest class

gb_CppunitTest_CPPTESTPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
gb_CppunitTest_SYSPRE := libtest_
gb_CppunitTest_EXT := .so
gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)

define gb_CppunitTest_CppunitTest_platform
$(call gb_LinkTarget_get_target,$(2)) : RPATH :=

endef

# JunitTest class

define gb_JunitTest_JunitTest_platform
$(call gb_JunitTest_get_target,$(1)) : DEFS := \
	-Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(OUTDIR)/installation/opt/openoffice.org3/program/soffice}" \
    -Dorg.openoffice.test.arg.env=LD_LIBRARY_PATH \
    -Dorg.openoffice.test.arg.user=file://$(call gb_JunitTest_get_userdir,$(1)) \

endef

# SdiTarget class

gb_SdiTarget_SVIDLPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib

# SrsPartMergeTarget

gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib

# SrsPartTarget class

gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc
gb_SrsPartTarget_RSCCOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)

define gb_SrsPartTarget__command_dep
$(call gb_Helper_abbreviate_dirs,\
	$(gb_GCCP) \
		-MM -MT $(call gb_SrsPartTarget_get_target,$(1)) \
		$(INCLUDE) \
		$(DEFS) \
		-c -x c++-header $(2) \
		-o $(call gb_SrsPartTarget_get_dep_target,$(1)))
endef

# ComponentTarget

gb_XSLTPROCPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
gb_Library_COMPONENTPREFIXES := \
    OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \
    URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \

The file that follows is used by dmake:

#File unxsogi.mk

# mk file for unxsogi
ASM=/opt/gnu/bin/gas
AFLAGS=
CDEFAULTOPT*=-O2

SOLAR_JAVA=TRUE
JAVAFLAGSDEBUG=-g

# _PTHREADS is needed for the stl
CDEFS+=-D_PTHREADS -D_REENTRANT -DSYSV -DSUN -DSUN4 -D_POSIX_PTHREAD_SEMANTICS -D_USE_NAMESPACE=1 

.IF "$(SOLAR_JAVA)"!=""
JAVADEF=-DSOLAR_JAVA
.IF "$(debug)"==""
JAVA_RUNTIME=-ljava
.ELSE
JAVA_RUNTIME=-ljava_g
.ENDIF
.ENDIF 

# architecture dependent flags for the C and C++ compiler that can be changed by
# exporting the variable ARCH_FLAGS="..." in the shell, which is used to start build
ARCH_FLAGS*=

CXX*=g++
CC*=gcc
CFLAGS=-c
CFLAGSCC= -pipe $(ARCH_FLAGS) 

CFLAGSEXCEPTIONS=-fexceptions
CFLAGS_NO_EXCEPTIONS=-fno-exceptions

CFLAGSCXX= -pipe $(ARCH_FLAGS) -Wno-ctor-dtor-privacy -fno-use-cxa-atexit
.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
CFLAGSCXX += -fvisibility-inlines-hidden
.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"

PICSWITCH:=-fPIC

CFLAGSOBJGUIMT=
CFLAGSOBJCUIMT=
CFLAGSSLOGUIMT=$(PICSWITCH)
CFLAGSSLOCUIMT=$(PICSWITCH)
CFLAGSPROF=
CFLAGSDEBUG=-g
CFLAGSDBGUTIL=
CFLAGSOPT=-O2
CFLAGSNOOPT=
CFLAGSOUTOBJ=-o

STATIC		= -Wl,-Bstatic
DYNAMIC		= -Wl,-Bdynamic

LINK*=$(CXX)
LINKC*=$(CC)

LINKFLAGS=-lstdc++
LINKFLAGSAPPGUI=-Wl,-export-dynamic
LINKFLAGSSHLGUI=-shared
LINKFLAGSAPPCUI=-Wl,-export-dynamic
LINKFLAGSSHLCUI=-shared
LINKFLAGSTACK=
LINKFLAGSPROF=
LINKFLAGSOPT=

LINKFLAGS=
LINKFLAGSAPPGUI=
LINKFLAGSSHLGUI=-shared
LINKFLAGSAPPCUI=
LINKFLAGSSHLCUI=-shared
LINKFLAGSTACK=
LINKFLAGSPROF=
LINKFLAGSDEBUG=-ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
LINKFLAGSOPT=
LINKFLAGSDEFS*=-Wl,-z,defs
LINKFLAGSRUNPATH_URELIB=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_UREBIN=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_OOO=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_SDK=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_BRAND=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_OXT=
LINKFLAGSRUNPATH_BOXT=-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_NONE=
LINKFLAGS=-Wl,-z,combreloc $(LINKFLAGSDEFS)
#LINKVERSIONMAPFLAG=-M
LINKVERSIONMAPFLAG=
#LINKFLAGSNOEXSTK*=-Wl,-M,/usr/lib/ld/map.noexstk 
LINKFLAGSNOEXSTK*=-Wl,-z,noexecstack
LINKFLAGSAPPGUI+=$(LINKFLAGSNOEXSTK)
LINKFLAGSAPPCUI+=$(LINKFLAGSNOEXSTK)

# enable visibility define in "sal/types.h"
.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
CDEFS += -DHAVE_GCC_VISIBILITY_FEATURE
.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"

# Reihenfolge der libs NICHT egal!

STDLIBCPP=-lstdc++

STDOBJVCL=$(L)/salmain.o
STDOBJGUI=
STDSLOGUI=
STDOBJCUI=
STDSLOCUI=

# libraries for linking shared libraries
STDSHLGUIMT=$(DYNAMIC) -lpthread -lthread -lm
STDSHLCUIMT=$(DYNAMIC) -lpthread -lthread -lm

STDLIBGUIMT+=-lX11

LIBMGR=ar
LIBFLAGS=-r
# LIBEXT=.so

IMPLIB=
IMPLIBFLAGS=

MAPSYM=
MAPSYMFLAGS=

RC=irc
RCFLAGS=-fo$@ $(RCFILES)
RCLINK=
RCLINKFLAGS=
RCSETVERSION=

DLLPOSTFIX=
DLLPRE=lib
DLLPOST=.so

Note that initially the use of map files is diabled. Now we can start building OpenOffice. Below, I am copying the notes I kept while building.

================================================================================================
build --all:soltools

in file /extra/sources/OpenOffice./aoo4/main/soltools/mkdepend
change -lCstd to -stdc++
Make this change in all makefiles :-(

in file aoo4/main/soltools/adjustvisibility/adjustvisibility.cxx
add #include <string.h>
=================================================================================================
build --all:sal

Apply the following patches

--- sal/osl/unx/file.cxx.old	Πεμ Δεκ 26 19:00:55 2013
+++ sal/osl/unx/file.cxx	Πεμ Δεκ 26 19:01:22 2013
@@ -1092,7 +1092,7 @@
             OSL_TRACE(
                 "posix_madvise(..., POSIX_MADV_WILLNEED) failed with %d", e);
         }
-#elif defined SOLARIS
+#elif defined NOTSOLARIS
         if (madvise(static_cast(p), nLength, MADV_WILLNEED) != 0)
         {
             OSL_TRACE("madvise(..., MADV_WILLNEED) failed with %d", errno);

--- sal/osl/unx/util.c.old	Πεμ Δεκ 26 21:05:19 2013
+++ sal/osl/unx/util.c	Πεμ Δεκ 26 21:04:02 2013
@@ -313,7 +313,7 @@
 #endif

 #if    ( defined(__GNUC__) && (defined(X86) || defined(X86_64)) )\
-    || ( defined(SOLARIS) && defined (__SUNPRO_C)  && defined(__i386) )
+    || ( defined(SOLARIS) && ( defined (__SUNPRO_C) || defined(__GNUC__) ) && defined(__i386) )

 /* Safe default */
 int osl_isSingleCPU = 0;

Also, delete the information about a map file in sal/util/makefile.mk

==================================================================================================
build --all:salhelper

Delete info about map file in 

./main/salhelper/source/makefile.mk

===================================================================================================
build --all:store

Delete info about map file in 

./main/store/util//makefile.mk

===================================================================================================

build --all:registry

Delete the information about a map file in 

./main/registry/util/makefile.mk

=====================================================================================================================

build --all:openssl 

cd ./unxsogi.pro/misc/build/openssl-0.9.8o/. && Configure solaris-x86-gcc -I/usr/include -L/usr/lib shared && touch so_configured_openssl

Build and manually copy the shared library

These files are not UTF-8 encoded and so they don't compile:

/extra/sources/OpenOffice./aoo4/main/apache-commons/unxsogi.pro/misc/build/commons-httpclient-3.1/src/examples/ClientApp.java
/extra/sources/OpenOffice./aoo4/main/apache-commons/unxsogi.pro/misc/build/commons-httpclient-3.1/src/examples/TrivialApp.java

http://lists.freedesktop.org/archives/libreoffice/2013-June/053831.html

=====================================================================================================================

build --all:icu 

Apply the following patch to configure:

--- icu/unxsogi.pro/misc/build/icu/source/configure.old	Παρ Δεκ 27 15:38:13 2013
+++ icu/unxsogi.pro/misc/build/icu/source/configure	Παρ Δεκ 27 15:42:21 2013
@@ -2969,7 +2969,7 @@
             CFLAGS="$CFLAGS -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmi
ssing-prototypes -Wwrite-strings -Wno-long-long"
             case "${host}" in
             *-*-solaris*)
-                CFLAGS="$CFLAGS -D__STDC__=0";;
+                CFLAGS="$CFLAGS -std=c99 -D_XPG6 -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long";;
             esac
         else
             case "${host}" in
@@ -2982,10 +2982,10 @@
         fi
         if test "$GXX" = yes
         then
-            CXXFLAGS="$CXXFLAGS -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long"
+            CXXFLAGS="$CXXFLAGS -std=c++11 -D_XPG6 -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long"
             case "${host}" in
             *-*-solaris*)
-                CXXFLAGS="$CXXFLAGS -D__STDC__=0";;
+                CXXFLAGS="$CXXFLAGS";;
             esac
         else
             case "${host}" in

Reconfigure with

./configure --enable-layout --enable-static --enable-shared=yes --enable-64bit-libs=no

and build using the build --all:icu command.

Also add #define _XPG6 to tools/ctestfw/unicode/uperf.h

======================================================================================================================
build --all:nss <--- 12/01/2014

Add NS_USE_GCC = 1 to nss-3.14.4/mozilla/security/coreconf/SunOS5.mk  

Add #include  to nss/unxsogi.pro/misc/build/nss-3.14.4/mozilla/nsprpub/pr/src/pthreads/ptio.c

Add #include  to nss/unxsogi.pro/misc/build/nss-3.14.4/mozilla/security/nss/lib/freebl/unix_rand.c

======================================================================================================================
build --all:libxmlsec 

First do:

cd /extra/sources/OpenOffice/aoo4/main/nss/unxsogi.pro/misc/build/nss-3.14.4/mozilla
mkdir -p /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/
mkdir -p /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/obsolete
mkdir -p /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nspr
cp ./security/nss/lib/nss/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./dist/out/include/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/util/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./nsprpub/pr/include/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./nsprpub/pr/include/obsolete/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/obsolete/.
cp ./nsprpub/pr/include/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./nsprpub/pr/include/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nspr/.
cp ./dist/out/include/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nspr/.
cp ./security/nss/lib/cryptohi/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/certdb/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/pkcs7/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/smime/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/pkcs12/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/freebl/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./security/nss/lib/freebl/ecl/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.
cp ./dist/public/nss/*.h /extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro/include/nss/.

Next do

$ cd /extra/sources/OpenOffice/aoo4/main/libxmlsec/unxsogi.pro/misc/build/xmlsec1-1.2.14
$ ./configure ADDCFLAGS= CPPFLAGS= --with-pic --disable-shared --disable-crypto-dl\
  --with-libxslt=no --with-gnutls=no LIBXML2LIB=-lxml2 --enable-pkgconfig=no \
  --with-openssl=/extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro \
  --with-nss=/extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro \
  --with-nspr=/extra/sources/OpenOffice/aoo4/main/solver/410/unxsogi.pro
$ cd ..
$ touch so_configured_so_xmlsec1

Now you can compile using build --all:libxmlsec

======================================================================================================================
build --all:cppu

delete all info about map files in

main/cppu/util/makefile.mk

======================================================================================================================
build --all:cppuhelper

delete all info about map files in

./main/cppuhelper/source/makefile.mk

======================================================================================================================
build --all:jvmfwk

delete all info about map files in

./main/jvmfwk/plugins/sunmajor/pluginlib/makefile.mk
./main/jvmfwk/source/makefile.mk

======================================================================================================================
build --all:eventattacher

delete all info about map files in

./main/eventattacher/source/makefile.mk 

======================================================================================================================
build --all:ucbhelper

delete all info about map files in

./main/ucbhelper/workben/myucp/makefile.mk

======================================================================================================================
build --all:comphelper

Apply the following patch

--- solver/410/unxsogi.pro/inc/comphelper/locale.hxx.old	Κυρ Δεκ 29 18:33:47 20
13
+++ solver/410/unxsogi.pro/inc/comphelper/locale.hxx	Κυρ Δεκ 29 18:34:33 2013
@@ -71,9 +71,11 @@
         static const Locale& DE_AT();
         static const Locale& AR();
         static const Locale& CA();
+#undef CS
         static const Locale& CS();
         static const Locale& DA();
         static const Locale& EL();
+#undef ES
         static const Locale& ES();
         static const Locale& FI();
         static const Locale& FR();

=========================================================================================================================

build --all:bridges

First apply the following patches

--- bridges/source/cpp_uno/gcc3_solaris_intel/except.cxx.old	Δευ Δεκ 30 15:29:36 2013
+++ bridges/source/cpp_uno/gcc3_solaris_intel/except.cxx	Δευ Δεκ 30 15:30:27 2013
@@ -26,6 +26,7 @@

 #include 
 #include 
+#include 
 #include 
 #include 

--- bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx.old	Δευ Ιαν 27 17:38:53 2014
+++ bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx	Δευ Ιαν 27 17:34:30 2014
@@ -45,12 +45,20 @@
 {

 //==================================================================================================
-static void callVirtualMethod(
+void callVirtualMethod(
     void * pAdjustedThisPtr,
     sal_Int32 nVtableIndex,
     void * pRegisterReturn,
     typelib_TypeClass eReturnType,
     sal_Int32 * pStackLongs,
+    sal_Int32 nStackLongs ) __attribute__((noinline));
+
+void callVirtualMethod(
+    void * pAdjustedThisPtr,
+    sal_Int32 nVtableIndex,
+    void * pRegisterReturn,
+    typelib_TypeClass eReturnType,
+    sal_Int32 * pStackLongs,
     sal_Int32 nStackLongs )
 {
 	// parameter list is mixed list of * and values
@@ -67,6 +75,13 @@
     void * stackptr;
 	asm volatile (
         "mov   %%esp, %6\n\t"
+       // preserve potential 128bit stack alignment
+        "and   $0xfffffff0, %%esp\n\t"
+        "mov   %0, %%eax\n\t"
+        "lea   -4(,%%eax,4), %%eax\n\t"
+        "and   $0xf, %%eax\n\t"
+        "sub   $0xc, %%eax\n\t"
+        "add   %%eax, %%esp\n\t"
 		// copy values
 		"mov   %0, %%eax\n\t"
 		"mov   %%eax, %%edx\n\t"

As previously delete all references to map files in the following files

./main/bridges/source/cpp_uno/gcc3_solaris_intel/makefile.mk
./main/bridges/source/jni_uno/makefile.mk

The following patch shows what I mean by deleting all references to map files:

--- bridges/source/cpp_uno/gcc3_solaris_intel/makefile.mk.old	Δευ Δεκ 30 15:32:39 20
13
+++ bridges/source/cpp_uno/gcc3_solaris_intel/makefile.mk	Δευ Δεκ 30 15:32:56 20
13
@@ -51,7 +51,7 @@

 SHL1DEF=$(MISC)$/$(SHL1TARGET).def
 SHL1IMPLIB=i$(TARGET)
-SHL1VERSIONMAP=..$/..$/bridge_exports.map
+SHL1VERSIONMAP=
 SHL1RPATH=URELIB

 SHL1OBJS = $(SLOFILES)

=========================================================================================================================build build --all:basebmp 

Apply the following patches:

--- basebmp/source/makefile.mk.old	Δευ Δεκ 30 15:46:47 2013
+++ basebmp/source/makefile.mk	Δευ Δεκ 30 15:47:28 2013
@@ -51,7 +51,7 @@

 # SunStudio 12 (-m64 and -m32 modes): three test cases of the unit tests fail 
 # if compiled with default -xalias_level (and optimization level -xO3)
-.IF "$(OS)"=="SOLARIS"
+.IF "$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
 # For Sun Studio 8 this switch does not work: compilation fails on bitmapdevice.cxx
 .IF "$(CCNUMVER)"!="00050005"
 CDEFS+=-xalias_level=compatible

-----------------------------------------------------------------------------------------------------------------------

--- basebmp/test/makefile.mk.old	Δευ Δεκ 30 15:48:32 2013
+++ basebmp/test/makefile.mk	Δευ Δεκ 30 15:47:55 2013
@@ -56,7 +56,7 @@

 # SunStudio 12 (-m64 and -m32 modes): three test cases of the unit tests fail
 # if compiled with default -xalias_level (and optimization level -xO3)
-.IF "$(OS)"=="SOLARIS" 
+.IF "$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
 # For Sun Studio 8 this switch does not work: compilation fails on bitmapdevice
.cxx
 .IF "$(CCNUMVER)"!="00050005"
 CDEFS+=-xalias_level=compatible

========================================================================================================================

build --all:hwpfilter

Delete all references to map files in file

./main/hwpfilter/source/makefile.mk

========================================================================================================================

build --all:io

Delete all references to map files in files

./main/io/source/stm/makefile.mk
./main/io/source/TextInputStream/makefile.mk
./main/io/source/TextOutputStream/makefile.mk
./main/io/source/connector/makefile.mk
./main/io/source/acceptor/makefile.mk

========================================================================================================================

build --all:stoc

Delete all references to map files in files

./main/stoc/source/javaloader/makefile.mk
./main/stoc/source/javavm/makefile.mk
./main/stoc/source/proxy_factory/makefile.mk
./main/stoc/source/corereflection/makefile.mk
./main/stoc/source/inspect/makefile.mk
./main/stoc/source/invocation/makefile.mk
./main/stoc/source/invocation_adapterfactory/makefile.mk
./main/stoc/source/namingservice/makefile.mk
./main/stoc/util/makefile.mk

=======================================================================================================================

build --all:javaunohelper

Delete all references to map files in file

./main/javaunohelper/source/makefile.mk

=======================================================================================================================

build --all:i18npool

Delete all references to map files in files

./main/i18npool/source/collator/data/makefile.mk
./main/i18npool/source/search/makefile.mk
./main/i18npool/source/textconversion/data/makefile.mk
./main/i18npool/source/localedata/data/makefile.mk
./main/i18npool/source/breakiterator/data/makefile.mk
./main/i18npool/source/indexentry/data/makefile.mk
./main/i18npool/util/makefile.mk

=========================================================================================================================

build --all:UnoControls

Delete all references to map files in file

./main/UnoControls/util/makefile.mk

==========================================================================================================================

build --all:dtrans

Delete all references to map files in files

./main/dtrans/source/generic/makefile.mk
./main/dtrans/util/makefile.mk

==========================================================================================================================

build --all:pyuno

Delete all references to map files in file

./main/pyuno/source/loader/makefile.mk

==========================================================================================================================

build --all:sccomp

Delete all references to map files in file

./main/sccomp/source/solver/makefile.mk

==========================================================================================================================

build --all:shell

Delete all references to map files in files

./main/shell/source/cmdmail/makefile.mk
./main/shell/source/unix/exec/makefile.mk
./main/shell/source/backends/localebe/makefile.mk
./main/shell/source/unix/sysshell/makefile.mk

==========================================================================================================================

build --all:xmlhelp  

Delete all references to map files in files

./main/xmlhelp/source/treeview/makefile.mk
./main/xmlhelp/util/makefile.mk 

==========================================================================================================================

build --all:sdext

Delete all references to map files in files

./main/sdext/source/presenter/makefile.mk
./main/sdext/source/minimizer/makefile.mk 

==========================================================================================================================

build --all:vcl 

--- vcl/unx/generic/app/saldisp.cxx.old	Τρι Δεκ 31 14:55:00 2013
+++ vcl/unx/generic/app/saldisp.cxx	Τρι Δεκ 31 15:39:24 2013
@@ -52,11 +52,11 @@
 #include 

 #include 
+#define USE_XINERAMA_XORG

 #ifdef USE_XINERAMA
 #ifdef USE_XINERAMA_XORG
 #include 
-#elif defined USE_XINERAMA_XSUN
 #if defined(SOLARIS) && defined(INTEL) // missing extension header in standard installation
 #define MAXFRAMEBUFFERS       16
 Bool XineramaGetState(Display*, int);

--- vcl/unx/generic/app/wmadaptor.cxx.old	Τρι Δεκ 31 15:46:14 2013
+++ vcl/unx/generic/app/wmadaptor.cxx	Τρι Δεκ 31 15:47:18 2013
@@ -1117,8 +1117,9 @@
         bOnce = false;
         XTextProperty aTestProp = { NULL, None, 0, 0 };
         const char *pText = "trustme";
+	 char* pT = const_cast(pText);
         XmbTextListToTextProperty( m_pDisplay,
-                                   &const_cast(pText),
+                                   &pT,
                                    1,
                                    XStdICCTextStyle,
                                    &aTestProp );

==========================================================================================================================

build --all:oox

--- oox/util/makefile.mk.old	Τρι Δεκ 31 18:46:43 2013
+++ oox/util/makefile.mk	Τρι Δεκ 31 18:47:15 2013
@@ -77,7 +77,7 @@
 .IF "$(SYSTEM_OPENSSL)"=="YES"
 SHL1STDLIBS+= $(OPENSSLLIB)
 .ELSE
-SHL1STDLIBS+= $(OPENSSLLIBST)
+SHL1STDLIBS+= $(OPENSSLLIB)
 .ENDIF
 .ENDIF # WNT

==========================================================================================================================

build --all:accessibility

Delete all references to map files in file

./main/accessibility/util/makefile.mk

==========================================================================================================================

build --all:fpicker

Delete all references to map files in files

./main/fpicker/source/generic/makefile.mk
./main/fpicker/source/office/makefile.mk
./main/fpicker/source/unx/gnome/makefile.mk

==========================================================================================================================

build --all:uui

Delete all references to map files in file

./main/uui/util/makefile.mk

==========================================================================================================================

build --all:canvas

Delete all references to map files in files

./main/canvas/source/factory/makefile.mk
./main/canvas/source/simplecanvas/makefile.mk
./main/canvas/source/null/makefile.mk
./main/canvas/source/vcl/makefile.mk

===========================================================================================================================

build --all:scaddins

Delete all references to map files in files

./main/scaddins/source/datefunc/makefile.mk
./main/scaddins/source/analysis/makefile.mk

===========================================================================================================================

build --all:fileaccess

Delete all references to map files in file

./main/fileaccess/source/makefile.mk

===========================================================================================================================

build --all:slideshow

Delete all references to map files in file

./main/slideshow/util/makefile.mk

===========================================================================================================================

build --all:connectivity <------ 17/01/2014

First apply the following patch

--- connectivity/source/drivers/odbcbase/ODriver.cxx.old	Τετ Ιαν  1 18:23:20 2014
+++ connectivity/source/drivers/odbcbase/ODriver.cxx	Τετ Ιαν  1 18:24:08 2014
@@ -68,7 +68,7 @@
 		// this name is referenced in the configuration and in the odbc.xml
 		// Please take care when changing it.
 }
-
+#undef SS
 typedef Sequence SS;
 //------------------------------------------------------------------------------
 SS ODBCDriver::getSupportedServiceNames_Static(  ) throw (RuntimeException)

And now delete all references to map files in files

./main/connectivity/source/drivers/mysql/makefile.mk
./main/connectivity/source/manager/makefile.mk
./main/connectivity/source/drivers/jdbc/makefile.mk
./main/connectivity/source/drivers/hsqldb/makefile.mk
./main/connectivity/source/drivers/dbase/makefile.mk
./main/connectivity/source/drivers/calc/makefile.mk
./main/connectivity/source/drivers/flat/makefile.mk
./main/connectivity/source/drivers/adabas/makefile.mk
./main/connectivity/source/drivers/odbc/makefile.mk
./main/connectivity/source/cpool/makefile.mk

===========================================================================================================================

build --all:svx  <-- This is not valid with the current build!

In file 

/extra/sources/OpenOffice./aoo4/main/svx/source/form/formcontroller.cxx

use compat_functional.hxx from LibreOffice!
http://docs.libreoffice.org/o3tl/html/compat__functional_8hxx_source.html

===========================================================================================================================

build --all:basctl

Delete all references to map files in file

./main/basctl/util/makefile.mk

===========================================================================================================================

build --all:forms

Delete all references to map files in file

./main/forms/util/makefile.mk

===========================================================================================================================

build --all:extensions

Delete all references to map files in files

./main/extensions/source/logging/makefile.mk
./main/extensions/source/dbpilots/makefile.mk
./main/extensions/source/abpilot/makefile.mk
./main/extensions/source/update/feed/makefile.mk
./main/extensions/source/oooimprovecore/makefile.mk
./main/extensions/source/bibliography/makefile.mk
./main/extensions/source/oooimprovement/makefile.mk
./main/extensions/source/xmlextract/makefile.mk
./main/extensions/source/update/check/makefile.mk 
./main/extensions/source/propctrlr/makefile.mk
./main/extensions/source/update/ui/makefile.mk
./main/extensions/source/resource/makefile.mk
./main/extensions/source/scanner/makefile.mk
./main/extensions/source/preload/makefile.mk

===========================================================================================================================

build --all:cui

Delete all references to map files in file

./main/cui/util/makefile.mk

===========================================================================================================================

build --all:starmath

Delete all references to map files in file

./main/starmath/util/makefile.mk

==================================================================================================

build --all:filter

Delete all references to map files in files

./main/filter/source/graphicfilter/ipbm/makefile.mk
./main/filter/source/graphicfilter/eras/makefile.mk
./main/filter/source/graphicfilter/itga/makefile.mk
./main/filter/source/graphicfilter/itiff/makefile.mk
./main/filter/source/graphicfilter/ipcd/makefile.mk
./main/filter/source/msfilter/powerpoint/makefile.mk
./main/filter/source/graphicfilter/ios2met/makefile.mk
./main/filter/source/xmlfilteradaptor/makefile.mk
./main/filter/source/placeware/makefile.mk
./main/filter/source/graphicfilter/egif/makefile.mk
./main/filter/source/config/cache/makefile.mk
./main/filter/source/t602/makefile.mk
./main/filter/source/svg/makefile.mk
./main/filter/source/pdf/makefile.mk
./main/filter/source/graphicfilter/ipsd/makefile.mk
./main/filter/source/xsltfilter/makefile.mk
./main/filter/source/graphicfilter/idxf/makefile.mk
./main/filter/source/graphicfilter/epbm/makefile.mk
./main/filter/source/graphicfilter/ipict/makefile.mk
./main/filter/source/graphicfilter/expm/makefile.mk
./main/filter/source/graphicfilter/epgm/makefile.mk
./main/filter/source/graphicfilter/ieps/makefile.mk
./main/filter/source/graphicfilter/iras/makefile.mk
./main/filter/source/graphicfilter/etiff/makefile.mk
./main/filter/source/graphicfilter/eppm/makefile.mk
./main/filter/source/flash/makefile.mk
./main/filter/source/graphicfilter/eps/makefile.mk
./main/filter/source/graphicfilter/ipcx/makefile.mk
./main/filter/source/xmlfilterdetect/makefile.mk
./main/filter/source/graphicfilter/eos2met/makefile.mk
./main/filter/source/graphicfilter/epict/makefile.mk
./main/filter/source/graphicfilter/icgm/makefile.mk

=========================================================================================================================

build --all:sd

Delete all references to map files in file

./main/sd/util/makefile.mk

=========================================================================================================================

build --all:desktop 

Delete all references to map files in files

./main/desktop/test/deployment/active/makefile.mk
./main/desktop/test/deployment/boxt/makefile.mk
./main/desktop/source/so_comp/makefile.mk
./main/desktop/source/deployment/gui/makefile.mk
./main/desktop/source/migration/services/makefile.mk
./main/desktop/source/app/makefile.mk
./main/desktop/source/splash/makefile.mk
./main/desktop/test/deployment/passive/makefile.mk
./main/desktop/source/deployment/makefile.mk
./main/desktop/source/offacc/makefile.mk
./main/desktop/source/pkgchk/unopkg/makefile.mk

========================================================================================================================

build --all:chart2

Delete all references to map files in files

./main/chart2/source/controller/makefile.mk
./main/chart2/source/model/makefile.mk

=======================================================================================================================

build --all:sc      

Delete all references to map files in files

./main/sc/addin/rot13/makefile.mk
./main/sc/util/makefile.mk

=======================================================================================================================

build --all:scripting

Delete all references to map files in files

./main/scripting/source/dlgprov/makefile.mk
./main/scripting/source/vbaevents/makefile.mk
./main/scripting/source/basprov/makefile.mk
./main/scripting/source/stringresource/makefile.mk

========================================================================================================================

build --all:writerfilter

Delete all references to map files in file

./main/writerfilter/util/makefile.mk

========================================================================================================================

build --all:dbaccess   

Delete all references to map files in files

./main/dbaccess/source/ext/macromigration/makefile.mk
./main/dbaccess/source/ext/adabas/makefile.mk
./main/dbaccess/util/makefile.mk
./main/dbaccess/source/filter/xml/makefile.mk 

========================================================================================================================

build --all:reportdesign

Delete all references to map files in file

./main/reportdesign/util/makefile.mk

=======================================================================================================================

build --all:xmlsecurity

In the following files the one has to fix the inclusion of nss related header files:

./aoo4/main/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/ciphercontext.hxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/nssinitializer.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/digestcontext.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.hxx
./aoo4/main/solver/410/unxsogi.pro/inc/external/xmlsec/nss/app.h
./aoo4/main/solver/410/unxsogi.pro/inc/external/xmlsec/nss/tokens.h
./aoo4/main/solver/410/unxsogi.pro/inc/external/xmlsec/nss/akmngr.h
./aoo4/main/solver/410/unxsogi.pro/inc/external/xmlsec/nss/crypto.h
./aoo4/main/solver/410/unxsogi.pro/inc/external/xmlsec/nss/x509.h
./aoo4/main/xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx
./aoo4/main/xmlsecurity/source/xmlsec/nss/secerror.cxx

Also, delete all references to map files in file

./main/xmlsecurity/util/makefile.mk

=======================================================================================================================

build --all:remotebridges

Delete all references to map files in file

./main/remotebridges/source/unourl_resolver/makefile.mk

=======================================================================================================================

build --all:testtools 

Delete all references to map files in file

./main/testtools/source/bridgetest/makefile.mk

=======================================================================================================================
build --all:lingucomponent

Delete all references to map files in files

./main/lingucomponent/source/thesaurus/libnth/makefile.mk
./main/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
./main/lingucomponent/source/languageguessing/makefile.mk
./main/lingucomponent/source/spellcheck/spell/makefile.mk

======================================================================================================================
build --all:ucb  

Delete all references to map files in files

./main/ucb/source/ucp/hierarchy/makefile.mk
./main/ucb/source/sorter/makefile.mk
./main/ucb/source/ucp/webdav/makefile.mk
./main/ucb/source/ucp/package/makefile.mk
./main/ucb/source/ucp/gvfs/makefile.mk
./main/ucb/source/core/makefile.mk
./main/ucb/source/cacher/makefile.mk
./main/ucb/source/ucp/ext/makefile.mk
./main/ucb/source/ucp/tdoc/makefile.mk
./main/ucb/source/ucp/expand/makefile.mk
./main/ucb/source/ucp/file/makefile.mk
./main/ucb/source/ucp/ftp/makefile.mk

Also make the following change in file ./main/ucb/source/ucp/webdav/makefile.mk

.IF "$(SYSTEM_OPENSSL)" == "YES"
CFLAGS+= -I$(OPENSSL_CFLAGS)
SHL1STDLIBS+= $(OPENSSLLIB)
.ELSE
SHL1STDLIBS+= $(OPENSSLLIBST) <----------
.ENDIF

to

.IF "$(SYSTEM_OPENSSL)" == "YES"
CFLAGS+= -I$(OPENSSL_CFLAGS)
SHL1STDLIBS+= $(OPENSSLLIB)
.ELSE
SHL1STDLIBS+= $(OPENSSLLIB)  <-----------
.ENDIF

Before the last step make sure you set LD_LIBRARY_PATH to the absolute path leading to /main/solver/410/unxsogi.pro/lib/. That’s all.

Unix is everywhere

Posted in Πληροφορική by asyropoulos on Οκτώβριος 13, 2013

The following picture was taken in Paks, Hungary!

Unix is everywhere!

Unix is everywhere!

Δεν την παλέυουν!

Posted in Παιδεία, Πληροφορική by asyropoulos on Ιουλίου 20, 2013

Βλέποντας τη σελίδα της Ένωσης Πληροφορικών Ελλάδος είδα και στη σελίδα εγγραφής νέων μελών. Εκεί διαπίστωσα πως για να γίνεις μέλος αυτού του τόσο σημαντικού οργανισμού πρέπει να έχεις πτυχίο από έναν συγκεκριμένο κατάλογο σχολών. Τώρα αν βέβαια αν σε λένε Joseph Sifakis και δεν έχεις πρώτο πτυχίο πληροφορικής (ο Σηφάκης έχει πτυχίο ηλεκτρολόγου μηχανικού!) αλλά διδακτορικό στην πληροφορική (ή επιστήμη η/υ αν σας αρέσει περίσσότερο αυτός ο όρος) και έχεις τιμηθεί με το ACM Turing Award, δηλαδή του νόμπελ πληροφορικής, δεν μπορείς να γίνεις μέλος της ΕΠΕ γιατί απλά αυτοί μόνο ξέρουν τι είναι και τι δεν είναι πληροφορική! Φυσικά ακόμη και ο συγχωρεμένος ο Edsger Wybe Dijkstra δεν θα μπορούσα να γίνει μέλος της ΕΠΕ ακόμη και αν το ήθελε καθώς δεν είχε πρώτο πτυχίο πληροφορικής! Φυσικά το ίδιο ισχύει για πολλούς άλλους σημαντικότατους επιστήμονες Η/Υ.

Oxymora in Greek Education

Posted in Παιδεία, Πληροφορική by asyropoulos on Ιουλίου 13, 2013

Recently, the Greek government under pressure from the so-called Troika had initially decided to practically fire a great number of informatics teachers in secondary education.   On second thought, the Greek government for purely legal reasons decided not to fire informatics teachers but some others who serve in vocational education. Either way the plan is to get rid of informatics teachers. It seems to me that this clearly shows the lack of vision for education in Greece. A country who is  literally in a deep shot, needs all those people that can innovate and create jobs etc. The country does not need lawyers philologists, etc., it does need who are knowledgeable in practical matters. Thus, people should learn how to use computers and the more skilled students should learn how to program computers. Thus, the question is very simple: By firing informatics teachers what will be the benefit of Greek education in the short and the long run?

Οικονομική ανάπτυξη και πληροφορική

Posted in Παιδεία, Πληροφορική by asyropoulos on Ιουλίου 4, 2013

Στο βιβλίο με τίτλο Informatics For Peace And Development in South Asia: Perspectives of SAARC ο συγγραφέας περιγράφει γιατί ο ρόλος της πληροφορικής είναι πολύ σημαντικός για την οικονομική ανάπτυξη των χωρών της Νότιας Ασίας.  Ο λόγος φυσικά είναι πως η οικονομική ανάπτυξη εξαρτάται από την ικανότητα μας να επικοινωνούμε και να έχουμε προσβαση αλλά και να επεξεργαζομαστε πληροφορίες σε κάθε δυνατή μορφή όπως φωνή, δεδομένα, βίντεο κ.λπ.  Ασφαλώς θα συμφωνείτε πως το ίδιο θα πρέπει να ισχύει και για την Ελλάδα, έτσι δεν είναι;

Η ελληνική κυβέρνηση πρόσφατα αποφάσισε να απολύσει καθηγητές πληροφορικής επειδή προφανώς θεωρεί πως η «πληροφορική παιδεία» είναι παντελώς άχρηστη. Άλλωστε αυτό μαρτυρά και το γεγονός πως η πληροφορική δεν υπάρχει στο νέο λύκειο ενώ φυσικά υπάρχει η θεατρολογία. Ναι φυσικά γιατί η Ελλάδα έχει μια τεράστια θεατρική παράδοση και θα πρέπει οι μαθητές να  γνωρίζουν από θέατρο. Επίσης θα πρέπει να γνωρίζουν και από αρχαία ελληνικά καθώς τα αρχαία ελληνικά είναι συνδεδεμένα με τους υπολογιστές! Φυσικά όλα αυτά είναι ανοησίες (βλ., μεταξύ άλλων, το άρθρο της Wikipedia για το Hellenic Quest). Μάλιστα τα παιδιά διδάσκονται 10 ώρες γλώσσα (αρχαία & νέα) στο γυμνάσιο ενώ μία ώρα πληροφορική και μία ώρα χημεία!

Αν λοιπόν η πληροφορική είναι το κλειδί για την ανάπτυξη πως θα έρθει αυτή όταν ο Έλληνας είναι πληροφοριακά αγράμματος; Προφανώς η καλή γνώση κειμενογράφου ή λογιστικού φύλλου δεν συμπεριλαμβάνονται στην πληροφοριακη εγγραμματοσύνη!

Η κατάσταση είναι αδιέξοδη!

ΥΓ Τελικά δεν απολύθηκαν οι καθηγητές πληροφορικής αλλά αυτό δεν σημαίνει πως δεν θα απολυθούν…