RPM Community Forums

Mailing List Message of <rpm-users>

Re: ./rpmdb.h:433: error: expected specifier-qualifier-list before 'DB_SEQUENCE'

From: Jeff Johnson <n3npq@mac.com>
Date: Mon 27 Jun 2011 - 16:47:30 CEST
Message-id: <7FBBC2FB-E3C2-4EF2-B549-C5D92D47677C@mac.com>

On Jun 27, 2011, at 10:11 AM, Sriram Narayanan wrote:

> Hi Jeff:
> Some questions below:
> On Mon, Jun 27, 2011 at 7:30 PM, Jeff Johnson <n3npq@mac.com> wrote:
>> There is no simple solution that I see to the above: either more resources @rpm5.org
>> are needed (which is unlikely to happen), or users are going to have
>> to patch the released version to accommodate their own specific build needs.
> What are these resources ? People or computers ?

Interest mostly. Its utterly trivial to find hardware assets,
just the sysadmin maintenance and QA is already eating up
2-3 weeks per month of my time doing tedious "due diligence".

I can't justify that time expenditure any further.

>> The necessary changes are not all that hard:
>>        There are two places that
>>                #include <db51/db.h>
>>        is used that need to be changed. Its the "db51/" portion
>>        of the include that causes build failures.
> You've answered this before, but could you please tell us once again
> what would be the repercussions of changing this to
> #include <db.h>

That *is* what should be done. Adding any sort of hierarchical
structure to #include's causes issues. E.g. building rpm from
a cvs checkout with
	#include <rpm/rpmlib.h>
is impossible because of the name collision on "rpm". Sure
the problem could be "fixed" by rearranging how directories
in RPM sources (in CVS) are created. But the general fix is
	Never do
		#include <foo/bar.h>
	Always add ""-I/prefix/some/where/include/foo" to CFLAGS and
		#include <bar.h>

Anyways I'm well aware of the problem, there's a snarl of build
issues conflicting with features related to
	Which sqlite should be used: from db-5.x.y or external?
that instantly appear if you try
	#include <db.h>
Been there, done that, wrestled for a month last September with
the issues that cannot be resolved until
	Should rpm embed sqlite? How?
have clearer answers.

>> And there are these 3 approaches to building RPM:
>>        1) install db-5.1.x into
>>                /usr/include/db51/db.h
>>                /usr/lib/libdb-5.1.*
> The default make install for bdb creates some other folder structures.
> I've had to symlink from those locations to the above.

Yup. Everyone does things differently.

FYI: The *.spec I use on other platforms that do not have
Berkeley DB db-5.1.x is available by checking out the top
level "distro" module from @rpm5.org cvs. Download the necessary
"official" release tar ball's from Oracle and build. WORKSFORME
almost everywhere (though I somethings have to adjust paths to
accomodate uglix vendor divergence: *BSD tends to choose different
paths than linux does hysterically while installing Berkeley DB).

>>        2) patch RPM to use a different version of Berkeley DB
>>        3) re-add Berkeley DB db-5.1.x internal to RPM.
> What is the reason that you'd removed this ? How about making this the
> default again, with us distro folk having to explicitly specify
> --with-db=external ?

The positive justification for removal is
	The released tar ball is >50% smaller without Berkeley DB included.

Sure I can flip  flop  flip  flop  forever. I have gone along
with the de facto chosen conventions of
	Always use system Berkeley DB.
largely because its a waste of time to continue the discussion.

If the choice was up to me, I'd _ALWAYS_ embed Berkeley DB everywhere
needed. Meanwhile I don't care to endlessly restate my engineering reasons to
linux "community"advocates  that just want to chant
	Bloat! Bloat! Bloat! Bloat! Bloat! Bloat!
in spite of what is recommended by Oracle (nee Sleepycat) for >10 years.

>> @rpm5.org cannot dictate which of those approaches end-users wish to choose in RPM.
> I feel that getting rpm5 to build easily is a good goal to have. I've
> learned that if I read your INSTALL document, and then follow
> devtool.conf, then life becomes easier.

The flaw here is that RPM has a whopping amount of
	Have it your own way!
flexibility. SO there's insufficient context to define "easily"
meaningfully, there's already a combinatorial failure of the
dozens of build options that cannot ever be properly tested
(even if there was a desire to do so).

E.g. its quite possible to build RPM "easily" with
	no database support
	no compression support
	no crypto digest support
and have an utterly useless executable that "builds easily".

Please note that I'm _NOT_ disagreeing with the goal. Just that
how rpm builds is way way way too complex, and its the
	Have it your own way!
complexity that needs to be ripped out imho, not made Yet More Adaptable!

73 de Jeff
Received on Mon Jun 27 16:47:34 2011
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.