{section: Overview} These instructions are for building HTCondor versions prior to 7.5.5. If you want to build HTCondor 7.5.5 or later, see BuildingHtcondorOnUnix. {section: Configure your build} {subsubsection: build_init} {code} % ./build_init {endcode} {subsubsection: On "native" platforms} On these platforms, configure should just "work": *:: *hppa_hpux_11* *:: *ia64_rhas_3* *:: *ppc64_sles_9* *:: *ppc_aix_5.2-pl5* *:: *ps3_ydl_5.0* *:: *sun4u_sol_5.9* *:: *x86_64_deb_5.0* *:: *x86_64_rhap_5* *:: *x86_64_rhas_3* *:: *x86_deb_4.0* *:: *x86_deb_5.0* *:: *x86_macos_10.4* *:: *x86_rhap_5* *:: *x86_rhas_3* {code} % ./configure {endcode} {subsubsection: On "non-native" platforms} On anything other than the above, *but in the same family*--e.g., ia64_rhas_4, you probably want to try and build the most minimal HTCondor build possible. Configure will mostly detect the right things about the platform identification. If this builds, then you can start turning on more feature as you need them and rebuilding. {code} % ./configure \ --disable-proper \ --without-globus \ --without-krb5 \ --disable-full-port \ --without-voms \ --without-srb \ --without-hadoop \ --without-postgresql \ --without-curl \ --with-pcre \ --disable-quill \ --disable-gcc-version-check \ --disable-glibc-version-check \ --without-gsoap \ --without-glibc \ --without-cream \ --without-openssl {endcode} {subsubsection: If ./configure has problems identifying your machine} If everything seems to work, but the package name on the tarballs are wrong after you build them, then you'll want to use --with-platform=*os*-*arch*-*distro* as in =--with-platform=linux-ia64-sles8=. In the case where =./configure= just goes very very wrong, you may have to supply more arguments to configure which control deeper compilation aspects. These arguments are somewhat fiddly since they often define actual preprocessor symbols that the HTCondor code uses for conditional compilation. This means that some of these arguments can not be specified arbitrarily. It may be possible if you are "close" to a unix family we already support that you can select a combination of these that will allow the build to be completed. These are: *: --with-arch _{quote:<}architecture{quote:>}_ This can only be one of: *:: I386 *:: X86_64 *:: PPC *:: ALPHA *:: CONDOR_PPC *:: IA64 *:: CONDOR_PPC *:: HPPA *:: SUN4X *:: UNKNOWN_ARCH *: --with-os _{quote:<}OS Name{quote:>}_ This can only be one of: *:: AIX *:: HPUX *:: LINUX *:: SOLARIS *:: DARWIN *: --with-kernel Mostly arbitrary, I don't think this is extensively used for conditional compilation. This will be something like 2.6.9-89.0.7.EL.cernsmp if on linux. *: --with-os_version _{quote:<}version{quote:>}_ This can only be one of: *:: OSX_10_4 *:: OSX_UNKNOWN *:: AIX5 *:: AIXUNKNOWN *:: HPUX10 *:: HPUX11 *:: SOLARIS26 *:: SOLARIS27 *:: SOLARIS28 *:: SOLARIS29 *:: FREEBSD[5-7] *:: LINUX_TAO1 *:: LINUX_TAO_UNKNOWN *:: LINUX_YD30 *:: LINUX_YD50 *:: LINUX_YD_UNKNOWN *:: LINUX_GENTOO1.12.11.1 *:: LINUX_GENTOO_UNKNOWN *:: LINUX_FC[1-N] *:: LINUX_RH72 *:: LINUX_RH80 *:: LINUX_RH9 *:: LINUX_SLES81 *:: LINUX_SLES9 *:: LINUX_SuSE_UNKNOWN *:: LINUX_DEBIAN40 *:: LINUX_DEBIAN50 *:: LINUX_DEBIAN_UNKNOWN *:: LINUX_UNKNOWN *: --with-sysname This can be arbitrary. {section: Building your source} Before 7.5.5, HTCondor used configure + imake to generate makefiles. While there are many targets to =make=, I will only describe the two that are most likely what you want. {subsubsection: release} =make release= will make a set of executable binaries and place them in =release_dir/=. They will be dynamically linked and suitable for testing by pointing a $(RELEASE_DIR) at it from a condir_configure file. {subsubsection: public} =make public= will produce packages similar to what you can download from the our download site for the machine upon which you are building. If you ever see two or more dashes in a row in the file name, it means they are named wrong and you might have to use =--with-platform= on configure and try again. {subsection: Building the tests} {code} $ cd src/condor_tests $ make {endcode} {subsection: Running the tests} {code} $ cd src/condor_tests $ ./batch_test -b -c {endcode} {subsubsection: Running the tests again} Running the test suite leaves files and directories in the =src/condor_tests= directory that prevent the tests from running again. To solve this, either remove and recreate the =src/condor_tests= directory and build the tests again (as above), or (this doesn't remove everything, but enough to re-run the tests): {code} $ cd src/condor_tests $ rm -fr TestingPersonalCondor {endcode} After either of these, you can re-run the tests as above. {section: Running the developer test suite} {subsection: Cached Externals} Builds by default cache the externals in /scratch/condor-externals. If you're sharing the machine with others, you may collide and have problems. Solution, add {code} -DEXTERNAL_STAGE:PATH=/path/to/a/private/directory {endcode} to your invocation of configure_uw