RPM build on SuSE 9.0 Professional - Mailing list pgsql-ports

From John Griffiths
Subject RPM build on SuSE 9.0 Professional
Date
Msg-id 40316730.7010302@grifent.com
Whole thread Raw
List pgsql-ports
Platform: SuSE Linux 9.0 Professional

I got an error when trying to include python in the build. Would like a
solution for it.
Also got an error for trying to include Kerberos. I did not have the
actual kerberos RPMs installed. I do have the Heimdal  installed.

Got a dependency problem when installing the RPMs that were build. It
failed on "initscripts" which the package postgresql-7.4.1-1PGDG wants
for ldconfig. I chose to do a --nodeps installation and postgesql seems
to work just fine. Would like a solution here, please.

Trying to install the build postgresql-devel RPM failed with:
file /usr/include/libpgtcl.h from install of
postgresql-devel-7.4.1-1PGDG conflicts with file from package PgTcl-1.4-162

I also included some configuration and script changes I made in order to
get PostgreSQL 7.4.1 RPMs to build and PostgreSQL 7.4.1 to run.


During build of PostgreSQL 7.4.1 on SuSE 9.0 Professional, I got:

checking for python... /usr/bin/python
checking Python installation directories... /usr/lib/python23.zip
checking how to link an embedded Python application... no
configure: error: Python Makefile not found
error: Bad exit status from /var/tmp/rpm-tmp.64666 (%build)

But rpm -q python reports
python-2.3-52
and rpm -q python-devel
python-devel-2.3-43
and this exists in /usr/lib/
rwxrwxrwx    1 root     root            9 Feb 12 00:16 python -> python2.3
drwxr-xr-x   16 root     root        17680 Feb 15 22:11 python2.3

I even created /usr/lib/python23.zip by doing a
zip -r python23.zip python2.3
but still got the same build error.

Changed build to:
rpmbuild --rebuild postgresql-7.4.1-1PGDG.src.rpm --define 'kerberos 0'
--define 'python 0'
and got:
    File not found:
/var/tmp/postgresql-7.4.1-root/etc/rc.d/init.d/postgresql

This is due to SuSE 9.0 not having a /etc/rc.d/init.d directory. SuSE
uses /etc/init.d as the boot directory. SuSE does have an /etc/rc.d
directory, but I it is a symbolic link to /etc/init.d. I solved this
error by adding a symbolic link in /etc/rc.d for init.d->/etc/init.d

I have reported this to SuSE, but thought I should mention it here too.

Had to modify the postgres init script for use in SuSE.

SuSE does not have an /etc/rc.d/init.d/functions file. SuSE uses
/etc/rc.status to report status stuff. That means that the command
success, failure, echo_success, and echo_failure do not exist. I
commented out

 $INITD/functions

and added the following from the SuSE supplied init script for 7.3.4.

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
 /etc/rc.status

Since a variable, H, is used by the SuSE supplied init script in the
check for status (see following), I added:

H=/usr/bin/postmaster
test -x $H || exit 5

from the SuSE script. I know I could have just used /usr/bin/postmaster
in the status command, but I wanted to preserve the original structure
of the SuSE status command.

Replacing success, failure, echo_success, and echo_failure with
rc_status -v works just fine.

There is no status command so

status postmaster

does not work. Replaced that line with:

        echo -n "Checking for PostgreSQL: "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.

        # Status has a slightly different for the status command:
        # 0 - service running
        # 1 - service dead, but /var/run/  pid  file exists
        # 2 - service dead, but /var/lock/ lock file exists
        # 3 - service not running

        # NOTE: checkproc returns LSB compliant status values.
        checkproc $H
        rc_status -v
        ;;

/etc/sysconfig/network is not a file but a directory. I really did not
know what to do here so I just commented out the sourcing of the file
and it seems to work fine.

SuSE symbolic links /usr/sbin/rcpostgres to their supplied init script,
so I made that symbolic link as well.


pgsql-ports by date:

Previous
From: bknight@softhome.net
Date:
Subject: BCC32.mak will not complile
Next
From: SO
Date:
Subject: rpm for postgresql