improve description for building rpms
authorhttps://www.google.com/accounts/o8/id?id=AItOawk_GD3B2YRV5t7ZM5GOh2nD2jfC6Rihqvg <Michael@web>
Tue, 10 May 2011 19:30:18 +0000 (12:30 -0700)
committerOpenAFS Wiki <ikiwiki@openafs.org>
Tue, 10 May 2011 19:30:18 +0000 (12:30 -0700)
AFSLore/HowToBuildOpenAFSFromSource.mdwn

index 2c29ec5..0d76ee0 100644 (file)
@@ -378,38 +378,48 @@ Some make targets of interest
 
 
 ## Building RPM packages
+A script called makesrpm.pl is provided to build a source RPM package.  You can
+use the generated source RPM to build the binaries and create the RPM packages
+for your source code tree of OpenAFS.
 
-A script is provided to build RPM packages. This script will run the
-configure and make as part of the process. You'll need to get source
-and document tar archives of the version you want to build, and then
-use a script to build the source RPM, then use the rpmbuild tool to
-build the packages from that source RPM.
-
-To build OpenAFS RPM packages, use the OpenAFS makesrpm.pl script to build a
-source RPM, and then use the rpm tool rpmbuild to build the various packages.
-The makesrpm.pl requires the source and document tar archive files. If you
-are building from a git repository, first create the source and document
-archive files.
+The first step is to create a source tree of OpenAFS. Run the regen.sh script
+to build the docs and to generate the configure script. Also, use git describe
+to make a version stamp file which will be used by the packaging process. This
+example shows how to get a source tree from a remote git repo.
 
     $ git clone git://git.openafs.org/openafs.git openafs-<version>
     $ cd openafs-<version>
     $ git checkout <tagname>
     $ git describe >.version
     $ ./regen.sh
-    $ cd ..
-    $ tar cjf openafs-<version>-src.tar.bz2 openafs-<version> --exclude .git --exclude doc
-    $ tar cjf openafs-<version>-doc.tar.bz2 openafs-<version>/doc
 
-where _version_ is the dotted OpenAFS version number, such as 1.6.0,
-and _tagname_ is the git tag for the version, such as openafs-stable-1_6_0.
+The _version_ is the dotted OpenAFS version number, such as 1.6.0,
+and the _tagname_ is the git tag for the version, such as openafs-stable-1_6_0.
 The _version_ number for pre-releases are suffixed with pre<number>. For example,
 to build 1.6.0pre5, create a directory called openafs-1.6.0pre5.
 
-Next run makesrpm.pl to build the source RPM, and then use rpmbuild to
-build the binaries and packages. The resulting packages will be located
-in the $HOME/rpmbuild/RPMS/_arch_ directory.
+Next, create a source RPM file. This requires creating a tar file for the
+source files and a tar file for the documents.  Run the makesrpm program
+to generate an OpenAFS source RPM.
 
+    $ cd .. # move out of the source tree
+    $ tar cjf openafs-<version>-src.tar.bz2 openafs-<version> --exclude .git --exclude doc
+    $ tar cjf openafs-<version>-doc.tar.bz2 openafs-<version>/doc
     $ openafs-<version>/src/packaging/RedHat/makesrpm.pl openafs-<version>-src.tar.bz2 openafs-<version>-doc.tar.bz2
+
+At this point you should have a source RPM called openafs-<version>-1.0.src.rpm. See the makesrpm.pl for additional options.
+The source tree and tar files are no longer needed.
+
+Finally, run rpmbuild to build the build binary RPM packages. If all goes well, the final
+output will show the destination directory and an exit code of zero.
+
     $ rpmbuild --rebuild openafs-<version>-1.0.src.rpm
-    $ cd ~/rpmbuild/RPMS/<arch>
+    ...
+    + cd /usr/src/redhat/BUILD
+    + rm -rf openafs-<version>
+    + exit 0
+
+Alternatively, the source RPM may be installed, which will place the sources in the
+rpm SOURCE directory and a spec file in the rpm SPEC directory.