weird bug in rebuilding RPMs

Started by zhong ming wuabout 16 years ago5 messagesbugsgeneral
Jump to latest
#1zhong ming wu
mr.z.m.wu@gmail.com
bugsgeneral

Hello,

I'm a long time user and I had always installed postgres by compiling
from source. I recently moved to a new environment where
everything is installed as rpm and plus I need to install a newer
postgres for testing while keeping the existing version in place.
That leads me to repackage postgres rpm.

Because I will eventually be installing red hat rpm I take their
latest srpm and modify their rpm spec file in order to let me install
rpm. After trials and errors I have managed to rebuild rpm to my
satisfaction but would like to report a minor bug.

I can now rebuild rpms so that all files go under a specific directory
specified by _prefix directive in ~/.rpmmacros Forgetting lots of
other bugs that I managed to fix, this weird bug is making me use
_prefix that does not include the word "pgsql" in the path name any
where. For example if _prefix path has the word pgsqL or pgsq
or pgsqA then rebuilding is successful but if the path includes the
word pgsql or pgsql-8.1.18 or pgsqll then rebuilding breaks down.

It is failing at install stage. This is the command.
$ rpmbuild --bi spec
I always do "rpmbuild --clean spec" before any rebuilding.

What follows is the error message before it quits (prefix is
/usr/local/pgsql/bla)
-------------
make: Leaving directory `/home/me/build/BUILD/postgresql-8.1.18/contrib/xml2'
+ case `uname -i` in
++ uname -i
++ uname -i
+ mv /var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/include/pg_config.h
/var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/include/pg_config
_x86_64.h
+ install -m 644 /home/me/build/SOURCES/pg_config.h
/var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/include
++ uname -i
+ mv /var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/include/pgsql/server/pg_config.h
/var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/incl
ude/pgsql/server/pg_config_x86_64.h
mv: cannot stat
`/var/tmp/postgresql-8.1.18-2.1-root//usr/local/pgsql/bla/include/pgsql/server/pg_config.h':
No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.56667 (%install)

RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.56667 (%install)
-------------
If any one else would find it useful, I can also post a diff of the
spec file which will make it possible for repackaging and including
renaming so that it does not override the existing version. Most
bugs I encountered are of the nature: paths that should not be
hard-coded are hard-coded and vice versa.

Thanks

mr.wu

#2John R Pierce
pierce@hogranch.com
In reply to: zhong ming wu (#1)
bugsgeneral
Re: [GENERAL] weird bug in rebuilding RPMs

zhong ming wu wrote:

Would any of these rpms let me relocate to any directories I want? Can
I install them as local-postgresql-1.2.4 without overwriting current
package postgresql-1.2.3 ?

I don't know, but the packager is on this list and can perhaps better
answer than I. His rpm.spec files certainly might be useful.

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: zhong ming wu (#1)
bugsgeneral
Re: weird bug in rebuilding RPMs

zhong ming wu escribi�:

I can now rebuild rpms so that all files go under a specific directory
specified by _prefix directive in ~/.rpmmacros Forgetting lots of
other bugs that I managed to fix, this weird bug is making me use
_prefix that does not include the word "pgsql" in the path name any
where. For example if _prefix path has the word pgsqL or pgsq
or pgsqA then rebuilding is successful but if the path includes the
word pgsql or pgsql-8.1.18 or pgsqll then rebuilding breaks down.

Yeah, the Makefiles contain a trick to put append "/pgsql" to the
include dir (and others) if the prefix does not already contain "pgsql"
or "postgresql" or similar. This is probably what is causing the build
to fail. See src/Makefile.global.in:

##########################################################################
#
# Installation directories
#
# These are set by the equivalent --xxxdir configure options. We
# append "postgresql" to some of them, if the string does not already
# contain "pgsql" or "postgres", in order to avoid directory clutter.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#3)
bugsgeneral
Re: weird bug in rebuilding RPMs

Alvaro Herrera <alvherre@commandprompt.com> writes:

zhong ming wu escribi�:

I can now rebuild rpms so that all files go under a specific directory
specified by _prefix directive in ~/.rpmmacros Forgetting lots of
other bugs that I managed to fix, this weird bug is making me use
_prefix that does not include the word "pgsql" in the path name any
where.

Yeah, the Makefiles contain a trick to put append "/pgsql" to the
include dir (and others) if the prefix does not already contain "pgsql"
or "postgresql" or similar. This is probably what is causing the build
to fail. See src/Makefile.global.in:

Yeah, I suspect that the RPMs depend in various ways on the assumption
that those pathname substitutions will happen. I haven't got round to
testing, but it might be a good idea to change rpm-pgsql.patch to make
the substitutions unconditional, so that the file layout below the
_prefix is fixed regardless of what the _prefix is.

But having said that, I don't get the point of trying to build a
nonstandard installation from the RPM. That seems more or less
antithetical to most of the design concepts of RPM-based distros;
and it certainly seems pretty silly if your intent is to transition
to the standard RPM later.

regards, tom lane

#5Devrim GÜNDÜZ
devrim@gunduz.org
In reply to: Tom Lane (#4)
bugsgeneral
Re: [Pgsqlrpms-hackers] weird bug in rebuilding RPMs

On Mon, 2010-02-08 at 10:33 -0500, Tom Lane wrote:

But having said that, I don't get the point of trying to build a
nonstandard installation from the RPM. That seems more or less
antithetical to most of the design concepts of RPM-based distros;
and it certainly seems pretty silly if your intent is to transition
to the standard RPM later.

Right.

Also, I think using _prefix is not supported? Isn't it considered as
relocation of postgresql rpm?
--
Devrim GÜNDÜZ
Professional PostgreSQL Services, Training, 24x7 Support
Authors: PostgreSQL RPMs, PITRTools, PostgreSQL Replicator
http://www.commandprompt.com/ XMPP: dgunduz@jabber.commandprompt.com
Twitter: http://twitter.com/devrimgunduz