aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Kerr <cjk34@cam.ac.uk>2013-07-02 22:43:21 +0100
committerChris Kerr <cjk34@cam.ac.uk>2013-07-02 22:43:21 +0100
commitfb62bf9f2d0d2e8840bf8e47f3da24ed01eacff8 (patch)
tree3068cfee72e6c0ece4eb02bddab08e966f4da26c
parentMerge branch 'master' of https://github.com/gentoo-science/sci into HTCondor (diff)
downloadsci-fb62bf9f2d0d2e8840bf8e47f3da24ed01eacff8.tar.gz
sci-fb62bf9f2d0d2e8840bf8e47f3da24ed01eacff8.tar.bz2
sci-fb62bf9f2d0d2e8840bf8e47f3da24ed01eacff8.zip
Copied some patches from the Fedora repository at
http://pkgs.fedoraproject.org/cgit/condor.git/tree/
-rw-r--r--sys-cluster/htcondor/files/0001-Apply-the-user-s-condor_config-last-rather-than-firs.patch90
-rw-r--r--sys-cluster/htcondor/files/condor_config.generic.patch257
-rw-r--r--sys-cluster/htcondor/htcondor-8.0.0.ebuild2
3 files changed, 349 insertions, 0 deletions
diff --git a/sys-cluster/htcondor/files/0001-Apply-the-user-s-condor_config-last-rather-than-firs.patch b/sys-cluster/htcondor/files/0001-Apply-the-user-s-condor_config-last-rather-than-firs.patch
new file mode 100644
index 000000000..0664fe764
--- /dev/null
+++ b/sys-cluster/htcondor/files/0001-Apply-the-user-s-condor_config-last-rather-than-firs.patch
@@ -0,0 +1,90 @@
+--- a/src/condor_utils/condor_config.cpp
++++ b/src/condor_utils/condor_config.cpp
+@@ -110,6 +110,7 @@ void check_params();
+ // External variables
+ extern int ConfigLineNo;
+ } /* End extern "C" */
++bool find_user_file(std::string &);
+
+ // Global variables
+ BUCKET *ConfigTab[TABLESIZE];
+@@ -654,6 +655,14 @@ real_config(char* host, int wantsQuiet, bool wantExtraInfo)
+ if(dirlist) { free(dirlist); dirlist = NULL; }
+ if(newdirlist) { free(newdirlist); newdirlist = NULL; }
+
++ // Now, insert overrides from the user config file
++ std::string file_location;
++ if (find_user_file(file_location))
++ {
++ process_config_source( file_location.c_str(), "user local source", host, false );
++ local_config_sources.append(file_location.c_str());
++ }
++
+ // Now, insert any macros defined in the environment.
+ char **my_environ = GetEnviron();
+ for( int i = 0; my_environ[i]; i++ ) {
+@@ -996,6 +1005,38 @@ find_global()
+ }
+
+
++// Find user-specific location of a file
++// Returns true if found, and puts the location in the file_location argument.
++// If not found, returns false. The contents of file_location are undefined.
++bool
++find_user_file(std::string &file_location)
++{
++#ifdef UNIX
++ // $HOME/.condor/condor_config
++ struct passwd *pw = getpwuid( geteuid() );
++ std::stringstream ss;
++ if ( can_switch_ids() || !pw || !pw->pw_dir ) {
++ return false;
++ }
++ ss << pw->pw_dir << "/." << myDistro->Get() << "/" << myDistro->Get() << "_config";
++ file_location = ss.str();
++
++ int fd;
++ if ((fd = safe_open_wrapper_follow(file_location.c_str(), O_RDONLY)) < 0) {
++ return false;
++ } else {
++ close(fd);
++ dprintf(D_FULLDEBUG, "Reading condor configuration from '%s'\n", file_location.c_str());
++ }
++
++ return true;
++#else
++ // To get rid of warnings...
++ file_location = "";
++ return false;
++#endif
++}
++
+ // Find location of specified file
+ char*
+ find_file(const char *env_name, const char *file_name)
+@@ -1052,21 +1093,15 @@ find_file(const char *env_name, const char *file_name)
+ if (!config_source) {
+ // List of condor_config file locations we'll try to open.
+ // As soon as we find one, we'll stop looking.
+- const int locations_length = 4;
++ const int locations_length = 3;
+ MyString locations[locations_length];
+- // 1) $HOME/.condor/condor_config
+- struct passwd *pw = getpwuid( geteuid() );
+- if ( !can_switch_ids() && pw && pw->pw_dir ) {
+- formatstr( locations[0], "%s/.%s/%s", pw->pw_dir, myDistro->Get(),
+- file_name );
+- }
+ // 2) /etc/condor/condor_config
+- locations[1].formatstr( "/etc/%s/%s", myDistro->Get(), file_name );
++ locations[0].formatstr( "/etc/%s/%s", myDistro->Get(), file_name );
+ // 3) /usr/local/etc/condor_config (FreeBSD)
+- locations[2].formatstr( "/usr/local/etc/%s", file_name );
++ locations[1].formatstr( "/usr/local/etc/%s", file_name );
+ if (tilde) {
+ // 4) ~condor/condor_config
+- locations[3].formatstr( "%s/%s", tilde, file_name );
++ locations[2].formatstr( "%s/%s", tilde, file_name );
+ }
+
+ int ctr;
diff --git a/sys-cluster/htcondor/files/condor_config.generic.patch b/sys-cluster/htcondor/files/condor_config.generic.patch
new file mode 100644
index 000000000..5a986227c
--- /dev/null
+++ b/sys-cluster/htcondor/files/condor_config.generic.patch
@@ -0,0 +1,257 @@
+--- a/src/condor_examples/condor_config.generic
++++ b/src/condor_examples/condor_config.generic
+@@ -1,12 +1,31 @@
+ ######################################################################
++######################################################################
++### ###
++### N O T I C E: D O N O T E D I T T H I S F I L E ###
++### ###
++### Customization should be done via the LOCAL_CONFIG_DIR. ###
++### ###
++######################################################################
++######################################################################
++
++
++######################################################################
+ ##
+ ## condor_config
+ ##
+ ## This is the global configuration file for condor. Any settings
+-## made here may potentially be overridden in the local configuration
+-## file. KEEP THAT IN MIND! To double-check that a variable is
+-## getting set from the configuration file that you expect, use
+-## condor_config_val -v <variable name>
++## found here * * s h o u l d b e c u s t o m i z e d i n
++## a l o c a l c o n f i g u r a t i o n f i l e. * *
++##
++## The local configuration files are located in LOCAL_CONFIG_DIR, set
++## below.
++##
++## For a basic configuration, you may only want to start by
++## customizing CONDOR_HOST and DAEMON_LIST.
++##
++## Note: To double-check where a configuration variable is set from
++## you can use condor_config_val -v -config <variable name>,
++## e.g. condor_config_val -v -config CONDOR_HOST.
+ ##
+ ## The file is divided into four main parts:
+ ## Part 1: Settings you likely want to customize
+@@ -53,7 +72,7 @@
+ ## Pathnames:
+ ##--------------------------------------------------------------------
+ ## Where have you installed the bin, sbin and lib condor directories?
+-RELEASE_DIR = /usr/local/condor
++RELEASE_DIR = /usr
+
+ ## Where is the local condor directory for each host?
+ ## This is where the local config file(s), logs and
+@@ -61,17 +80,20 @@
+ LOCAL_DIR = $(TILDE)
+ #LOCAL_DIR = $(RELEASE_DIR)/hosts/$(HOSTNAME)
+
+-## Where is the machine-specific local config file for each host?
+-LOCAL_CONFIG_FILE = $(LOCAL_DIR)/condor_config.local
+-#LOCAL_CONFIG_FILE = $(RELEASE_DIR)/etc/$(HOSTNAME).local
++## Looking for LOCAL_CONFIG_FILE? You will not find it here. Instead
++## put a file in the LOCAL_CONFIG_DIR below. It is a more extensible
++## means to manage configuration. The order in which configuration
++## files are read from the LOCAL_CONFIG_DIR is lexicographic. For
++## instance, config in 00MyConfig will be overridden by config in
++## 97MyConfig.
+
+ ## Where are optional machine-specific local config files located?
+ ## Config files are included in lexicographic order.
+-LOCAL_CONFIG_DIR = $(LOCAL_DIR)/config
+-#LOCAL_CONFIG_DIR = $(LOCAL_DIR)/config
++## No default.
++LOCAL_CONFIG_DIR = $(ETC)/config.d
+
+ ## Blacklist for file processing in the LOCAL_CONFIG_DIR
+-## LOCAL_CONFIG_DIR_EXCLUDE_REGEXP = ^((\..*)|(.*~)|(#.*)|(.*\.rpmsave)|(.*\.rpmnew))$
++LOCAL_CONFIG_DIR_EXCLUDE_REGEXP = ^((\..*)|(.*~)|(#.*)|(.*\.rpmsave)|(.*\.rpmnew))$
+
+ ## If the local config file is not present, is it an error?
+ ## WARNING: This is a potential security issue.
+@@ -409,7 +431,22 @@
+ ## condor account, it's probably condor. Otherwise, it's whatever
+ ## you've set in the CONDOR_IDS environment variable. See the Admin
+ ## manual for details on this.
+-LOCK = $(LOG)
++LOCK = /var/lock/condor
++
++# Condor allows for creating surrogate lock files that always live on
++# local disk. This is useful for the times when Condor would otherwise
++# lock a file on a network filesystem, such as a UserLog.
++# CREATE_LOCKS_ON_LOCAL_DISK controls this feature, and
++# LOCAL_DISK_LOCK_DIR controls where the lock files are created. The
++# local dir must have tmp-like permissions (1777), because multiple
++# users, e.g. via condor_submit or condor_dagman, will need to
++# add/remove lock files.
++# NOTE: This will not provide proper locking if a shared file is
++# simultaneously accessed from multiple machines. However, that is not
++# a common event. One example where it is possible is remote
++# submission with condor_submit -remote.
++#CREATE_LOCKS_ON_LOCAL_DISK = TRUE
++LOCAL_DISK_LOCK_DIR = $(LOCK)/local
+
+ ## If you don't use a fully qualified name in your /etc/hosts file
+ ## (or NIS, etc.) for either your official hostname or as an alias,
+@@ -475,7 +512,8 @@
+ ## the execute machine and just make sure the two strings match. The
+ ## default for this setting is False, since it is more secure this
+ ## way.
+-#TRUST_UID_DOMAIN = False
++## Default is False
++TRUST_UID_DOMAIN = True
+
+ ## If you would like to be informed in near real-time via condor_q when
+ ## a vanilla/standard/java job is in a suspension state, set this attribute to
+@@ -514,8 +552,9 @@
+ ## just disable it).
+ #NEGOTIATOR_IGNORE_USER_PRIORITIES = False
+
+-## This is a list of libraries containing ClassAd plug-in functions.
+-#CLASSAD_USER_LIBS =
++## These are the directories used to locate classad plug-in functions
++#CLASSAD_SCRIPT_DIRECTORY =
++#CLASSAD_LIB_PATH =
+
+ ## This setting tells Condor whether to delegate or copy GSI X509
+ ## credentials when sending them over the wire between daemons.
+@@ -605,6 +644,9 @@
+ MAX_HDFS_LOG = 1000000
+ HDFS_DEBUG =
+
++MAX_TRIGGERD_LOG = 1000000
++TRIGGERD_DEBUG =
++
+ # High Availability Logs
+ MAX_HAD_LOG = 1000000
+ HAD_DEBUG =
+@@ -932,14 +974,18 @@ TESTINGMODE_CLAIM_WORKLIFE = 1200
+ ######################################################################
+
+ ## Pathnames
+-LOG = $(LOCAL_DIR)/log
++LOG = /var/log/condor
+ SPOOL = $(LOCAL_DIR)/spool
+ EXECUTE = $(LOCAL_DIR)/execute
+ BIN = $(RELEASE_DIR)/bin
+ LIB = $(RELEASE_DIR)/lib
+-INCLUDE = $(RELEASE_DIR)/include
++INCLUDE = $(RELEASE_DIR)/include/condor
+ SBIN = $(RELEASE_DIR)/sbin
+-LIBEXEC = $(RELEASE_DIR)/libexec
++SHARE = $(RELEASE_DIR)/share/condor
++RUN = /var/run/condor
++DATA = $(SPOOL)
++ETC = /etc/condor
++LIBEXEC = $(RELEASE_DIR)/libexec/condor
+
+ ## If you leave HISTORY undefined (comment it out), no history file
+ ## will be created.
+@@ -963,6 +1009,7 @@ HAD_LOG = $(LOG)/HADLog
+ REPLICATION_LOG = $(LOG)/ReplicationLog
+ TRANSFERER_LOG = $(LOG)/TransfererLog
+ HDFS_LOG = $(LOG)/HDFSLog
++TRIGGERD_LOG = $(LOG)/TriggerLog
+
+ ## Lock files
+ SHADOW_LOCK = $(LOCK)/ShadowLock
+@@ -1084,7 +1131,7 @@ DAEMON_LIST = MASTER, STARTD, SCHEDD
+ #MASTER, STARTD, SCHEDD, KBDD, COLLECTOR, NEGOTIATOR, EVENTD, \
+ #VIEW_SERVER, CONDOR_VIEW, VIEW_COLLECTOR, HAWKEYE, CREDD, HAD, \
+ #DBMSD, QUILL, JOB_ROUTER, ROOSTER, LEASEMANAGER, HDFS, SHARED_PORT, \
+-#DEFRAG
++#DEFRAG TRIGGERD
+
+
+ ## Where are the binaries for these daemons?
+@@ -1094,7 +1141,6 @@ SCHEDD = $(SBIN)/condor_schedd
+ KBDD = $(SBIN)/condor_kbdd
+ NEGOTIATOR = $(SBIN)/condor_negotiator
+ COLLECTOR = $(SBIN)/condor_collector
+-CKPT_SERVER = $(SBIN)/condor_ckpt_server
+ STARTER_LOCAL = $(SBIN)/condor_starter
+ JOB_ROUTER = $(LIBEXEC)/condor_job_router
+ ROOSTER = $(LIBEXEC)/condor_rooster
+@@ -1102,6 +1148,7 @@ HDFS = $(SBIN)/condor_hdfs
+ SHARED_PORT = $(LIBEXEC)/condor_shared_port
+ TRANSFERER = $(LIBEXEC)/condor_transferer
+ DEFRAG = $(LIBEXEC)/condor_defrag
++TRIGGERD = $(sbin)/condor_triggerd
+
+ ## When the master starts up, it can place it's address (IP and port)
+ ## into a file. This way, tools running on the local machine don't
+@@ -1178,11 +1225,13 @@ PREEN_ARGS = -m -r
+ ##--------------------------------------------------------------------
+ ## Address to which Condor will send a weekly e-mail with output of
+ ## condor_status.
+-#CONDOR_DEVELOPERS = condor-admin@cs.wisc.edu
++## Default is condor-admin@cs.wisc.edu
++CONDOR_DEVELOPERS = NONE
+
+ ## Global Collector to periodically advertise basic information about
+ ## your pool.
+-#CONDOR_DEVELOPERS_COLLECTOR = condor.cs.wisc.edu
++## Default is condor.cs.wisc.edu
++CONDOR_DEVELOPERS_COLLECTOR = NONE
+
+ ## When the collector starts up, it can place it's address (IP and port)
+ ## into a file. This way, tools running on the local machine don't
+@@ -1199,6 +1248,7 @@ COLLECTOR_ADDRESS_FILE = $(LOG)/.collector_address
+ ## Determine if the Negotiator will honor SlotWeight attributes, which
+ ## may be used to give a slot greater weight when calculating usage.
+ #NEGOTIATOR_USE_SLOT_WEIGHTS = True
++NEGOTIATOR_USE_SLOT_WEIGHTS = True
+
+
+ ## How often the Negotaitor starts a negotiation cycle, defined in
+@@ -1668,7 +1718,7 @@ QUEUE_SUPER_USERS = root, condor
+ ## Such as when when Condor is running as a service.
+ ## /s is delete subdirectories
+ ## /c is continue on error
+-WINDOWS_RMDIR = $(SBIN)\condor_rmdir.exe
++#WINDOWS_RMDIR = $(SBIN)\condor_rmdir.exe
+ #WINDOWS_RMDIR_OPTIONS = /s /c
+
+ ##--------------------------------------------------------------------
+@@ -1689,13 +1739,15 @@ PROCD = $(SBIN)/condor_procd
+ # UNIX); the name will be something like:
+ # \\.\pipe\condor_procd
+ #
+-PROCD_ADDRESS = $(LOCK)/procd_pipe
++PROCD_ADDRESS = $(RUN)/procd_pipe
+
+-# Note that in other Condor daemons, turning on D_PROCFAMILY will
+-# result in that daemon logging all of its interactions with the
+-# ProcD.
++# The procd currently uses a very simplistic logging system. Since this
++# log will not be rotated like other Condor logs, it is only recommended
++# to set PROCD_LOG when attempting to debug a problem. In other Condor
++# daemons, turning on D_PROCFAMILY will result in that daemon logging
++# all of its interactions with the ProcD.
+ #
+-PROCD_LOG = $(LOG)/ProcLog
++#PROCD_LOG = $(LOG)/ProcLog
+
+ # This is the maximum period that the procd will use for taking
+ # snapshots (the actual period may be lower if a condor daemon registers
+@@ -1788,7 +1840,7 @@ JAVA = /usr/bin/java
+ ## them here. However, do not remove the existing entries, as Condor
+ ## needs them.
+
+-JAVA_CLASSPATH_DEFAULT = $(LIB) $(LIB)/scimark2lib.jar .
++JAVA_CLASSPATH_DEFAULT = $(SHARE) $(SHARE)/scimark2lib.jar .
+
+ ## JAVA_CLASSPATH_ARGUMENT describes the command-line parameter
+ ## used to introduce a new classpath:
+@@ -2458,7 +2510,7 @@ KBDD_ADDRESS_FILE = $(LOG)/.kbdd_address
+ #SSH_TO_JOB_SSHD_ARGS = "-i -e -f %f"
+
+ # sshd configuration template used by condor_ssh_to_job_sshd_setup.
+-#SSH_TO_JOB_SSHD_CONFIG_TEMPLATE = $(LIB)/condor_ssh_to_job_sshd_config_template
++SSH_TO_JOB_SSHD_CONFIG_TEMPLATE = $(ETC)/condor_ssh_to_job_sshd_config_template
+
+ # Path to ssh-keygen
+ #SSH_TO_JOB_SSH_KEYGEN = /usr/bin/ssh-keygen
diff --git a/sys-cluster/htcondor/htcondor-8.0.0.ebuild b/sys-cluster/htcondor/htcondor-8.0.0.ebuild
index 9b1f4abfd..4a1585a61 100644
--- a/sys-cluster/htcondor/htcondor-8.0.0.ebuild
+++ b/sys-cluster/htcondor/htcondor-8.0.0.ebuild
@@ -54,6 +54,8 @@ pkg_setup() {
src_prepare() {
epatch "${FILESDIR}/condor_shadow_dlopen-${PV}.patch" \
+ "${FILESDIR}/condor_config.generic.patch" \
+ "${FILESDIR}/0001-Apply-the-user-s-condor_config-last-rather-than-firs.patch" \
"${FILESDIR}/packaging_directories-${PV}.patch" \
"${FILESDIR}/fix_sandbox_violations-${PV}.patch"
cmake-utils_src_prepare