Re: [Tracker] Tracker on Solaris



On 25/01/13 11:12, Frank Lahm wrote:
Hi Martyn,

Hello Frank,

2013/1/24 Martyn Russell <martyn lanedo com>:
On 10/01/13 17:31, Frank Lahm wrote:
Looking at these patches, I wonder why you use 0002 to change
uuid_unparse_lower() to uuid_unparse()?

Solaris libuuid is missing uuid_unparse_lower, it was a simple hack^wfix. :)

Hmm, this worries me. We use the _lower() variant for a reason here and it would obviously be faster to not use that. It might be a short term fix for you, but I wonder if this causes regressions for you at all?

I think a patch like this is fine if we can do it only on platforms that don't have that API. JÃrg, did Vala get pre-processor directives yet? i.e. #ifdef FOO, etc.?

Regarding the __EXTENSIONS__ part, what does that actually allow?

<http://docs.oracle.com/cd/E19253-01/816-5175/6mbba7f3l/index.html>

"Feature test macros are used by applications to indicate additional
sets of features that are desired beyond those specified by the C
standard. If an application uses only those interfaces and headers
defined by a particular standard (such as POSIX or X/Open CAE), then
it need only define the appropriate feature test macro specified by
that standard. If the application is using interfaces and headers not
defined by that standard, then in addition to defining the appropriate
standard feature test macro, it must also define __EXTENSIONS__.
Defining __EXTENSIONS__ provides the application with access to all
interfaces and headers not in conflict with the specified standard.
The application must define __EXTENSIONS__ either on the compile
command line or within the application source files."

As expected then.

On Linux,
it seems only useful for Python and MySQL. A quick Google search shows this
is needed perhaps for u_int and/or sys/types.h on Solaris - is this the
case? In any case, it seems to have little effect on Linux.

*BSD are also affected by this, requesting a UNIX compilation
environment will hide everything else not in the standard. On Linux
it's the other way around, you don't get certain functions (eg afair
pread()/pwrite()) without going into SUS. Blah! To solve this in
Netatalk we use this a header file which uses the results of platform
detection to define the right thing [tm]:

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
# ifndef _XOPEN_SOURCE
#  define _XOPEN_SOURCE 600
# endif
# ifndef __EXTENSIONS__
#  define __EXTENSIONS__
# endif
# ifndef _GNU_SOURCE
#  define _GNU_SOURCE
# endif
#endif

We can add this to our src/libtracker-common/tracker-os-dependant.[ch] files, but you add some extra checks in configure.{ac|in} right?

If you're willing to come up with a patch here, we would be happy to accept that. OR we could simply just add the above and allow you to define things in your build / set up?

I think the patch you did before is a bit more of a hack otherwise.

I am pretty sure we've defined GNU_SOURCE in a few places too, we could clear all that up with it done in one place in libtracker-common.

I wonder how many of those cases are necessary too and how many are copy/paste entries :)

For the CPP linking issue, that will have to be a local patch for you I
think, unless there is a way to fix this otherwise. We do have a
--disable-meego-touch option, but I am guessing that doesn't help?

Missed that one, but no, doesn't help.

Sadly, this one will have to stay with you guys, it's not useful for the project to include this patch I feel.

It would be good to file a bug against automake? about this though.

--
Regards,
Martyn

Founder and CEO of Lanedo GmbH.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]