weird bug in rebuilding RPMs
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
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.
Import Notes
Reply to msg id not found: 9e434c4d1002071156p33ed2eegbdea896f6427f963@mail.gmail.com
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.
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
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