Обсуждение: Re: Building PostgreSQL 7.0.1 documentation
> These (docbook) tools produced a lot of warnings, is this default? afaik, no. I've got a Mandrake 7.0.x machine at home, and a 7.0 laptop which is apparently not quite the same thing since one was upgraded from 6.1 and the other was a clean install. But my laptop produces *no* warnings or errors when building the Postgres 7.0.0 docs. Not sure about the current state (e.g. pg-7.0.2) but it may be slightly broken. Will check -- actually, I've just checked and you are right, the current tree produces fatal errors from three files, though they will be easy to fix up. > > > I think I could test Mandrake RPMS from time to time. > > Do you work with the cooker folks? If so, then perhaps you could > > test and post Mandrake-specific RPMs which I've built? That would be > > a big help... > I'm not actually running the cooker distro, but I often commit > RPMS to the cooker. I will upgrade to 7.1 next week, so that I'm > not that far from the cooker. I had some contact with Lenny Cartier > (Mandrakesoft) and think he would accept me as a maintainer for > postgresql. > I would post your RPMS if you want. Great! I'm cc'ing Lamar Owens, who is the primary Redhat RPM maintainer. My last try at building pg-7.0 RPMs for Mandrake from Lamar's RH .src.rpm was a complete success with no additional patches required, though I have not had a chance to try the pg-7.0.2 RPM build and have not posted the results. For the Mandrake stuff, perhaps we can do it as a team; the first important step is for someone to start "babysitting" it, just building and posting the RPMs from Lamar's sources, then posting the results at Mandrake's web site. btw, Lamar, can we put the .ps.gz doc files into the RPM distro, if you haven't already done so? Or should we break them out into separate RPMs, say for hardcopy and hardcopy-A4 or something like that? - Thomas
Thomas Lockhart wrote: > > > > I think I could test Mandrake RPMS from time to time. > > > Do you work with the cooker folks? If so, then perhaps you could > > > test and post Mandrake-specific RPMs which I've built? That would be > > > a big help... > > I'm not actually running the cooker distro, but I often commit > > RPMS to the cooker. I will upgrade to 7.1 next week, so that I'm > > not that far from the cooker. I had some contact with Lenny Cartier > > (Mandrakesoft) and think he would accept me as a maintainer for > > postgresql. > > I would post your RPMS if you want. > Great! I'm cc'ing Lamar Owens, who is the primary Redhat RPM maintainer. > My last try at building pg-7.0 RPMs for Mandrake from Lamar's RH > .src.rpm was a complete success with no additional patches required, > though I have not had a chance to try the pg-7.0.2 RPM build and have > not posted the results. Interesting to see any differences, as the spec file itself has changed some since the 7.0 series. I am trying to make this spec file buildable on more than just RedHat -- so, testers are more than welcome. I already am getting contributions for at least one non-RedHat distribution for PowerPC from Murray Todd Williams (which RPM's I am putting on ftp.postgresql.org). The more the merrier! The goal, of course, is a single source RPM that everybody simply rebuilds, which spec file simply Does The Right Thing (TM) for each distribution. I am very grateful to the fine folks at RedHat for their help in making the portability goal a little closer. > For the Mandrake stuff, perhaps we can do it as a team; the first > important step is for someone to start "babysitting" it, just building > and posting the RPMs from Lamar's sources, then posting the results at > Mandrake's web site. Yes! Try a simple --rebuild of my SRPM first -- then, send me a diff of what it takes to get it to build right (including policy-type things, such as bzip instead of gzip, or pgcc instead of egcs, or different initscripts directory structure, etc.). Be sure to include any other patches that may need to be included, and I'll try to get things incorporated right away. As I only have RedHat 6.2+ boxen at the moment (soon to get access to a SPARC, hopefully), I can only build and test on them. I was at one point going to get and install SuSE, Mandrake, Caldera, AND RedHat all on one box, but that plan proved unweildy at best. Better to get a SuSE person, a Mandrake (since Mandrake is diverging more and more from its RedHat roots) person, and a Caldera person to be that distribution's 'expert', who then helps me take the RedHat SRPM and massage it to rebuild smoothly on each distribution. Plus, we can then get people with Alphas, SPARCs, PPC's, or even IA-64's to do builds and suggest changes. As well as getting reports from other RPM-based distributions.... Also, when submitting patches to the spec file, include a copy of the output of 'rpm --showrc', so I can see what kind of RPM environment you have. > btw, Lamar, can we put the .ps.gz doc files into the RPM distro, if you > haven't already done so? Or should we break them out into separate RPMs, > say for hardcopy and hardcopy-A4 or something like that? I can, if that's what's wanted. I don't have a preference as to whether it's still in the main package, or in a separate docs package, as, prior to 7.0.1 the postscript stuff was in the main package. Just let me know where the source .ps.gz files need to come from, so I don't get the wrong ones. :-) It would be preferable to have a versioned tarball of them available, as there are already a larger number of source files in the RPM than I would like. Let me know.... -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
> I did so, I build packages for Mandrake. Your SPEC file is great and > I had only to do some little changes for full Mandrake compliance. Great! > - pack all source files with bzip2, even those you left uncompressed Ooh. That would seem to be at odds with the "pristine source" philosophy of RPM, but I'll guess that this topic has been covered extensively elsewhere? Are we sure that this is not just a suggestion from Mandrake that the sources *should* be available with bzip2 compression? > - extract the .jar files and the init/logrotate scripts at their > destination Is this related to the previous point? I haven't looked at the details, but I'm not sure why Mandrake and RH would need to be different here. > - bzip2 all man pages Hmm. This is for the man pages after installation from the RPM, right? All in all these are pretty small changes for two independent distros, though it is a shame that even these diffs need to exist. The ".bz2 on input files" is particularly annoying, since those compression formats are *not* available in the original tarball distros. > That's all, I will upload the SRPM to the Mandrake incoming directory > in the later evening and will notify Lenny Cartier (MandrakeSoft). Lamar, would it be possible to carry (some of) these differences in the same spec file? *So much* is in common that it would be nice to have the info together. But in either case, this is great progress. Thanks Jan! - Thomas
Jan Dittberner wrote: > Lamar Owen wrote: > > > For the Mandrake stuff, perhaps we can do it as a team; the first > > > important step is for someone to start "babysitting" it, just building > > > and posting the RPMs from Lamar's sources, then posting the results at > > > Mandrake's web site. > > Yes! Try a simple --rebuild of my SRPM first -- then, send me a diff of > I did so, I build packages for Mandrake. Your SPEC file is great and > I had only to do some little changes for full Mandrake compliance. > - pack all source files with bzip2, even those you left uncompressed > - extract the .jar files and the init/logrotate scripts at their destination > - bzip2 all man pages > That's all, I will upload the SRPM to the Mandrake incoming directory > in the later evening and will notify Lenny Cartier (MandrakeSoft). Can you send me the result of 'rpm --showrc'? I'm curious if Mandrake is using the macro package to determine the use of gzip versus bzip2.... Otherwise, if the _vendor macro is set to 'mandrake', I can use that in a conditional. Thanks for the rebuild and the spec! -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
Jan Dittberner wrote: > Lamar Owen wrote: > > Can you send me the result of 'rpm --showrc'? I'm curious if Mandrake > > is using the macro package to determine the use of gzip versus bzip2.... > > Otherwise, if the _vendor macro is set to 'mandrake', I can use that in > > a conditional. > > > Here it is: > -14: __bzip2 %{_bzip2bin} > -14: __gzip %{_gzipbin} > -14: _bzip2bin /usr/bin/bzip2 > -14: _gzipbin /bin/gzip Can't use them... :-( > -14: _vendor mandrake But I _can_ use this. RedHat sets this, predictably, to redhat. Most other things are easy -- there are macros for nearly everything you need that hide all details (such as the /usr/src/redhat versus /usr/src/RPM and others deal). Thus, Thomas, to answer your question -- YES, we can have a single spec file do both systems. Just some conditionals, and judicious use of the defined macros and envvars. And this is why I need the rpm --showrc results with spec file diffs (or examples)... :-). -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
Re: Re: Mandrake RPMS, was "Building PostgreSQL 7.0.1 documentation"
От
teg@redhat.com (Trond Eivind Glomsrød)
Дата:
I can't find the original message, so I'll have to do some indirect answering. Lamar Owen <lamar.owen@wgcr.org> writes: > Jan Dittberner wrote: > > Lamar Owen wrote: > > > > For the Mandrake stuff, perhaps we can do it as a team; the first > > > > important step is for someone to start "babysitting" it, just building > > > > and posting the RPMs from Lamar's sources, then posting the results at > > > > Mandrake's web site. > > > > Yes! Try a simple --rebuild of my SRPM first -- then, send me a diff of > > > I did so, I build packages for Mandrake. Your SPEC file is great and > > I had only to do some little changes for full Mandrake compliance. > > > - pack all source files with bzip2, even those you left > > uncompressed If the postgresql team releases bz2 - good. If there is no file ftp://foo.bar.com/xyzzy.tar.bz2 but just ftp://foo.bar.com/xyzzy.tar.gz then using that URL is just lying. Don't do that. Surely Mandrake doesn't do that? > > - extract the .jar files and the init/logrotate scripts at their destination > > - bzip2 all man pages Don't. This should be handled automatically with the "--buildpolicy" flag[1]. like we do. Besides, bzipping man pages is in the "use bzip2, even though there is no point in it" category. [1] Like this: "rpm -ba --buildpolicy redhat postgresql.spec" No need to strip or compress explicitly. -- Trond Eivind Glomsrød Red Hat, Inc.
Trond Eivind Glomsrød wrote: > > I can't find the original message, so I'll have to do some indirect answering. [If you wish, I'll pipe you the original] > Lamar Owen <lamar.owen@wgcr.org> writes: > > Jan Dittberner wrote: > > > I did so, I build packages for Mandrake. Your SPEC file is great and > > > I had only to do some little changes for full Mandrake compliance. > > > > > - pack all source files with bzip2, even those you left > > > uncompressed > If the postgresql team releases bz2 - good. If there is no file > ftp://foo.bar.com/xyzzy.tar.bz2 > but just > ftp://foo.bar.com/xyzzy.tar.gz > then using that URL is just lying. Don't do that. Surely Mandrake > doesn't do that? This source re-compress is not needed, really. After all, the whole source RPM is compressed.... And, yes, as Thomas already commented, this violates the pristine source issue. No, ftp.postgresql.org doesn't do bzip2, yet (Marc??) > > > - bzip2 all man pages > Don't. This should be handled automatically with the "--buildpolicy" > flag[1]. like we do. Besides, bzipping man pages is in the "use bzip2, > even though there is no point in it" category. > [1] Like this: "rpm -ba --buildpolicy redhat postgresql.spec" > No need to strip or compress explicitly. Which is why you had pulled the stripping stuff out of the spec... also explains a portion of why the insistence on %{_mandir}, as that may be a clue to rpm to apply 'policy' ?? Ok, now just _where_ is this '--buildpolicy' deal documented -- it sure isn't in the man page on my 6.2 box. What sort of config file is used, etc. I certainly like the sound of it, but have never heard of it before. If it is a new version of RPM thingy, well.... ;-) -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
Lamar Owen wrote: > > Can you send me the result of 'rpm --showrc'? I'm curious if Mandrake > is using the macro package to determine the use of gzip versus bzip2.... > Otherwise, if the _vendor macro is set to 'mandrake', I can use that in > a conditional. > Here it is: --8<--------------------------------------------------------------------- ARCHITECTURE AND OS: build arch : i586 compatible build archs: i586 k6 i486 i386 noarch build os : Linux compatible build os's : Linux install arch : i586 install os : Linux compatible archs : i586 k6 i486 i386 noarch compatible os's : Linux RPMRC VALUES: macrofiles : /usr/lib/rpm/macros:/usr/lib/rpm/i586-linux/macros:/etc/rpm/macros:/etc/rpm/i586-linux/macros:~/.rpmmacros optflags : -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pipe -s -mpentium -mcpu=pentium -march=pentium-ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -mpreferred-stack-boundary=2 ======================== -14: GNUconfigure(MC:) %{__libtoolize} --copy --force %{__aclocal} %{__autoheader} %{__automake} %{__autoconf} %{-C:_mydir="`pwd`";%{-M:%{__mkdir} -p %{-C*};} cd %{-C*};} CFLAGS="%{optflags}" %{-C:${_mydir}}%{!-C:.}/configure %{_target_platform}--prefix=%{_prefix} %* %{-C:cd ${_mydir}; unset _mydir} -14: __aclocal aclocal -14: __autoconf autoconf -14: __autoheader autoheader -14: __automake automake -14: __bzip2 %{_bzip2bin} -14: __cat /bin/cat -14: __chgrp /bin/chgrp -14: __chmod /bin/chmod -14: __chown /bin/chown -14: __cp /bin/cp -14: __cpio /bin/cpio -14: __find_provides /usr/lib/rpm/find-provides -14: __find_requires /usr/lib/rpm/find-requires -14: __gzip %{_gzipbin} -14: __id /usr/bin/id -14: __install %(which install) -14: __libtoolize libtoolize -14: __make /usr/bin/make -14: __mkdir /bin/mkdir -14: __mv /bin/mv -14: __patch /usr/bin/patch -14: __ranlib %(which ranlib) -14: __rm /bin/rm -14: __strip %(which strip) -14: __tar /bin/tar -14: _arch i386 -14: _bindir %{_exec_prefix}/bin -14: _build %{_host} -14: _build_alias %{_host_alias} -14: _build_cpu %{_host_cpu} -14: _build_os %{_host_os} -14: _build_vendor %{_host_vendor} -14: _builddir %{_topdir}/BUILD -14: _buildshell /bin/sh -14: _bzip2bin /usr/bin/bzip2 -14: _datadir %{_prefix}/share -14: _dbpath %{_var}/lib/rpm -14: _defaultdocdir %{_usr}/doc -14: _exec_prefix %{_prefix} -14: _fixgroup [ `%{__id} -u` = '0' ] && %{__chgrp} -Rhf root -14: _fixowner [ `%{__id} -u` = '0' ] && %{__chown} -Rhf root -14: _fixperms %{__chmod} -Rf a+rX,g-w,o-w -14: _gzipbin /bin/gzip -14: _host i686-pc-linux-gnu -14: _host_alias i686-pc-linux-gnu -14: _host_cpu i686 -14: _host_os linux-gnu -14: _host_vendor pc -14: _includedir %{_prefix}/include -14: _infodir %{_prefix}/info -14: _instchangelog 5 -14: _libdir %{_exec_prefix}/lib -14: _libexecdir %{_exec_prefix}/libexec -14: _localstatedir %{_prefix}/var -14: _mandir %{_prefix}/man -14: _oldincludedir /usr/include -14: _os linux -14: _packager Jan Dittberner <jan@jan-dittberner.de> -14: _pgpbin /usr/bin/pgp -14: _preScriptEnvironment RPM_SOURCE_DIR="%{_sourcedir}"RPM_BUILD_DIR="%{_builddir}"RPM_OPT_FLAGS="%{optflags}"RPM_ARCH="%{_arch}"RPM_OS="%{_os}"export RPM_SOURCE_DIRRPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OSRPM_DOC_DIR="%{_docdir}"export RPM_DOC_DIRRPM_PACKAGE_NAME="%{name}"RPM_PACKAGE_VERSION="%{version}"RPM_PACKAGE_RELEASE="%{release}"export RPM_PACKAGE_NAMERPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE%{?buildroot:RPM_BUILD_ROOT="%{buildroot}"export RPM_BUILD_ROOT} -14: _prefix /usr -14: _rpmdir %{_topdir}/RPMS -14: _rpmfilename %%{ARCH}/%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm -14: _sbindir %{_exec_prefix}/sbin -14: _sharedstatedir %{_prefix}/com -14: _signature none -14: _sourcedir %{_topdir}/SOURCES -14: _specdir %{_topdir}/SPECS -14: _srcrpmdir %{_topdir}/SRPMS -14: _sysconfdir %{_prefix}/etc -11: _target i586-linux -14: _target_alias %{_host_alias} -11= _target_cpu i586 -11= _target_os linux -14: _target_platform %{_target_cpu}-%{_vendor}-%{_target_os} -14: _target_vendor %{_host_vendor} -14: _tmppath %{_var}/tmp -14: _topdir /home/jd9/RPM -14: _usr /usr -14: _usrsrc %{_usr}/src -14: _var /var -14: _vendor mandrake -14: configure %{?__libtoolize:[ -f configure.in ] && %{__libtoolize} --copy --force} CFLAGS="%{optflags}" ./configure%{_target_platform} --prefix=%{_prefix} -14: nil %{!?nil} -11: optflags -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pipe -s -mpentium -mcpu=pentium -march=pentium -ffast-math-fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2 -mpreferred-stack-boundary=2 -14: perl_archlib %(eval "`perl -V:installarchlib`"; echo $installarchlib) -14: perl_sitearch %(eval "`perl -V:installsitearch`"; echo $installsitearch) -14: requires_eq %(LC_ALL="C" rpm -q --queryformat 'Requires:%%{NAME} = %%{VERSION}' %1| grep -v "is not") -15: sigtype none ======================== active 90 empty 0 --8<---------------------------------------------------------------------
Lamar Owen wrote: > > For the Mandrake stuff, perhaps we can do it as a team; the first > > important step is for someone to start "babysitting" it, just building > > and posting the RPMs from Lamar's sources, then posting the results at > > Mandrake's web site. > > Yes! Try a simple --rebuild of my SRPM first -- then, send me a diff of > what it takes to get it to build right (including policy-type things, > such as bzip instead of gzip, or pgcc instead of egcs, or different > initscripts directory structure, etc.). Be sure to include any other > patches that may need to be included, and I'll try to get things > incorporated right away. As I only have RedHat 6.2+ boxen at the moment > (soon to get access to a SPARC, hopefully), I can only build and test on > them. I did so, I build packages for Mandrake. Your SPEC file is great and I had only to do some little changes for full Mandrake compliance. - pack all source files with bzip2, even those you left uncompressed - extract the .jar files and the init/logrotate scripts at their destination - bzip2 all man pages That's all, I will upload the SRPM to the Mandrake incoming directory in the later evening and will notify Lenny Cartier (MandrakeSoft). I've attached my spec file. JanSummary: PostgreSQL client programs and libraries. Name: postgresql Version: 7.0.2 Release: 2mdk Copyright: BSD Group: Applications/Databases Source0: postgresql-%{version}.tar.bz2 Source1: http://www.retep.org.uk/postgres/jdbc6.5-1.1.jar.bz2 Source2: http://www.retep.org.uk/postgres/jdbc6.5-1.2.jar.bz2 Source3: postgresql.init-%{version}.bz2 Source6: README.rpm.postgresql-%{version}.bz2 Source5: ftp://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2.md5.bz2 Source7: pg-migration-scripts-%{version}.tar.bz2 Source8: logrotate.postgresql-%{version}.bz2 Source9: pg_options-%{version}.bz2 Source10: http://www.retep.org.uk/postgres/jdbc7.0-1.1.jar.bz2 Source11: http://www.retep.org.uk/postgres/jdbc7.0-1.2.jar.bz2 Source12: postgresql-dump.1.bz2 Patch0: postgresql-%{version}-alpha.patch.bz2 Patch1: rpm-pgsql-%{version}-%{release}.patch.bz2 Prefix: /usr Prereq: /sbin/chkconfig /sbin/ldconfig /usr/sbin/useradd Url: http://www.postgresql.org/ Obsoletes: postgresql-clients Buildroot: /var/tmp/%{name}-%{version}-root Packager: Jan Dittberner <jan@jan-dittberner.de> Distribution: Mandrake Vendor: Mandrakesoft %description PostgreSQL is an advanced Object-Relational database management system (DBMS) that supports almost all SQL constructs (including transactions, subselects and user-defined types and functions). The postgresql package includes the client programs and libraries that you´ll need to access a PostgreSQL DBMS server. These PostgreSQL client programs are programs that directly manipulate the internal structure of PostgreSQL databases on a PostgreSQL server. These client programs can be located on the same machine with the PostgreSQL server, or may be on a remote machine which accesses a PostgreSQL server over a network connection. This package contains the client libraries for C and C++, as well as command-line utilities for managing PostgreSQL databases on a PostgreSQL server. If you want to manipulate a PostgreSQL database on a remote PostgreSQL server, you need this package. You also need to install this package if you´re installing the postgresql-server package. %package server Summary: The programs needed to create and run a PostgreSQL server. Group: Applications/Databases Prereq: /usr/sbin/useradd Requires: postgresql = %{version} %description server The postgresql-server package includes the programs needed to create and run a PostgreSQL server, which will in turn allow you to create and maintain PostgreSQL databases. PostgreSQL is an advanced Object-Relational database management system (DBMS) that supports almost all SQL constructs (including transactions, subselects and user-defined types and functions). You should install postgresql-server if you want to create and maintain your own PostgreSQL databases and/or your own PostgreSQL server. You also need to install the postgresql and postgresql-devel packages. %package devel Summary: PostgreSQL development header files and libraries. Group: Development/Libraries Requires: postgresql = %{version} %description devel The postgresql-devel package contains the header files and libraries needed to compile C or C++ applications which will directly interact with a PostgreSQL database management server and the ecpg Embedded C Postgres preprocessor. You need to install this package if you want to develop applications which will interact with a PostgreSQL server. If you´re installing postgresql-server, you need to install this package. %package tcl Summary: A Tcl client library, and the PL/Tcl procedural language for PostgreSQL. Group: Applications/Databases Requires: tcl >= 8.0, postgresql = %{version} %description tcl PostgreSQL is an advanced Object-Relational database management system. The postgresql-tcl package contains the libpgtcl client library, the pg-enchanced pgtclsh, and the PL/Tcl procedural language for the backend. %package tk Summary: Tk shell and tk-based GUI for PostgreSQL. Group: Applications/Databases Requires: tcl >= 8.0, tk >= 8.0, postgresql = %{version} %description tk PostgreSQL is an advanced Object-Relational database management system. The postgresql-tk package contains the pgaccess program. Pgaccess is a graphical front end, written in Tcl/Tk, for the psql and related PostgreSQL client programs. %package odbc Summary: The ODBC driver needed for accessing a PostgreSQL DB using ODBC. Group: Applications/Databases Requires: postgresql = %{version} %description odbc PostgreSQL is an advanced Object-Relational database management system. The postgresql-odbc package includes the ODBC (Open DataBase Connectivity) driver and sample configuration files needed for applications to access a PostgreSQL database using ODBC. %package perl Summary: Development module needed for Perl code to access a PostgreSQL DB. Group: Applications/Databases Requires: perl >= 5.004-4, postgresql = %{version} %description perl PostgreSQL is an advanced Object-Relational database management system. The postgresql-perl package includes a module for developers to use when writing Perl code for accessing a PostgreSQL database. #%package plperl #Summary: The plperl procedural language #Group: Applications/Databases #Requires: perl >= 5.004-4, postgresql = %{version} #%description plperl #PostgreSQL is an advanced Object-Relational database management #system. The postgresql-plperl package provides a perl-based #procedural language. %package python Summary: Development module for Python code to access a PostgreSQL DB. Group: Applications/Databases Requires: python >= 1.5, postgresql = %{version} %description python PostgreSQL is an advanced Object-Relational database management system. The postgresql-python package includes a module for developers to use when writing Python code for accessing a PostgreSQL database. %package jdbc Summary: Files needed for Java programs to access a PostgreSQL database. Group: Applications/Databases Requires: postgresql = %{version} %description jdbc PostgreSQL is an advanced Object-Relational database management system. The postgresql-jdbc package includes the .jar file needed for Java programs to access a PostgreSQL database. %package test Summary: The test suite distributed with PostgreSQL. Group: Applications/Databases Requires: postgresql = %{version} %description test PostgreSQL is an advanced Object-Relational database management system. The postgresql-test package includes the sources and pre-built binaries of various tests for the PostgreSQL database management system, including regression tests and benchmarks. %prep %setup -q # The alpha patches are not trivial, so wrap in ifarch-endif block # %ifarch alpha %patch0 -p1 %endif %patch1 -p1 %build pushd src # XXX libtoolize dinna work # WHAT is 'libtoolize???' LRO # a program distributed with the libtool package #cp /usr/share/libtool/config.* . CFLAGS="$RPM_OPT_FLAGS" %ifarch alpha ./configure --enable-hba --enable-locale --prefix=/usr\ --with-perl --enable-multibyte\ --with-tcl --with-tk --with-x \ --with-odbc --with-java \ --with-python --with-template=linux_alpha %else ./configure --enable-hba --enable-locale --prefix=/usr\ --with-perl --enable-multibyte \ --with-tcl --with-tk --with-x \ --with-odbc --with-java \ --with-python %endif make COPT="$RPM_OPT_FLAGS" all # pl/perl build, courtesy Karl DeBisschop (Thanks, Karl!) # disabled in this build due to problems with build. #pushd pl/plperl #ar -x /usr/lib/perl5/5.00503/i386-linux/CORE/libperl.a #gcc -shared -o libperl.so *.o #perl Makefile.PL #make #popd pushd interfaces/python cp /usr/lib/python1.5/config/Makefile.pre.in . echo *shared* > Setup echo _pg pgmodule.c -I../../include -I../libpq -L../libpq -lpq -lcrypt >> Setup make -f Makefile.pre.in boot make popd popd make all PGDOCS=unpacked -C doc pushd src/test make all popd %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/{include/pgsql,lib,bin} mkdir -p $RPM_BUILD_ROOT%{_mandir} mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/site_perl/%{_arch}-linux/auto/Pg make POSTGRESDIR=$RPM_BUILD_ROOT/usr PREFIX=$RPM_BUILD_ROOT/usr -C src install #make POSTGRESDIR=$RPM_BUILD_ROOT/usr PREFIX=$RPM_BUILD_ROOT/usr -C src/man install make POSTGRESDIR=$RPM_BUILD_ROOT/usr PREFIX=$RPM_BUILD_ROOT/usr -C src/interfaces/perl5 install # pl/perl.... #make POSTGRESDIR=$RPM_BUILD_ROOT/usr PREFIX=$RPM_BUILD_ROOT/usr -C src/pl/plperl install #cp -v src/pl/plperl/libperl.so $RPM_BUILD_ROOT/usr/lib/ # Get rid of the packing list generated by the perl Makefile, and build my own... find $RPM_BUILD_ROOT/usr/lib/perl5 -name .packlist -exec rm -f {} \; find $RPM_BUILD_ROOT/usr/lib/perl5 -type f -print | \ sed -e "s|$RPM_BUILD_ROOT/|/|g" | \ sed -e "s|.*/man/.*|&\*|" > perlfiles.list find $RPM_BUILD_ROOT/usr/lib/perl5 -type d -name Pg -print | \ sed -e "s|$RPM_BUILD_ROOT/|%dir /|g" >> perlfiles.list make -C doc #make -C doc man # Newer man pages from Thomas Lockhart pushd $RPM_BUILD_ROOT%{_mandir} tar xzf $RPM_BUILD_DIR/postgresql-%{version}/doc/man.tar.gz # the postgresql-dump manpage..... cp %{SOURCE12} man1 # bzip2 all manpages find $RPM_BUILD_ROOT%{_mandir} -type f -name "*.?" -exec bzip2 -9 {} \; popd # Move all includes beneath /usr/include/pgsql. pushd $RPM_BUILD_ROOT/usr/include rm -rf pgsql/* for f in *.h access commands executor iodbc lib libpq libpq++ port utils ; do mv $f pgsql done popd # copy over the includes needed for SPI development. pushd src/include /lib/cpp -M -I. -I../backend executor/spi.h |xargs -n 1|grep \\W|grep -v ^/|grep -v spi.h | sort |cpio -pdu $RPM_BUILD_ROOT/usr/include/pgsql # thank you, cpio.... #fixup directory permissions for SPI stuff... pushd $RPM_BUILD_ROOT/usr/include/pgsql chmod 755 access catalog executor lib nodes parser rewrite storage tcop utils popd popd # Move all templates/examples beneath /usr/lib/pgsql pushd $RPM_BUILD_ROOT/usr/lib mkdir -p pgsql mv *.source *.sample *.description pgsql popd # Get interface-specific tests and examples, and stuff under /usr/lib/pgsql pushd src/interfaces mkdir -p $RPM_BUILD_ROOT/usr/lib/pgsql/perl5 cp -a perl5/test.pl perl5/eg $RPM_BUILD_ROOT/usr/lib/pgsql/perl5 mkdir -p $RPM_BUILD_ROOT/usr/lib/pgsql/python cp -a python/tutorial $RPM_BUILD_ROOT/usr/lib/pgsql/python popd # Get example odbcinst.ini and put in /usr/lib/pgsql mv $RPM_BUILD_ROOT/usr/odbcinst.ini $RPM_BUILD_ROOT/usr/lib/pgsql # pgaccess installation pushd src/bin install -m 755 pgaccess/pgaccess $RPM_BUILD_ROOT/usr/bin mkdir -p $RPM_BUILD_ROOT/usr/lib/pgsql/pgaccess install -m 644 pgaccess/main.tcl $RPM_BUILD_ROOT/usr/lib/pgsql/pgaccess tar cf - pgaccess/lib pgaccess/images | tar xf - -C $RPM_BUILD_ROOT/usr/lib/pgsql cp -a pgaccess/doc/html ../../doc/pgaccess cp pgaccess/demo/*.sql ../../doc/pgaccess popd # Python pushd src/interfaces/python # Makefile.pre.in doesn't yet support .py files anyway, so we stick to a manual installation mkdir -p $RPM_BUILD_ROOT/usr/lib/python1.5/site-packages install -m 755 _pgmodule.so *.py $RPM_BUILD_ROOT/usr/lib/python1.5/site-packages/ popd # Java/JDBC # We know that JDK1.2 is pre-beta at this time, so install the JDK1.1-compatible driver # as well as the JDK1.2 compatible driver. # The user will have to set a CLASSPATH to find it here, but not sure where else to put it... # Install 6.5 JDBC jars for now. install -m 755 %{SOURCE1} $RPM_BUILD_ROOT/usr/lib/pgsql install -m 755 %{SOURCE2} $RPM_BUILD_ROOT/usr/lib/pgsql bzip2 -d $RPM_BUILD_ROOT/usr/lib/pgsql/`basename %{SOURCE1}` bzip2 -d $RPM_BUILD_ROOT/usr/lib/pgsql/`basename %{SOURCE2}` # Install 7.0 JDBC jars -- in addition to, not replacing 6.5 stuff yet. install -m 755 %{SOURCE10} $RPM_BUILD_ROOT/usr/lib/pgsql install -m 755 %{SOURCE11} $RPM_BUILD_ROOT/usr/lib/pgsql bzip2 -d $RPM_BUILD_ROOT/usr/lib/pgsql/`basename %{SOURCE10}` bzip2 -d $RPM_BUILD_ROOT/usr/lib/pgsql/`basename %{SOURCE11}` chmod 644 $RPM_BUILD_ROOT%{_mandir}/*/* chmod +x $RPM_BUILD_ROOT/usr/lib/lib*.so.* install -d $RPM_BUILD_ROOT/etc/rc.d/init.d install -m 755 %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql.bz2 bzip2 -d $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql.bz2 # Move the PL's to the right place mv $RPM_BUILD_ROOT/usr/lib/pl*.so $RPM_BUILD_ROOT/usr/lib/pgsql # PGDATA needs removal of group and world permissions due to pg_pwd hole. install -d -m 700 $RPM_BUILD_ROOT/var/lib/pgsql/data # Initial pg_options install -m 700 %{SOURCE9} $RPM_BUILD_ROOT/var/lib/pgsql/data/pg_options.bz2 bzip2 -d $RPM_BUILD_ROOT/var/lib/pgsql/data/pg_options.bz2 # backups of data go here... install -d -m 700 $RPM_BUILD_ROOT/var/lib/pgsql/backups # tests. There are many files included here that are unnecessary, but include # them anyway for completeness. cp -a src/test $RPM_BUILD_ROOT/usr/lib/pgsql install -m 0755 src/config.guess $RPM_BUILD_ROOT/usr/lib/pgsql install -m 0755 contrib/spi/refint.so $RPM_BUILD_ROOT/usr/lib/pgsql/test/regress install -m 0755 contrib/spi/autoinc.so $RPM_BUILD_ROOT/usr/lib/pgsql/test/regress # Upgrade scripts. pushd $RPM_BUILD_ROOT tar xyf %{SOURCE7} popd #logrotate script source (which needs WORK) mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d cp %{SOURCE8} $RPM_BUILD_ROOT/etc/logrotate.d/postgres.bz2 bzip2 -d $RPM_BUILD_ROOT/etc/logrotate.d/postgres.bz2 chmod 0700 $RPM_BUILD_ROOT/etc/logrotate.d/postgres # Fix some more documentation # no need for the OS2 client rm -rf contrib/os2client gzip doc/internals.ps cp %{SOURCE6} README.rpm.bz2 bzip2 -d README.rpm.bz2 # Symlink libpq.so.2.0 to libpq.so.2.1 pushd $RPM_BUILD_ROOT/usr/lib ln -s libpq.so.2.1 libpq.so.2.0 popd # move a perl man page which ends up in a weird place - sometimes if [ -a $RPM_BUILD_ROOT/usr/lib/perl5/man/$RPM_BUILD_ROOT/usr/Pg.3 ] then mkdir -p $RPM_BUILD_ROOT/usr/lib/perl5/man/man3 mv $RPM_BUILD_ROOT/usr/lib/perl5/man/$RPM_BUILD_ROOT/usr/Pg.3 $RPM_BUILD_ROOT/usr/lib/perl5/man/man3/ bzip2 -9 $RPM_BUILD_ROOT/usr/lib/perl5/man/*/* rm -fr $RPM_BUILD_ROOT/usr/lib/perl5/man/$RPM_BUILD_ROOT perl -pi -e "s@man/usr/@man/man3/@" $RPM_BUILD_DIR/postgresql-%{version}/perlfiles.list fi # remove perllocal.pod from the file list - only occurs with 5.6 perl -pi -e "s/^.*perllocal.pod$//" perlfiles.list # Strip 'em all strip $RPM_BUILD_ROOT/usr/bin/* || : %pre # Need to make backups of some executables if an upgrade # They will be needed to do a dump of the old version's database. # All output redirected to /dev/null. if [ $1 -gt 1 ] then mkdir -p /usr/lib/pgsql/backup > /dev/null pushd /usr/bin > /dev/null cp -fp postmaster postgres pg_dump pg_dumpall psql /usr/lib/pgsql/backup > /dev/null popd > /dev/null pushd /usr/lib > /dev/null cp -fp libpq.* /usr/lib/pgsql/backup > /dev/null popd > /dev/null fi %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %pre server useradd -M -o -r -d /var/lib/pgsql -s /bin/bash \ -c "PostgreSQL Server" -u 26 postgres >/dev/null 2>&1 || : touch /var/log/postgresql chown postgres.postgres /var/log/postgresql chmod 0700 /var/log/postgresql %post -p /sbin/ldconfig server %preun server if [ $1 = 0 ] ; then chkconfig --del postgresql fi %postun server /sbin/ldconfig if [ $1 = 0 ] ; then userdel postgres >/dev/null 2>&1 || : fi %post -p /sbin/ldconfig odbc %postun -p /sbin/ldconfig odbc %post -p /sbin/ldconfig tcl %postun -p /sbin/ldconfig tcl #%post -p /sbin/ldconfig plperl #%postun -p /sbin/ldconfig plperl %clean rm -rf $RPM_BUILD_ROOT rm -f perlfiles.list %files %defattr(-,root,root) %doc doc/FAQ doc/FAQ_Linux doc/README* %doc COPYRIGHT README HISTORY doc/bug.template doc/FAQ_Linux %doc contrib doc/unpacked/* # %doc doc/*.ps.gz # %doc howto %doc README.rpm %attr(755,root,root) /usr/lib/libpq.so* %attr(755,root,root) /usr/lib/libecpg.so* %attr(755,root,root) /usr/lib/libpq++.so* %attr(755,root,root) /usr/lib/libpgeasy.so* /usr/bin/createdb /usr/bin/createlang /usr/bin/createuser /usr/bin/dropdb /usr/bin/droplang /usr/bin/dropuser /usr/bin/pg_dump /usr/bin/pg_dumpall /usr/bin/pg_id /usr/bin/psql /usr/bin/vacuumdb %{_mandir}/man1/createdb.1* %{_mandir}/man1/createlang.1* %{_mandir}/man1/createuser.1* %{_mandir}/man1/dropdb.1* %{_mandir}/man1/droplang.1* %{_mandir}/man1/dropuser.1* %{_mandir}/man1/pg_dump.1* %{_mandir}/man1/pg_dumpall.1* %{_mandir}/man1/psql.1* %{_mandir}/manl/* %files server %defattr(-,root,root) %config /etc/rc.d/init.d/postgresql /etc/logrotate.d/postgres /usr/bin/initdb /usr/bin/initlocation /usr/bin/ipcclean /usr/bin/pg_ctl /usr/bin/pg_encoding /usr/bin/pg_passwd /usr/bin/pg_upgrade /usr/bin/pg_version /usr/bin/postgres /usr/bin/postgresql-dump /usr/bin/postmaster %{_mandir}/man1/initdb.1* %{_mandir}/man1/initlocation.1* %{_mandir}/man1/ipcclean.1* %{_mandir}/man1/pg_ctl.1* %{_mandir}/man1/pgadmin.1* %{_mandir}/man1/pg_passwd.1* %{_mandir}/man1/postgres.1* %{_mandir}/man1/postmaster.1* %{_mandir}/man1/pg_upgrade.1* %{_mandir}/man1/vacuumdb.1* %{_mandir}/man1/postgresql-dump.1* /usr/lib/pgsql/global1.bki.source /usr/lib/pgsql/global1.description /usr/lib/pgsql/local1_template1.bki.source /usr/lib/pgsql/local1_template1.description /usr/lib/pgsql/*.sample /usr/lib/pgsql/plpgsql.so %attr(700,postgres,postgres) %dir /usr/lib/pgsql/backup /usr/lib/pgsql/backup/pg_dumpall_new %attr(700,postgres,postgres) %dir /var/lib/pgsql/data %attr(700,postgres,postgres) /var/lib/pgsql/data/pg_options %attr(700,postgres,postgres) %dir /var/lib/pgsql/backups %files devel %defattr(-,root,root) /usr/include/pgsql /usr/bin/ecpg /usr/lib/lib*.a %{_mandir}/man1/ecpg.1* %files tcl %defattr(-,root,root) %attr(755,root,root) /usr/lib/libpgtcl.so* /usr/bin/pgtclsh %{_mandir}/man1/pgtclsh.1* /usr/lib/pgsql/pltcl.so %files tk %defattr(-,root,root) %doc doc/pgaccess/* /usr/lib/pgsql/pgaccess /usr/bin/pgaccess /usr/bin/pgtksh %{_mandir}/man1/pgaccess.1* %{_mandir}/man1/pgtksh.1* %files odbc %defattr(-,root,root) %attr(755,root,root) /usr/lib/libpsqlodbc.so* /usr/lib/pgsql/odbcinst.ini %files -f perlfiles.list perl %dir /usr/lib/perl5/site_perl/%{_arch}-linux/auto /usr/lib/pgsql/perl5 #%files plperl #/usr/lib/pgsql/plperl.so #/usr/lib/libperl.so %files python %defattr(-,root,root) /usr/lib/python1.5/site-packages/_pgmodule.so /usr/lib/python1.5/site-packages/*.py /usr/lib/pgsql/python %files jdbc %defattr(-,root,root) /usr/lib/pgsql/jdbc6.5-1.1.jar /usr/lib/pgsql/jdbc6.5-1.2.jar /usr/lib/pgsql/jdbc7.0-1.1.jar /usr/lib/pgsql/jdbc7.0-1.2.jar %files test %defattr(-,postgres,postgres) %attr(755,postgres,postgres)/usr/lib/pgsql/config.guess /usr/lib/pgsql/test/* %changelog * Thu Jun 15 2000 Jan Dittberner <jan@jan-dittberner.de> - 7.0.2-2mdk - patched for Mandrake - bzip2´ed all sources and manpages * Mon Jun 12 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0.2-2 - Corrected misreporting of version. - Corrected for non-root build clean script. * Mon Jun 05 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0.2 - Postgresql-dump manpage to man1, and to separate source file to facilitate -- _mandir macro expansion correctness. - NOTE: The PostScript documentation is no longer being included in the -- PostgreSQL tarball. If demand is such, I will pull together a -- postgresql-ps-docs subpackage or pull in the PostScript docs into the -- main package. - RPM patchset has release number, now, to prevent patchfile confusion :-(. * Sat Jun 03 2000 Lamar Owen <lamar.owen@wgcr.org> - Incorporate most of Trond´s changes (reenabled the alpha -- patches, as it was a packaging error on my part). - Trimmed changelog history to Version 7.0beta1 on. To see the -- previous changelog, grab the 6.5.3 RPM from RedHat 6.2 and pull the spec. - Rev to 7.0.1 (which incorporates the syslog patch, which has -- been removed from rpm-pgsql-7.0.1-1.patch) * Fri May 26 2000 Trond Eivind Glomsrød <teg@redhat.com> - disable the alpha patch, as it doesn´t apply cleanly - removed distribution, packager, vendor - renamed spec file - don´t build pl-perl - use %%{_mandir} - now includes vacuumdb.1* * Thu May 25 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0-3 - Incorporated Tatsuo´s syslog segmentation patches - Incorporated some of Trond´s changes (see below) -- Fixed some Perl 5.6 oddness in Rawhide - Incorporated some of Karl´s changes (see below) -- PL/Perl should now work. - Fixed missing /usr/bin/pg_passwd. * Mon May 22 2000 Karl DeBisschop <kdebisschop@infoplease.com> - 7.0-2.1 - make plperl module (works for linux i386, your guess for other platforms) - use "make COPT=" because postgreSQL configusre script ignores CFLAGS * Sat May 20 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0-2 - pg_options default values changed. - SPI headers (again!) fixed in a permanent manner -- hopefully! - Alpha patches! * Wed May 17 2000 Trond Eivind Glomsrød <teg@redhat.com> - changed bug in including man pages * Tue May 16 2000 Trond Eivind Glomsrød <teg@redhat.com> - changed buildroot, removed packager, vendor, distribution -- [Left all but buildroot as-is for PostgreSQL.org RPMS. LRO] - don´t strip in package [strip in PostgreSQL.org RPMS] - fix perl weirdnesses (man page in bad location, remove perllocal.pod from file list) * Mon May 15 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0 final -1 - Man pages restructured - Changed README.rpm notices about BETA - incorporated minor changes from testing - still no 7.0 final alpha patches -- for -2 or -3, I guess. - 7.0 JDBC jars! * Sat May 06 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0RC5-0.5 - UserID of 26 to conform to RedHat Standard, instead of 40. This only -- is for new installs -- upgrades will use what was already there. - Waiting on built jar´s of JDBC. If none are forthcoming by release, -- I´m going to have to bite the bullet and install the jdk.... * Mon May 01 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0RC2-0.5 - Fixed /usr/src/redhat/BUILD path to $RPM_BUILD_DIR for portability -- and so that RPM´s can be built by non-root. - Minor update to README.rpm * Tue Apr 18 2000 Lamar Owen <lamar.owen@wgcr.org> - 0.6 - Fixed patchset: wasn´t patching pgaccess or -i in postmaster.opts.default - minor update to README.rpm * Mon Apr 17 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0RC1-0.5 (release candidate 1.) - Fixed SPI header directories´ permisssions. - Removed packaging of Alpha patches until Ryan releases RC1-tested set. * Mon Apr 10 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0beta5-0.1 (released instead of the release candidate) * Sat Apr 08 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0beta4-0.2 (pre-release-candidate CVS checkout) - Alpha patches! - pg_options.sample * Fri Mar 24 2000 Lamar Owen <lamar.owen@wgcr.org> - 7.0beta3-0.1 * Mon Feb 28 2000 Lamar Owen <lamar.owen@wgcr.org> - Release 0.3 - Fixed stderr redir problem in init script - Init script now uses pg_ctl to start postmaster - Packaged inital pg_options for good logging - built with timestamped logging. * Tue Feb 22 2000 Lamar Owen <lamar.owen@wgcr.org> - Initial 7.0beta1 build - Moved PGDATA to /var/lib/pgsql/data - First stab at logging and logrotate functionality -- test carefully! - -tcl subpackage split -- tcl client and pltcl lang separated from -- the Tk stuff. PgAccess and the tk client are now in the -tk subpackage. - No patches for Alpha as yet.
Jan Dittberner wrote: > - pack all source files with bzip2, even those you left uncompressed > - extract the .jar files and the init/logrotate scripts at their destination > - bzip2 all man pages You know, I wonder why Mandrake is insisting on bzip2'ing everything. Can you point me to Mandrake's packaging policy statement, please? -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
Thomas Lockhart wrote: > Lamar, would it be possible to carry (some of) these differences in the > same spec file? *So much* is in common that it would be nice to have the > info together. But in either case, this is great progress. Thanks Jan! Thomas, could you or Jan (Dittberner) send me a tarball of the mandrake /usr/lib/rpm directory, in particular, any files that start with 'brp-'? This will help things. -- Lamar Owen WGCR Internet Radio 1 Peter 4:11