clarify tarball vs git builds
[openafs-wiki.git] / AFSLore / HowToBuildOpenAFSFromSource.mdwn
index bc227fe..1d5330b 100644 (file)
@@ -6,26 +6,43 @@ instructions and software needed to build OpenAFS on Microsoft Windows.
 Unless otherwise noted, the information on this page is for version 1.6.x
 (available as pre-release 3 at the time of this writing).
 
-## The Short Story
+## Getting Started
 
-Assuming you already have all the required prerequisites on your build host, the
-following commands show how to checkout and build a version OpenAFS,
+The following shows how to download a source code tarballs and build the
+OpenAFS binaries:
+
+    $ wget http://openafs.org/dl/openafs/<version>/openafs-<version>-src.tar.bz2
+    $ wget http://openafs.org/dl/openafs/<version>/openafs-<version>-doc.tar.bz2
+    $ tar xjf openafs-<version>-src.tar.bz2 
+    $ tar xjf openafs-<version>-doc.tar.bz2 
+    $ cd openafs-<version>
+    $ ./configure
+    $ make
+
+See <http://openafs.org/dl/openafs> for available versions.
+
+The following shows how to do a git checkout and build the OpenAFS binaries,
 
     $ git clone git://git.openafs.org/openafs.git
     $ cd openafs
-    $ git checkout openafs-stable-1_6_0pre3
+    $ git checkout <branch-or-tag>
     $ ./regen.sh
     $ ./configure
     $ make
-    $ sudo make install
+
 
 You will usually want to specify configure options. For example, to enable the
 traditional Transarc/IBM AFS installation paths, run configure with the
---enable-transarc-paths option.  More about the configure options below.
+--enable-transarc-paths option. (Read on for more information about configure
+options.)
+
+    $ ./configure --enable-transarc-paths $ make
+    $ make
+    $ make dest 
 
 See the end of this page for instructions on how to build RPM packages.
 
-## The Longer Story
+## Build OpenAFS 
 
 Building and packaging OpenAFS is not difficult on current unix-like
 systems. A small number of fairly common libraries and tools are required. The
@@ -68,40 +85,44 @@ below in the section Building RPMs.
 
 ## Prerequisites
 
-The following tools are needed to build OpenAFS:
+The following tools are needed to build OpenAFS from source from a tar file:
 
-- Git
-- autoconf, v2.60 or better
+- make
+- compiler
+- assembler
+- linker
+- ranlib
+- lex/yacc
+- install
+
+The following tools are needed to build OpenAFS from source from a git
+checkout:
+
+- git
+- autoconf v2.60 or better
 - automake
-- perl, v5.6 or better
+- perl v5.6 or better 
 - make
 - compiler
--- must be capable of building kernel modules for the target)
--- if using gcc, version 4.2 or better is recommended
-- assembler (as)
+- assembler
 - linker
 - ranlib
+- lex/yacc
 - install
-- lex/yacc (flex/bison)
-- rpm-build (if building rpms)
-
-Strictly speaking, git is not required for the build, but used to fetch source
-code from the OpenAFS git repository. (It is also used to determine the version
-string when building in a local git repo.) You can build release versions of
-OpenAFS without git, by retrieving the source code tree by downloading source
-code and documentation compressed tar files.
-
-You will need to generate a configure script if you checkout the source with
-git. Autoconf version 2.60 is minimum required version to generate the
-configure script.  If your system has an older version, you'll need to upgrade
-m4 and autoconf, or generate the configure script on another system which has a
-suitable version of autoconf and run the configure and build on your build
-host.
+
+The compiler used must be capable of building kernel modules for the target
+platform.
 
 > Note for RHEL users: RedHat Enterprise Linux 5.5 and less shipped with a
 > version of autoconf too old to generate the OpenAFS configure script.
 > Fortunately, the recently released RHEL 6.0 shipped with a more up to date
-> version of autoconf which mets the minimum version needed to generate th
+> version of autoconf which mets the minimum version needed to generate the
+> configure script.
+
+The following tools are needed to build OpenAFS RPMS:
+
+- perl 5.6 or better
+- rpmbuild
 
 The following development libraries are used to build OpenAFS:
 
@@ -150,8 +171,8 @@ need to build.  For example,
 
 Compressed tar files of the source tree are made available for each stable and
 development release. The most recent release is located at
-http://openafs.org/release/latest.html.  Archives for releases are located at
-/afs/openafs.org/software/openafs/ and http://dl.openafs.org/dl. For example,
+<http://openafs.org/release/latest.html>.  Archives for releases are located at
+/afs/openafs.org/software/openafs/ and <http://dl.openafs.org/dl>. For example,
 to download and uncompress version 1.4.14,
 
     $ wget http://dl.openafs.org/dl/1.4.14/openafs-1.4.14-src.tar.bz2
@@ -234,9 +255,15 @@ specify the path with the --with-linux-kernel-headers option. For example,
 
 ### Kerberos 5 configuration
 
-Recent configure scripts will automatically find the location of the
-krb5-config script to configure kerberos.  If you need to build an
-older version, use the --with-krb5-conf option. 
+The 1.6.0 configure scripts should automatically find the kerberos 5
+libraries and headers.
+
+If you need to build 1.4.x, or if the krb5-config file is in a non-standard
+location, use the --with-krb5-conf option to specify the path to the krb5-config
+utility (part of the kerberos 5 development package).
+
+    --with-krb5-conf=/usr/bin/krb5-config
+
 
 ### Debugging Options
 
@@ -270,6 +297,26 @@ for a complete list and README for more details.  Common options are:
                                    and safely used by a ptserver built 
                                    without this option. 
 
+### Configure changes in 1.6.0
+
+If you have been building the 1.5.0 freatures branch, note the following configure
+options have been removed in 1.6.0. Each feature is now always on, except as noted:
+
+* --disable-afsdb
+* --disable-largefile-fileserver
+* --enable-bos-restricted
+* --enable-fast-restart (off, but the code is still there)
+* --disable-full-vos-listvol
+* --enable-disconnected
+* --enable-icmp-pmtu-discovery
+* --enable-demand-attach-fs (see below)
+
+In 1.5.x, the demand attach fileserver feature was enabld by the a configure
+switch. Starting in 1.6.0, both DAFS and legacy binaries are built. The
+DAFS binaries are prefixed with 'da', expect for the new salvageserver, since
+salvageserver is new with DAFS.
+
+
 ## Make
 
 After a successful configure, run make to build OpenAFS. The
@@ -314,8 +361,7 @@ these file into your local filesystem:
     $ sudo cp -p -r lib /usr/afsws
     $ sudo cp -p -r include /usr/afsws
 
-See Storing AFS Binaries in AFS
-http://docs.openafs.org/QuickStartUnix/ch02s29.html for instructions on
+See [Storing AFS Binaries in AFS](http://docs.openafs.org/QuickStartUnix/ch02s29.html) for instructions on
 how to store the workstation binaries in AFS.
 
 ## Post build
@@ -327,7 +373,13 @@ Some make targets of interest
 - make tests - make the (old) afs test suite
 
 
-### Building RPM packages
+## Building RPM packages
+
+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.
@@ -344,12 +396,12 @@ archive files.
     $ 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.
+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.
 
 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.
+in the $HOME/rpmbuild/RPMS/_arch_ directory.
 
     $ openafs-<version>/src/packaging/RedHat/makesrpm.pl openafs-<version>-src.tar.bz2 openafs-<version>-doc.tar.bz2
     $ rpmbuild --rebuild openafs-<version>-1.0.src.rpm