Perform a clipped port

  1. Installed Debian 7 (in a VM).
  2. Installed the Condor build dependences.
    apt-get build-dep condor
  3. Installed other random bits and pieces, some of which seem like they should have been pulled in by the build-deps.
    apt-get install autoconf automake git libtldl-dev libpam-dev bison flex python-dev gcc-multilib
  4. Built.
  5. Tested. (See TestingCondorOnUnix.) Needed to correct a number of problems before the test suite fully passed:
    1. Set LD_LIBRARY_PATH to include install/lib.
    2. Copied libvomsapi.so* to install/lib.
    3. Removed a directory created by lib_eventlog_base but not removed when it failed; re-running a third time permitted its success.
    4. Set LD_LIBRARY_PATH in the environment of the submitted job (via the submit file command) for lib_userlog.
    5. Discovered that the test job_file_xfer_md5-remote_van was hanging (and failing after a time-out) because the VM didn't have enough disk space.
    6. Fixed condor_view_classad_types by removing the invalid forward resolution of the host's name from /etc/hosts.

Preparation of a new glibc external

See the Debian 6 full port log for more details.

Locate and see how glibc builds

apt-get source libc6
cd eglibc-2.13
debian/rules patch
cd ..
mv eglibc-2.13 glibc-2.13-38
tar -c -z -f glibc-2.13-38.tar.gz glibc-2.13-38
cd glibc-2.13-38
debian/rules build |& tee build.out

At this point, you should be able to find the exact configure command used by the Debian build script; that's what needs to go into cmake in the next section.

Create the glibc external

Follow the instructions. Note that parrot updates what it serves over HTTP from AFS every ten minutes.

Patch the glibc external

The patches from Debian 6 applied, so I'm testing those.

Check the glibc external

Make sure it builds successfully. Testing (below) will reveal if it also built everything necessary.

Build the Full Port

I rebuilt in the clipped port tree, and was gratified to see that implementing the glibc external enabled building standard universe.

Build problems were generally resolved by adding GLIBC213 to all the conditions that had GLIBC212.

I reran the test suite, and it had a lot of problems. Don't forget to LD_LIBRARY_PATH as well as CONDOR_CONFIG and your PATH. Testing with stand-alone checkpointing revealed that I'd missed a few GLIBC212 -> GLIBC213 additions, particularly including in the code that determines the location of the stack; this caused checkpointing to fail. I went back and added GLIBC213 everywhere there was GLIBC212 (only two other places) and retested, which went a lot better. (Note that you have to remove the test binaries; CMake won't rebuild them after this change.)

At least one of the standard universe tests chews a truly excessive amount of RAM (7.5 GB), so I had to adjust the configuration of the default personal HTCondor (the test glue created it with 15 slots) to allow it to actually run after it checkpointed.

After sufficient bullying, all but three non standard-universe tests passed locally, so it was on to checking the build in BaTLab. In order to do so, I cloned the x86_64_Debian6 entry in SubmitInfo.pm. Additionally, because the test machine kept its HTCondor installation in a nonstandard location, I had to adjust condor_compile (so it would work if given enough information on the command-line, as opposed to suicide when condor_config_val failed to return information that would be later ignored) and condor_arch_link (which also used condor_config_val in a way that unncessarily assumed the existence of an HTCondor config file).

Adding the LIGO test was pretty straightforward.