Обсуждение: weird bug in rebuilding RPMs

Поиск
Список
Период
Сортировка

weird bug in rebuilding RPMs

От
zhong ming wu
Дата:
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

Re: weird bug in rebuilding RPMs

От
Alvaro Herrera
Дата:
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.

Re: weird bug in rebuilding RPMs

От
Tom Lane
Дата:
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

Re: [Pgsqlrpms-hackers] weird bug in rebuilding RPMs

От
Devrim GÜNDÜZ
Дата:
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

Вложения