docs/jds-rpm-rules.html
author dcarbery
Fri, 24 Nov 2006 16:37:59 +0000
branch217update
changeset 19096 d542fc2c823e
parent 5853 97568d5744b8
permissions -rw-r--r--
Merged trunk changes r9797:9829 into 217update branch.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5808
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
     1
<h2>JDS RPM Rules</h2>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
     2
5809
6c5ea9330f7b 2005-09-12 Glynn Foster <[email protected]>
gman
parents: 5808
diff changeset
     3
<style>
6c5ea9330f7b 2005-09-12 Glynn Foster <[email protected]>
gman
parents: 5808
diff changeset
     4
li {padding:3px;}
6c5ea9330f7b 2005-09-12 Glynn Foster <[email protected]>
gman
parents: 5808
diff changeset
     5
</style>
6c5ea9330f7b 2005-09-12 Glynn Foster <[email protected]>
gman
parents: 5808
diff changeset
     6
5808
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
     7
<p>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
     8
The following RPM rules apply for hacking on the JDS sources -
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
     9
<p>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    10
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    11
<h3>Scripts</h3>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    12
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    13
<ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    14
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    15
	pre/post-install/remove scripts should never touch files belonging
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    16
	to another package.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    17
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    18
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    19
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    20
	Never add or delete files in pre/post-install scripts. Adding files
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    21
	will result in files in the file system that do not belong to any
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    22
	packages. Removing files will cause the package to fail 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    23
	verification (rpm --verify) and result in warnings about missing
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    24
	files when you uninstall the package.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    25
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    26
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    27
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    28
	If you change a file in a pre/post-install script, make sure you
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    29
	use 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    30
	<a href="http://www.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-CONFIG-DIRECTIVE">%verify</a>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    31
	directive to tell RPM not to verify the MD5 checksum, size and
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    32
	modification of that file when running rpm --verify -
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    33
	<blockquote>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    34
		<tt>%verify (not md5 size mtime) file.conf</tt>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    35
	</blockquote>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    36
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    37
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    38
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    39
	 The script fragment for registering help docs with scrollkeeper
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    40
	should be "<tt>scrollkeeper-update -q</tt>" and nothing else.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    41
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    42
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    43
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    44
	 Do not use the "j" or "z" flags of tar to uncompress sources 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    45
	as it's not portable on Solaris. Use 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    46
	"<tt>bzip2 -dc %SOURCEn | tar xf -</tt>"
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    47
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    48
</ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    49
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    50
<h3>Dependencies</h3>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    51
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    52
<ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    53
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    54
	When <tt>%pre</tt> and <tt>%post</tt> scripts depend on other 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    55
	packages (almost always the case), the package has to use 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    56
	the <tt>PreReq: <i>other-package</i></tt> tag to define that
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    57
	dependency. This tag ensures that other-package is installed 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    58
	before the package that defines the tag. The Requires tag 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    59
	only specifies that both packages need to be installed to 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    60
	get a running system, but the order is not important.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    61
	<br/><br/>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    62
	For example, if <tt>%post</tt> calls <tt>scrollkeeper-update</tt>,
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    63
	then the spec file must include "<tt>PreReq: scrollkeeper</tt>".
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    64
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    65
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    66
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    67
	 When a previously delivered package obsoleted by new one, and 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    68
	therefore no longer delivered, the new package has to use the 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    69
	"Obsoletes" tag to avoid problems with upgrades. If the new 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    70
	package still provides the old code, also use the "Provides" 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    71
	tag.  For example, if package <tt>bonobo-activation</tt> is 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    72
	merged into <tt>libbonobo</tt> put this into <tt>libbonobo.spec</tt> -
5853
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    73
	<pre>
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    74
		%define bonobo_activation_version 2.4.0
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    75
		Obsoletes: bonobo-activation < %{bonobo_activation_version}
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    76
		Provides: bonobo-activation = %{bonobo_activation_version}
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    77
		Obsoletes: bonobo-activation-devel < %{bonobo_activation_version}
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    78
		Provides: bonobo-activation-devel = %{bonobo_activation_version}
97568d5744b8 2005-09-14 Glynn Foster <[email protected]>
gman
parents: 5809
diff changeset
    79
	</pre>
5808
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    80
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    81
</ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    82
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    83
<h3>Files</h3>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    84
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    85
<ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    86
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    87
	 Always use the most specific directory variable, e.g. 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    88
	<tt>%_bindir</tt> instead of <tt>%_prefix/bin</tt> and 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    89
	<tt>%_datadir</tt> instead of <tt>%_prefix/share</tt>.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    90
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    91
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    92
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    93
	 Use the 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    94
	<tt><a href="http://www.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-CONFIG-DIRECTIVE">%config</a></tt>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    95
	directive for config files.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    96
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    97
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    98
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
    99
	Do not include libtool's .la files in the packages. Not even in the 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   100
	devel package.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   101
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   102
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   103
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   104
	Do not include static libs unless absolutely necessary, in that case, 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   105
	include it in the devel package.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   106
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   107
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   108
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   109
	Include lib*.so.* in the base package, lib*.so in the -devel package.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   110
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   111
</ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   112
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   113
<h3>Patches</h3>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   114
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   115
<ul>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   116
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   117
	All patches should be p1 (i.e. the files names in the diff start with the 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   118
	top level source dir and you use <tt>%patchn -p1</tt> in the spec file.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   119
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   120
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   121
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   122
	The patch naming convention should be the following - 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   123
	<tt>module_name-nn-descriptive_text.diff</tt>, where <tt><i>modules_name</i></tt>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   124
	is the base name of the spec file without the .spec, <tt><i>nn</i></tt> is the 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   125
	number of the patch (<tt><i>Patchnn</i></tt> tag in the spec file) and 
5809
6c5ea9330f7b 2005-09-12 Glynn Foster <[email protected]>
gman
parents: 5808
diff changeset
   126
	<tt><i>descriptive_text</i></tt> is a very short description of what the patch 
5808
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   127
	does or why it is needed, e.g.:
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   128
	<blockquote><tt>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   129
		gst-02-fix-registry-crashes.diff.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   130
	</tt><blockquote>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   131
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   132
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   133
  <li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   134
	When you remove a patch, make sure that patches with higher numbers are renumbered 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   135
	(update <tt><i>Patchnn</i></tt> tag in the spec file, rename file, cvs remove 
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   136
	old_file, cvs add new_file). There is a script in the <b>scripts</b> directory to
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   137
	automatically reorder patches - use it carefully if you do so.
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   138
  </li>
04cd7e6bacf2 2005-09-12 Glynn Foster <[email protected]>
gman
parents:
diff changeset
   139
</ul>