OSDN Git Service

Update FAQ_DEV.
authorBruce Momjian <bruce@momjian.us>
Mon, 26 Nov 2001 21:56:40 +0000 (21:56 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 26 Nov 2001 21:56:40 +0000 (21:56 +0000)
doc/src/FAQ/FAQ_DEV.html

index 94306bd..f351989 100644 (file)
@@ -51,6 +51,7 @@
      <A href="#12">12</A>) How do I add a new port?<BR>
      <A href="#13">13</A>) What is CommandCounterIncrement()?<BR>
      <A href="#14">14</A>) Why don't we use threads in the backend?<BR>
+     <A href="#15">15</A>) How are RPM's packaged?<BR>
      <BR>
      
     <HR>
@@ -68,7 +69,8 @@
     ccsym           find standard defines made by your compiler
     entab           converts tabs to spaces, used by pgindent
     find_static     finds functions that could be made static
-    find_typedef        get a list of typedefs in the source code
+    find_typedef    finds a list of typedefs in the source code
+    find_badmacros  finds macros that use braces incorrectly
     make_ctags      make vi 'tags' file in each directory
     make_diff       make *.orig and diffs of source
     make_etags      make emacs 'etags' files
 
       <LI>The backend code would be more complex.</LI>
     </UL>
+
+    <H3><A name="15">15</A>) How are RPM's packaged?</H3>
+
+<P>This is from Lamar Owen:</P>
+<PRE>
+As to how the RPMs are built -- to answer that question sanely requires
+me to know how much experience you have with the whole RPM paradigm. 
+'How is the RPM built?' is a multifaceted question.  The obvious simple
+answer is that I maintain:
+       1.)     A set of patches to make certain portions of the source
+               tree 'behave' in the different environment of the RPMset;
+       2.)     The initscript;
+       3.)     Any other ancilliary scripts and files;
+       4.)     A README.rpm-dist document that tries to adequately document
+               both the differences between the RPM build and the WHY of the
+               differences, as well as useful RPM environment operations
+               (like, using syslog, upgrading, getting postmaster to
+               start at OS boot, etc);
+       5.)     The spec file that throws it all together.  This is not a 
+               trivial undertaking in a package of this size.
+
+I then download and build on as many different canonical distributions
+as I can -- currently I am able to build on Red Hat 6.2, 7.0, and 7.1 on
+my personal hardware.  Occasionally I receive opportunity from certain
+commercial enterprises such as Great Bridge and PostgreSQL Inc to build
+on other distributions.  
+
+I test the build by installing the resulting packages and running the
+regression tests.  Once the build passes these tests, I upload to the
+postgresql.org ftp server and make a release announcement.  I am also
+responsible for maintaining the RPM download area on the ftp site.
+
+You'll notice I said 'canonical' distributions above.  That simply means
+that the machine is as stock 'out of the box' as practical -- that is,
+everything (except select few programs) on these boxen are installed by
+RPM; only official Red Hat released RPMs are used (except in unusual
+circumstances involving software that will not alter the build -- for
+example, installing a newer non-RedHat version of the Dia diagramming
+package is OK -- installing Python 2.1 on the box that has Python 1.5.2
+installed is not, as that alters the PostgreSQL build).  The RPM as
+uploaded is built to as close to out-of-the-box pristine as is
+possible.  Only the standard released 'official to that release'
+compiler is used -- and only the standard official kernel is used as
+well.
+
+For a time I built on Mandrake for RedHat consumption -- no more. 
+Nonstandard RPM building systems are worse than useless.  Which is not
+to say that Mandrake is useless!  By no means is Mandrake useless --
+unless you are building Red Hat RPMs -- and Red Hat is useless if you're
+trying to build Mandrake or SuSE RPMs, for that matter.  But I would be
+foolish to use 'Lamar Owen's Super Special RPM Blend Distro 0.1.2' to
+build for public consumption! :-)
+
+I _do_ attempt to make the _source_ RPM compatible with as many
+distributions as possible -- however, since I have limited resources (as
+a volunteer RPM maintainer) I am limited as to the amount of testing
+said build will get on other distributions, architectures, or systems.  
+
+And, while I understand people's desire to immediately upgrade to the
+newest version, realize that I do this as a side interest -- I have a
+regular, full-time job as a broadcast
+engineer/webmaster/sysadmin/Technical Director which occasionally
+prevents me from making timely RPM releases. This happened during the
+early part of the 7.1 beta cycle -- but I believe I was pretty much on
+the ball for the Release Candidates and the final release.
+
+I am working towards a more open RPM distribution -- I would dearly love
+to more fully document the process and put everything into CVS -- once I
+figure out how I want to represent things such as the spec file in a CVS
+form.  It makes no sense to maintain a changelog, for instance, in the
+spec file in CVS when CVS does a better job of changelogs -- I will need
+to write a tool to generate a real spec file from a CVS spec-source file
+that would add version numbers, changelog entries, etc to the result
+before building the RPM.  IOW, I need to rethink the process -- and then
+go through the motions of putting my long RPM history into CVS one
+version at a time so that version history information isn't lost.
+
+As to why all these files aren't part of the source tree, well, unless
+there was a large cry for it to happen, I don't believe it should. 
+PostgreSQL is very platform-agnostic -- and I like that.  Including the
+RPM stuff as part of the Official Tarball (TM) would, IMHO, slant that
+agnostic stance in a negative way.  But maybe I'm too sensitive to
+that.  I'm not opposed to doing that if that is the consensus of the
+core group -- and that would be a sneaky way to get the stuff into CVS
+:-).  But if the core group isn't thrilled with the idea (and my
+instinct says they're not likely to be), I am opposed to the idea -- not
+to keep the stuff to myself, but to not hinder the platform-neutral
+stance. IMHO, of course.  
+
+Of course, there are many projects that DO include all the files
+necessary to build RPMs from their Official Tarball (TM).
+</PRE>
+
   </BODY>
 </HTML>