|
|
|
|
@ -545,24 +545,23 @@ |
|
|
|
|
|
|
|
|
|
<H3><A name="15">15</A>) How are RPM's packaged?</H3> |
|
|
|
|
|
|
|
|
|
<P>This was written by Lamar Owen:</P> |
|
|
|
|
<P> |
|
|
|
|
<P>This was written by 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. |
|
|
|
|
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 |
|
|
|
|
@ -635,24 +634,23 @@ 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> |
|
|
|
|
<P> |
|
|
|
|
|
|
|
|
|
<H3><A name="16">16</A>) How are CVS branches managed?</H3> |
|
|
|
|
<P>This was written by Tom Lane: |
|
|
|
|
<P> |
|
|
|
|
|
|
|
|
|
<P>This was written by Tom Lane:</P> |
|
|
|
|
<PRE> |
|
|
|
|
If you just do basic "cvs checkout", "cvs update", "cvs commit", then |
|
|
|
|
If you just do basic "cvs checkout", "cvs update", "cvs commit", then |
|
|
|
|
you'll always be dealing with the HEAD version of the files in CVS. |
|
|
|
|
That's what you want for development, but if you need to patch past |
|
|
|
|
stable releases then you have to be able to access and update the |
|
|
|
|
"branch" portions of our CVS repository. We normally fork off a branch |
|
|
|
|
"branch" portions of our CVS repository. We normally fork off a branch |
|
|
|
|
for a stable release just before starting the development cycle for the |
|
|
|
|
next release. |
|
|
|
|
|
|
|
|
|
The first thing you have to know is the branch name for the branch you |
|
|
|
|
are interested in getting at. Unfortunately Marc has been less than |
|
|
|
|
100% consistent in naming the things. One way to check is to apply |
|
|
|
|
"cvs log" to any file that goes back a long time, for example HISTORY |
|
|
|
|
"cvs log" to any file that goes back a long time, for example HISTORY |
|
|
|
|
in the top directory: |
|
|
|
|
|
|
|
|
|
$ cvs log HISTORY | more |
|
|
|
|
@ -681,16 +679,16 @@ keyword substitution: kv |
|
|
|
|
total revisions: 129; selected revisions: 129 |
|
|
|
|
More---q |
|
|
|
|
|
|
|
|
|
Unfortunately "cvs log" isn't all that great about distinguishing |
|
|
|
|
branches from tags --- it calls 'em all "symbolic names". (A "tag" just |
|
|
|
|
Unfortunately "cvs log" isn't all that great about distinguishing |
|
|
|
|
branches from tags --- it calls 'em all "symbolic names". (A "tag" just |
|
|
|
|
marks a specific timepoint across all files --- it's essentially a |
|
|
|
|
snapshot whereas a branch is a changeable fileset.) Rule of thumb is |
|
|
|
|
that names attached to four-number versions where the third number is |
|
|
|
|
zero represent branches, the others are just tags. Here we can see that |
|
|
|
|
the extant branches are |
|
|
|
|
REL7_1_STABLE |
|
|
|
|
REL7_0_PATCHES |
|
|
|
|
REL6_5_PATCHES |
|
|
|
|
REL7_1_STABLE |
|
|
|
|
REL7_0_PATCHES |
|
|
|
|
REL6_5_PATCHES |
|
|
|
|
The next commit to the head will be revision 1.107, whereas any changes |
|
|
|
|
committed into the REL7_1_STABLE branch will have revision numbers like |
|
|
|
|
1.106.2.*, corresponding to the branch number 1.106.0.2 (don't ask where |
|
|
|
|
@ -705,25 +703,25 @@ with very little beta testing --- so whenever you commit an update to a |
|
|
|
|
stable branch, you'd better be doubly sure that it's correct.) |
|
|
|
|
|
|
|
|
|
Normally, to checkout the head branch, you just cd to the place you |
|
|
|
|
want to contain the toplevel "pgsql" directory and say |
|
|
|
|
want to contain the toplevel "pgsql" directory and say |
|
|
|
|
|
|
|
|
|
cvs ... checkout pgsql |
|
|
|
|
cvs ... checkout pgsql |
|
|
|
|
|
|
|
|
|
To get a past branch, you cd to whereever you want it and say |
|
|
|
|
|
|
|
|
|
cvs ... checkout -r BRANCHNAME pgsql |
|
|
|
|
cvs ... checkout -r BRANCHNAME pgsql |
|
|
|
|
|
|
|
|
|
For example, just a couple days ago I did |
|
|
|
|
|
|
|
|
|
mkdir ~postgres/REL7_1 |
|
|
|
|
cd ~postgres/REL7_1 |
|
|
|
|
cvs ... checkout -r REL7_1_STABLE pgsql |
|
|
|
|
mkdir ~postgres/REL7_1 |
|
|
|
|
cd ~postgres/REL7_1 |
|
|
|
|
cvs ... checkout -r REL7_1_STABLE pgsql |
|
|
|
|
|
|
|
|
|
and now I have a maintenance copy of 7.1.*. |
|
|
|
|
|
|
|
|
|
When you've done a checkout in this way, the branch name is "sticky": |
|
|
|
|
When you've done a checkout in this way, the branch name is "sticky": |
|
|
|
|
CVS automatically knows that this directory tree is for the branch, |
|
|
|
|
and whenever you do "cvs update" or "cvs commit" in this tree, you'll |
|
|
|
|
and whenever you do "cvs update" or "cvs commit" in this tree, you'll |
|
|
|
|
fetch or store the latest version in the branch, not the head version. |
|
|
|
|
Easy as can be. |
|
|
|
|
|
|
|
|
|
@ -735,9 +733,8 @@ the tree right away after a major release --- we wait for a dot-release |
|
|
|
|
or two, so that we won't have to double-patch the first wave of fixes. |
|
|
|
|
</PRE> |
|
|
|
|
|
|
|
|
|
<P>Also, Ian Lance Taylor points out that branches and tags can be |
|
|
|
|
distiguished by using "cvs status -v".</P> |
|
|
|
|
|
|
|
|
|
<P>Also, Ian Lance Taylor points out that branches and tags can be |
|
|
|
|
distiguished by using "cvs status -v".</P> |
|
|
|
|
</BODY> |
|
|
|
|
</HTML> |
|
|
|
|
|
|
|
|
|
|