Opened 16 years ago

Closed 16 years ago

Last modified 15 years ago

#14203 closed defect (fixed)

apr fails to build if ossp-uuid is activated (dependency of postgresql83)

Reported by: nox@… Owned by: danielluke (Daniel J. Luke)
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: Cc: mww@…, jyrkiwahlstedt
Port:

Description

Conflicting uuid_t types error building apr
I know Daniel noticed the bug on the ml, but let's keep a trace of it here.

Attachments (3)

ossp_uuid_move.diff (1.1 KB) - added by danielluke (Daniel J. Luke) 16 years ago.
Changes to move ossp-uuid header
ossp_uuid_move.2.diff (1.2 KB) - added by danielluke (Daniel J. Luke) 16 years ago.
Changes to move ossp-uuid header
Portfile.diff (486 bytes) - added by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) 16 years ago.

Download all attachments as: .zip

Change History (16)

comment:2 Changed 16 years ago by danielluke (Daniel J. Luke)

Summary: apr fails to build if postgresql83 is activatedapr fails to build if ossp-uuid is activated (dependency of postgresql83)

comment:3 Changed 16 years ago by danielluke (Daniel J. Luke)

Cc: mww@… jwa@… added
Status: newassigned

ossp-uuid is nomaintainer, and it looks like only postgresql83 uses it.

Perhaps we can move the ossp-uuid include files (so that apr doesn't pull them in) and modify the postgresql83 port to still be able to find them?

comment:4 Changed 16 years ago by nox@…

I'd rather modify apr to not use uuid.h or fix ossp-uuid itself

comment:5 Changed 16 years ago by danielluke (Daniel J. Luke)

apr finds uuid.h from ossp-uuid (instead of the system uuid.h) because it's installed in ${prefix}/include and we add that to the CPPFLAGS.

Since the uuid.h installed by ossp-uuid is somewhat broken, I think it makes sense to instead modify where it gets installed so that a little extra work needs to be done by any ports that want the uuid.h from ossp-uuid (which is only the postgresql83 port, currently).

Of course, I would probably also have the postgres83 contrib modules (including what actually pulls in ossp-uuid as a dependency) as a variant, but that's just me ;-)

Changed 16 years ago by danielluke (Daniel J. Luke)

Attachment: ossp_uuid_move.diff added

Changes to move ossp-uuid header

Changed 16 years ago by danielluke (Daniel J. Luke)

Attachment: ossp_uuid_move.2.diff added

Changes to move ossp-uuid header

comment:6 Changed 16 years ago by danielluke (Daniel J. Luke)

Can a postgres maintainer take a look and decide if this is acceptable?

Thanks.

comment:7 Changed 16 years ago by bulk@…

Hi ya, any movement here? This problem more or less make having apache (which depends on apr) and postgres on the same box impossible. thanks! --nickg

comment:8 Changed 16 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

One solution seems to be to force apr to use the system uuid.
Attached is a patch to the apr Portfile which accomplishes this (at least on Leopard).

Changed 16 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Attachment: Portfile.diff added

comment:9 in reply to:  7 Changed 16 years ago by danielluke (Daniel J. Luke)

Replying to bulk@modp.com:

Hi ya, any movement here? This problem more or less make having apache (which depends on apr) and postgres on the same box impossible.

A workaround is to deactivate ossp-uuid just while building apr (or building apr before building postgres)

comment:10 in reply to:  8 ; Changed 16 years ago by danielluke (Daniel J. Luke)

Replying to marcuscalhounlopez@mac.com:

One solution seems to be to force apr to use the system uuid.
Attached is a patch to the apr Portfile which accomplishes this (at least on Leopard).

That could work as well (although I really think that since ossp-uuid is putting a broken header into our default include search path, that it should be ossp-uuid that gets changed).

If I have some time to build-test postgres with my proposed ossp-uuid changes, I'll commit them as I haven't heard anything back from the maintainers.

comment:11 in reply to:  10 ; Changed 16 years ago by bulk@…

Oh you are going to like this!

Summary: [tested only on OSX10.5]

ossp_uuid:

add "--includedir=${prefix}/include/ossp" to configure.args (and bump the revision)

postgres83:

nothing!

LONG ANSWER:

You don't need to change postgresql83 at all, and infact it appears putting it in ossp-uuid/uuid.h is not quite right.

I applied the patches... ossp-uuid built fine and moved the header file. But postgresql83's configure got angry and exited since it couldn't find <uuid.h> or <ossp/uuid.h> inspite of having the include changed (maybe I did it wrong).

So I changed ossp-uuid to

configure.args  --mandir=${prefix}/share/man --without-perl \
                --includedir=${prefix}/include/ossp

reinstalled ossp-uuid and then postgresql83 compiled. It did make some ugly warnings about uuid being 'present but not usable' but then the next check found ossp/uuid.h and everything was ok.

Even better it seems to work too:

# select uuid_generate_v1();
           uuid_generate_v1           
--------------------------------------
 38272eca-ff92-11dc-b100-d7c00d1e1739
(1 row)

ta-da

comment:12 in reply to:  11 Changed 16 years ago by danielluke (Daniel J. Luke)

Resolution: fixed
Status: assignedclosed

Replying to bulk@modp.com:

Oh you are going to like this!

You're right, I do!

Summary: [tested only on OSX10.5]

ossp_uuid:

add "--includedir=${prefix}/include/ossp" to configure.args (and bump the revision)

committed in r35646

It did make some ugly warnings about uuid being 'present but not usable' but then the next check found ossp/uuid.h and everything was ok.

Those warnings are a known bug (and are a conflict between the ossp-uuid uuid.h and a system include file that it shouldn't conflict with).

Thanks for your help!

comment:13 Changed 15 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

Note: See TracTickets for help on using tickets.