diff --git a/configure.ac b/configure.ac index c468b9348d6cd71c200316c8157e6453fe321974..a07bfee9a5ba101e6ccecd5165bc6d8a3b0249c0 100644 --- a/configure.ac +++ b/configure.ac @@ -47,7 +47,8 @@ dnl Checks for header files. dnl AC_CHECK_HEADERS(popt.h mcheck.h values.h socket.h sys/socket.h \ stdbool.h sys/ipc.h sys/shm.h sys/sem.h errno.h \ - stdlib.h ) + stdlib.h \ + ) AC_HEADER_SYS_WAIT AC_HEADER_TIME AC_HEADER_STDC @@ -74,7 +75,12 @@ fi dnl Checks for types. dnl - +AC_C_BIGENDIAN +if test "x$ac_cv_c_bigendian" = "xyes"; then + AC_DEFINE(SLURM_BIGENDIAN,1, + [Define if your architecture's byteorder is big endian.]) +fi + dnl Checks for compiler characteristics. dnl @@ -91,8 +97,9 @@ dnl AC_SEARCH_LIBS([pthread_create], [pthread c_r cr], [], dnl [AC_MSG_ERROR([Error: Cannot find the pthread library])]) ACX_PTHREAD([], AC_MSG_ERROR([Error: Cannot figure out how to use pthreads!])) -AC_DEFINE_UNQUOTED(WITH_PTHREADS, $HAVE_PTHREAD, [Define if you have pthreads]) -AC_SUBST(WITH_PTHREADS) + +# Always define WITH_PTHREADS if we make it this far +AC_DEFINE(WITH_PTHREADS,1,[Define if you have pthreads.]) LDFLAGS="$LDFLAGS " CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" @@ -113,7 +120,7 @@ AC_CHECK_LIB(popt, poptGetNextOpt, [got_popt=yes], [got_popt=no]) AM_CONDITIONAL(USE_INCLUDED_POPT, test $got_popt = no) if test $got_popt = no; then AC_MSG_RESULT([using included popt package...]) - POPT_LIBS="\$(top_srcdir)/src/popt/libpopt.a" + POPT_LIBS="\$(top_builddir)/src/popt/libpopt.a" POPT_INCLUDES="-I\$(top_srcdir)/src/popt" else POPT_LIBS="-lpopt" @@ -372,8 +379,6 @@ fi AM_CONDITIONAL(WITH_AUTHD, test "x$with_authd" = "xyes") - - dnl All slurm Makefiles: dnl need to add squeue and scancel when they're there diff --git a/etc/slurm.conf b/etc/slurm.conf index f06e5cc221990d0115789c98250acc6e4e983eac..0cc19f314ab4c1c8f77f44634decc4221c3fa49d 100644 --- a/etc/slurm.conf +++ b/etc/slurm.conf @@ -1,17 +1,19 @@ # -# Sample /etc/slurm.conf +# Sample /etc/slurm.conf.localhost # Author: John Doe # Date: 11/06/2001 +# Note: "localhost" is translated by slurmctld to the actual hostname # ControlMachine=localhost BackupController=localhost Epilog="" Prolog="" FastSchedule=1 FirstJobId=65536 HashBase=10 -HeartbeatInterval=60 +HeartbeatInterval=10 InactiveLimit=120 -KillWait=30 +KillWait=5 Prioritize=/usr/local/maui/priority +ReturnToService=1 SlurmctldPort=7002 SlurmdPort=7003 SlurmctldTimeout=300 SlurmdTimeout=300 StateSaveLocation=/tmp/slurm.state @@ -21,15 +23,10 @@ JobCredentialPublicCertificate=public.cert # # Node Configurations # -NodeName=DEFAULT TmpDisk=16384 State=UNKNOWN -NodeName=lx[0001-0002] State=DRAINED -NodeName=lx[0003-8000] Procs=16 RealMemory=2048 Weight=16 -NodeName=lx[8001-9999] Procs=32 RealMemory=4096 Weight=40 Feature=1200MHz +NodeName=DEFAULT TmpDisk=2 State=UNKNOWN +NodeName=localhost Procs=16 RealMemory=1 Weight=16 # # Partition Configurations # -PartitionName=DEFAULT MaxTime=30 MaxNodes=2 -PartitionName=login Nodes=lx[0001-0002] State=DOWN -PartitionName=debug Nodes=lx[0003-0030] State=UP Default=YES -PartitionName=class Nodes=lx[0031-0040] AllowGroups=students -PartitionName=batch Nodes=lx[0041-9999] MaxTime=UNLIMITED MaxNodes=4096 RootOnly=YES +PartitionName=DEFAULT MaxTime=30 MaxNodes=1 +PartitionName=debug Nodes=localhost State=UP Default=YES diff --git a/src/api/Makefile.am b/src/api/Makefile.am index 739c16e52d16654bb4cd43cd97c0f6b86f175444..48132395253a1185a3d8f7d3a402e3bc3a441f95 100644 --- a/src/api/Makefile.am +++ b/src/api/Makefile.am @@ -6,19 +6,7 @@ AUTOMAKE_OPTIONS = foreign EXTRA_DIST = slurm.h libslurm.sym -INCLUDES = -I$(top_srcdir)/src/common - -# should we build individual modules? -# (--enable-debug) -# -if DEBUG_MODULES -test_modules = allocate config_info cancel job_info node_info partition_info reconfigure submit update_config -else -test_modules = -endif - -# link to libslurm (for test modules): -LDADD = -lslurm +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common lib_LTLIBRARIES = libslurm.la @@ -28,26 +16,21 @@ libslurm_la_SOURCES = \ complete.c \ config_info.c \ job_info.c \ - job_step_info.c \ + job_step_info.c \ node_info.c \ partition_info.c \ submit.c \ reconfigure.c \ update_config.c -common_dir = $(top_srcdir)/src/common +include_HEADERS = \ + slurm.h -#libslurm_la_LIBADD = \ -# $(common_dir)/pack.lo \ -# $(common_dir)/xmalloc.lo \ -# $(common_dir)/log.lo \ -# $(common_dir)/safeopen.lo \ -# $(common_dir)/xassert.c \ -# $(common_dir)/xstring.lo +common_dir = $(top_builddir)/src/common libslurm_la_LIBADD = $(common_dir)/libcommon.la -libslurm_la_LDFLAGS = -export-symbols libslurm.sym -libslurm_la_DEPENDENCIES = libslurm.sym $(libslurm_la_LIBADD) +libslurm_la_LDFLAGS = -export-symbols $(srcdir)/libslurm.sym +libslurm_la_DEPENDENCIES = $(srcdir)/libslurm.sym $(libslurm_la_LIBADD) # hack to allow building .lo objects from other directories @@ -58,43 +41,3 @@ libslurm_la_DEPENDENCIES = libslurm.sym $(libslurm_la_LIBADD) #$(filter %.la, $(libslurm_la_LIBADD)) : %.la : # cd `echo $@|sed 's#/[^/]*\$$##'` && $(MAKE) `echo $@|sed 's#.*/##'` - -# target specific CFLAGS do not work until automake 1.5, use explicit rules -# for now. If we ever move to 1.5, the CFLAGS defs below should work in -# place of the rules that follow. - -#allocate_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#config_info_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#cancel_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#job_info_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#node_info_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#partition_info_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#reconfigure_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#submit_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) -#update_confige_CFLAGS = -DDEBUG_MODULE $(AM_CFLAGS) - -# debug modules to built as binaries: -# -# need to create a rule to build each binary from an object file with _d suffix -# as these will have been compiled with -DDEBUG_MODULE -# -# Note: automake 1.5 will complain about these... -# - -maintests : allocate cancel job_info node_info partition_info reconfigure submit update_config - -allocate : allocate_d.o -config_info : config_info_d.o -cancel : cancel_d.o -job_info : job_info_d.o -node_info : node_info_d.o -partition_info : partition_info_d.o -reconfigure : reconfigure_d.o -submit : submit_d.o -update_config : update_config_d.o - -% : %_d.o - $(LINK) $(LDFLAGS) $^ $(LDADD) $(LIBS) - -%_d.o : %.c - $(COMPILE) -DDEBUG_MODULE -c -o $@ $< diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 2fefcfff4f022f47d851177defcff3d5449aac8e..743731abdee69eb4a6897e7312bb8f2bf066cfe5 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -2,12 +2,7 @@ AUTOMAKE_OPTIONS = foreign -# -if DEBUG_MODULES -test_modules = bits_bytes bitstring -else -test_modules = -endif +INCLUDES = -I$(top_srcdir) $(SSL_CPPFLAGS) if WITH_ELAN elan_sources = qsw.c @@ -23,7 +18,6 @@ endif noinst_LTLIBRARIES = libcommon.la libdaemonize.la libcred.la -CPPFLAGS = $(SSL_CPPFLAGS) libcommon_la_SOURCES = \ xmalloc.c \ @@ -60,12 +54,14 @@ noinst_HEADERS = \ log.h \ eio.h \ cbuf.h \ + fd.h \ safeopen.h \ strlcpy.h \ bitstring.h \ pack.h \ hostlist.h \ parse_spec.h \ + slurm_auth.h \ slurm_protocol_api.h \ slurm_protocol_pack.h \ slurm_protocol_util.h \ @@ -78,13 +74,16 @@ noinst_HEADERS = \ qsw.h libdaemonize_la_SOURCES = \ - daemonize.c + daemonize.c \ + daemonize.h libcred_la_SOURCES = \ credential_utils.c \ - signature_utils.c + credential_utils.h \ + signature_utils.c \ + signature_utils.h EXTRA_libcommon_la_SOURCES = \ qsw.c -libcommon_la_LIBADD = $(AUTHD_LIBS) $(SSL_LIBS) -libcred_la_LIBADD = $(SSL_LIBS) -libcred_la_LDFLAGS = $(SSL_LDFLAGS) +libcommon_la_LIBADD = $(AUTHD_LIBS) $(SSL_LIBS) +libcred_la_LIBADD = $(SSL_LIBS) +libcred_la_LDFLAGS = $(SSL_LDFLAGS) diff --git a/src/common/macros.h b/src/common/macros.h index 6d4dd4818a8046b49e4249803b352c51820eae69..1bda57d7d83e9b410e2aba41eb0814e90a73c80d 100644 --- a/src/common/macros.h +++ b/src/common/macros.h @@ -31,6 +31,38 @@ typedef enum {false, true} bool; #define MAX(a,b) ((a) > (b) ? (a) : (b)) #endif +# define UINT64_SWAP_LE_BE(val) ((uint64_t) ( \ + (((uint64_t) (val) & \ + (uint64_t) (0x00000000000000ffU)) << 56) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x000000000000ff00U)) << 40) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x0000000000ff0000U)) << 24) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x00000000ff000000U)) << 8) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x000000ff00000000U)) >> 8) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x0000ff0000000000U)) >> 24) | \ + (((uint64_t) (val) & \ + (uint64_t) (0x00ff000000000000U)) >> 40) | \ + (((uint64_t) (val) & \ + (uint64_t) (0xff00000000000000U)) >> 56))) + +#if SLURM_BIGENDIAN +# define HTON_int64(x) ((int64_t) (x)) +# define NTOH_int64(x) ((int64_t) (x)) +# define HTON_uint64(x) ((uint64_t) (x)) +# define NTOH_uint64(x) ((uint64_t) (x)) +#else +# define HTON_int64(x) ((int64_t) UINT64_SWAP_LE_BE (x)) +# define NTOH_int64(x) ((int64_t) UINT64_SWAP_LE_BE (x)) +# define HTON_uint64(x) UINT64_SWAP_LE_BE (x) +# define NTOH_uint64(x) UINT64_SWAP_LE_BE (x) +#endif /* SLURM_BIGENDIAN */ + + + /* ** define __CURRENT_FUNC__ macro for returning current function */ diff --git a/src/common/pack.c b/src/common/pack.c index 697528a142430f1a817c30db4b4fe737c4ddb298..373fda15c812b2229f5bea23cbf8cda472c67231 100644 --- a/src/common/pack.c +++ b/src/common/pack.c @@ -4,7 +4,8 @@ ***************************************************************************** * Copyright (C) 2002 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). - * Written by Kevin Tew <tew1@llnl.gov>, Moe Jette <jette1@llnl.gov>, et. al. + * Written by Jim Garlick <garlick@llnl.gov>, + * Moe Jette <jette1@llnl.gov>, et. al. * UCRL-CODE-2002-040. * * This file is part of SLURM, a resource management program. @@ -26,29 +27,31 @@ \****************************************************************************/ #if HAVE_CONFIG_H -# include <config.h> +# include <config.h> #endif #include <stdlib.h> #include <errno.h> #include <netinet/in.h> #include <string.h> +#include <time.h> +#include <inttypes.h> #include <src/common/pack.h> -#include <src/common/xmalloc.h> +#include <src/common/xmalloc.h> +#include <src/common/macros.h> #define BUF_SIZE 4096 /* Basic buffer management routines */ /* create_buf - create a buffer with the supplied contents, contents must be xalloc'ed */ -Buf -create_buf (char *data, int size) +Buf create_buf(char *data, int size) { Buf my_buf; - my_buf = xmalloc (sizeof (struct slurm_buf)); - my_buf->magic = BUF_MAGIC; - my_buf->size = size; + my_buf = xmalloc(sizeof(struct slurm_buf)); + my_buf->magic = BUF_MAGIC; + my_buf->size = size; my_buf->processed = 0; my_buf->head = data; @@ -56,55 +59,79 @@ create_buf (char *data, int size) } /* free_buf - release memory associated with a given buffer */ -void -free_buf (Buf my_buf) +void free_buf(Buf my_buf) { - assert (my_buf->magic == BUF_MAGIC); + assert(my_buf->magic == BUF_MAGIC); if (my_buf->head) - xfree (my_buf->head); - xfree (my_buf); + xfree(my_buf->head); + xfree(my_buf); } /* init_buf - create an empty buffer of the given size */ -Buf -init_buf (int size) +Buf init_buf(int size) { Buf my_buf; - my_buf = xmalloc (sizeof (struct slurm_buf)); - my_buf->magic = BUF_MAGIC; - my_buf->size = size; + my_buf = xmalloc(sizeof(struct slurm_buf)); + my_buf->magic = BUF_MAGIC; + my_buf->size = size; my_buf->processed = 0; - my_buf->head = xmalloc (size); + my_buf->head = xmalloc(size); return my_buf; } /* xfer_buf_data - return a pointer to the buffer's data and release the buffer's structure */ -void * -xfer_buf_data(Buf my_buf) +void *xfer_buf_data(Buf my_buf) { void *data_ptr; - assert (my_buf->magic == BUF_MAGIC); + assert(my_buf->magic == BUF_MAGIC); data_ptr = (void *) my_buf->head; - xfree (my_buf); + xfree(my_buf); return data_ptr; } +/* + * Given a time_t in host byte order, promote it to int64_t, convert to + * network byte order, store in buffer and adjust buffer acc'd'ngly + */ +void +pack_time(time_t val, Buf buffer) +{ + int64_t n64 = HTON_int64((int64_t) val); + + if (remaining_buf(buffer) < sizeof(n64)) { + buffer->size += BUF_SIZE; + xrealloc(buffer->head, buffer->size); + } + + memcpy(&buffer->head[buffer->processed], &n64, sizeof(n64)); + buffer->processed += sizeof(n64); +} + +void +unpack_time(time_t * valp, Buf buffer) +{ + int64_t n64; + assert(remaining_buf(buffer) >= sizeof(n64)); + memcpy(&n64, &buffer->head[buffer->processed], sizeof(n64)); + buffer->processed += sizeof(n64); + *valp = (time_t) NTOH_int64(n64); +} + /* * Given a 32-bit integer in host byte order, convert to network byte order * store in buffer, and adjust buffer counters. */ -void -_pack32(uint32_t val, Buf buffer) +void _pack32(uint32_t val, Buf buffer) { uint32_t nl = htonl(val); if (remaining_buf(buffer) < sizeof(nl)) { buffer->size += BUF_SIZE; - xrealloc (buffer->head, buffer->size); + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], &nl, sizeof(nl)); @@ -115,11 +142,10 @@ _pack32(uint32_t val, Buf buffer) * Given a buffer containing a network byte order 32-bit integer, * store a host integer at 'valp', and adjust buffer counters. */ -void -_unpack32(uint32_t *valp, Buf buffer) +void _unpack32(uint32_t * valp, Buf buffer) { uint32_t nl; - assert (remaining_buf(buffer) >= sizeof(nl)); + assert(remaining_buf(buffer) >= sizeof(nl)); memcpy(&nl, &buffer->head[buffer->processed], sizeof(nl)); *valp = ntohl(nl); @@ -127,45 +153,42 @@ _unpack32(uint32_t *valp, Buf buffer) } /* Given a *uint32_t, it will pack an array of size_val */ -void -_pack32array(uint32_t *valp, uint16_t size_val, Buf buffer) +void _pack32array(uint32_t * valp, uint16_t size_val, Buf buffer) { - int i=0; + int i = 0; - _pack16( size_val, buffer ); + _pack16(size_val, buffer); - for ( i=0; i < size_val; i++ ) { - _pack32( *(valp + i ), buffer ); + for (i = 0; i < size_val; i++) { + _pack32(*(valp + i), buffer); } } /* Given a int ptr, it will unpack an array of size_val */ -void -_unpack32array( uint32_t **valp, uint16_t* size_val, Buf buffer) +void _unpack32array(uint32_t ** valp, uint16_t * size_val, Buf buffer) { - int i=0; + int i = 0; - _unpack16( size_val, buffer ); - *valp = xmalloc( (*size_val) * sizeof( uint32_t ) ); + _unpack16(size_val, buffer); + *valp = xmalloc((*size_val) * sizeof(uint32_t)); - for ( i=0; i < *size_val; i++ ) { - _unpack32( (*valp) + i , buffer ); + for (i = 0; i < *size_val; i++) { + _unpack32((*valp) + i, buffer); } -} +} /* * Given a 16-bit integer in host byte order, convert to network byte order, * store in buffer and adjust buffer counters. */ -void -_pack16(uint16_t val, Buf buffer) +void _pack16(uint16_t val, Buf buffer) { uint16_t ns = htons(val); if (remaining_buf(buffer) < sizeof(ns)) { buffer->size += BUF_SIZE; - xrealloc (buffer->head, buffer->size); + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns)); @@ -176,11 +199,10 @@ _pack16(uint16_t val, Buf buffer) * Given a buffer containing a network byte order 16-bit integer, * store a host integer at 'valp', and adjust buffer counters. */ -void -_unpack16(uint16_t *valp, Buf buffer) +void _unpack16(uint16_t * valp, Buf buffer) { uint16_t ns; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *valp = ntohs(ns); @@ -191,12 +213,11 @@ _unpack16(uint16_t *valp, Buf buffer) * Given a 8-bit integer in host byte order, convert to network byte order * store in buffer, and adjust buffer counters. */ -void -_pack8(uint8_t val, Buf buffer) +void _pack8(uint8_t val, Buf buffer) { if (remaining_buf(buffer) < sizeof(uint8_t)) { buffer->size += BUF_SIZE; - xrealloc (buffer->head, buffer->size); + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], &val, sizeof(uint8_t)); @@ -207,10 +228,9 @@ _pack8(uint8_t val, Buf buffer) * Given a buffer containing a network byte order 8-bit integer, * store a host integer at 'valp', and adjust buffer counters. */ -void -_unpack8(uint8_t *valp, Buf buffer) +void _unpack8(uint8_t * valp, Buf buffer) { - assert (remaining_buf(buffer) >= sizeof(uint8_t)); + assert(remaining_buf(buffer) >= sizeof(uint8_t)); memcpy(valp, &buffer->head[buffer->processed], sizeof(uint8_t)); buffer->processed += sizeof(uint8_t); @@ -221,14 +241,13 @@ _unpack8(uint8_t *valp, Buf buffer) * size_val to network byte order and store at buffer followed by * the data at valp. Adjust buffer counters. */ -void -_packmem(char *valp, uint16_t size_val, Buf buffer) +void _packmem(char *valp, uint16_t size_val, Buf buffer) { uint16_t ns = htons(size_val); - if (remaining_buf(buffer) < (sizeof(ns)+size_val)) { - buffer->size += (size_val + BUF_SIZE); - xrealloc (buffer->head, buffer->size); + if (remaining_buf(buffer) < (sizeof(ns) + size_val)) { + buffer->size += (size_val + BUF_SIZE); + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns)); @@ -249,27 +268,25 @@ _packmem(char *valp, uint16_t size_val, Buf buffer) * NOTE: valp is set to point into the buffer bufp, a copy of * the data is not made */ -void -_unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer) +void _unpackmem_ptr(char **valp, uint16_t * size_valp, Buf buffer) { uint16_t ns; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *size_valp = ntohs(ns); buffer->processed += sizeof(ns); if (*size_valp > 0) { - assert (remaining_buf(buffer) >= *size_valp); + assert(remaining_buf(buffer) >= *size_valp); *valp = &buffer->head[buffer->processed]; buffer->processed += *size_valp; - } - else + } else *valp = NULL; } - + /* * Given a buffer containing a network byte order 16-bit integer, @@ -279,23 +296,21 @@ _unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer) * NOTE: The caller is responsible for the management of valp and * insuring it has sufficient size */ -void -_unpackmem(char *valp, uint16_t *size_valp, Buf buffer) +void _unpackmem(char *valp, uint16_t * size_valp, Buf buffer) { uint16_t ns; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *size_valp = ntohs(ns); buffer->processed += sizeof(ns); if (*size_valp > 0) { - assert (remaining_buf(buffer) >= *size_valp); - memcpy ( valp, &buffer->head[buffer->processed], *size_valp); + assert(remaining_buf(buffer) >= *size_valp); + memcpy(valp, &buffer->head[buffer->processed], *size_valp); buffer->processed += *size_valp; - } - else + } else *valp = 0; } @@ -308,24 +323,23 @@ _unpackmem(char *valp, uint16_t *size_valp, Buf buffer) * the caller is responsible for calling xfree() on *valp * if non-NULL (set to NULL on zero size buffer value) */ -void -_unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer) +void _unpackmem_xmalloc(char **valp, uint16_t * size_valp, Buf buffer) { uint16_t ns; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *size_valp = ntohs(ns); buffer->processed += sizeof(ns); if (*size_valp > 0) { - assert (remaining_buf(buffer) >= *size_valp); + assert(remaining_buf(buffer) >= *size_valp); *valp = xmalloc(*size_valp); - memcpy (*valp, &buffer->head[buffer->processed], *size_valp); + memcpy(*valp, &buffer->head[buffer->processed], + *size_valp); buffer->processed += *size_valp; - } - else + } else *valp = NULL; } @@ -339,24 +353,23 @@ _unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer) * the caller is responsible for calling free() on *valp * if non-NULL (set to NULL on zero size buffer value) */ -void -_unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer) +void _unpackmem_malloc(char **valp, uint16_t * size_valp, Buf buffer) { uint16_t ns; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *size_valp = ntohs(ns); buffer->processed += sizeof(ns); if (*size_valp > 0) { - assert (remaining_buf(buffer) >= *size_valp); + assert(remaining_buf(buffer) >= *size_valp); *valp = malloc(*size_valp); - memcpy (*valp, &buffer->head[buffer->processed], *size_valp); + memcpy(*valp, &buffer->head[buffer->processed], + *size_valp); buffer->processed += *size_valp; - } - else + } else *valp = NULL; } @@ -366,23 +379,21 @@ _unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer) * convert size_val to network byte order and store in the buffer followed by * the data at valp. Adjust buffer counters. */ -void -_packstrarray(char **valp, uint16_t size_val, Buf buffer) +void _packstrarray(char **valp, uint16_t size_val, Buf buffer) { - int i ; + int i; uint16_t ns = htons(size_val); if (remaining_buf(buffer) < sizeof(ns)) { - buffer->size += BUF_SIZE; - xrealloc (buffer->head, buffer->size); + buffer->size += BUF_SIZE; + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns)); buffer->processed += sizeof(ns); - for ( i = 0 ; i < size_val ; i ++ ) - { - packstr(valp[i],buffer) ; + for (i = 0; i < size_val; i++) { + packstr(valp[i], buffer); } } @@ -395,29 +406,27 @@ _packstrarray(char **valp, uint16_t size_val, Buf buffer) * the caller is responsible for calling xfree on *valp * if non-NULL (set to NULL on zero size buffer value) */ -void -_unpackstrarray (char ***valp, uint16_t *size_valp, Buf buffer) +void _unpackstrarray(char ***valp, uint16_t * size_valp, Buf buffer) { - int i ; + int i; uint16_t ns; uint16_t uint16_tmp; - assert (remaining_buf(buffer) >= sizeof(ns)); + assert(remaining_buf(buffer) >= sizeof(ns)); memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns)); *size_valp = ntohs(ns); buffer->processed += sizeof(ns); if (*size_valp > 0) { - *valp = xmalloc(sizeof ( char * ) * ( *size_valp + 1 ) ) ; - for ( i = 0 ; i < *size_valp ; i ++ ) - { - unpackstr_xmalloc ( & (*valp)[i] , & uint16_tmp , buffer ) ; + *valp = xmalloc(sizeof(char *) * (*size_valp + 1)); + for (i = 0; i < *size_valp; i++) { + unpackstr_xmalloc(&(*valp)[i], &uint16_tmp, + buffer); } - (*valp)[i] = NULL ; /* NULL terminated array so that execle */ - /* can detect end of array */ - } - else + (*valp)[i] = NULL; /* NULL terminated array so that execle */ + /* can detect end of array */ + } else *valp = NULL; } @@ -426,12 +435,11 @@ _unpackstrarray (char ***valp, uint16_t *size_valp, Buf buffer) * Given a pointer to memory (valp), size (size_val), and buffer, * store the memory contents into the buffer */ -void -_packmem_array(char *valp, uint32_t size_val, Buf buffer) +void _packmem_array(char *valp, uint32_t size_val, Buf buffer) { if (remaining_buf(buffer) < size_val) { - buffer->size += (size_val + BUF_SIZE); - xrealloc (buffer->head, buffer->size); + buffer->size += (size_val + BUF_SIZE); + xrealloc(buffer->head, buffer->size); } memcpy(&buffer->head[buffer->processed], valp, size_val); @@ -442,13 +450,11 @@ _packmem_array(char *valp, uint32_t size_val, Buf buffer) * Given a pointer to memory (valp), size (size_val), and buffer, * store the buffer contents into memory */ -void -_unpackmem_array(char *valp, uint32_t size_valp, Buf buffer) +void _unpackmem_array(char *valp, uint32_t size_valp, Buf buffer) { if (remaining_buf(buffer) >= size_valp) { - memcpy ( valp, &buffer->head[buffer->processed], size_valp); + memcpy(valp, &buffer->head[buffer->processed], size_valp); buffer->processed += size_valp; - } - else - *valp = 0 ; + } else + *valp = 0; } diff --git a/src/common/pack.h b/src/common/pack.h index e75bfca9f8e3152f084711fadfa1d29b82bfe1b3..b708e9cb16b6ad9d2b2e78646c75012363f3deae 100644 --- a/src/common/pack.h +++ b/src/common/pack.h @@ -41,6 +41,8 @@ #include <stdint.h> #endif /* HAVE_CONFIG_H */ +#include <time.h> + #include <assert.h> #define BUF_MAGIC 0x42554545 @@ -89,11 +91,8 @@ void _unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer); void _unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer); void _unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer); -/* FIXME for IA64 */ -#define pack_time(val,buf) \ - pack32((uint32_t)val,buf) -#define unpack_time(val,buf) \ - unpack32((uint32_t *)val,buf) +void pack_time(time_t val, Buf buffer); +void unpack_time(time_t *valp, Buf buffer); #define pack32(val,buf) do { \ assert(sizeof(val) == sizeof(uint32_t)); \ diff --git a/src/common/slurm_auth_authd.c b/src/common/slurm_auth_authd.c index 2f04612f03fa75d8354fde987853ba21615eb5cc..35af3cc6fd38b1ec2770d7a44effacd90a55cd69 100644 --- a/src/common/slurm_auth_authd.c +++ b/src/common/slurm_auth_authd.c @@ -165,11 +165,11 @@ void slurm_auth_pack_credentials( slurm_auth_t cred, Buf buffer) { uint16_t chunk_size = sizeof( signature ); - pack32( cred->creds.uid, buffer ); - pack32( cred->creds.gid, buffer ); - pack32( cred->creds.valid_from, buffer ); - pack32( cred->creds.valid_to, buffer ); - packmem( cred->sig.data, chunk_size, buffer ); + pack32 ( cred->creds.uid, buffer ); + pack32 ( cred->creds.gid, buffer ); + pack_time( cred->creds.valid_from, buffer ); + pack_time( cred->creds.valid_to, buffer ); + packmem ( cred->sig.data, chunk_size, buffer ); } @@ -180,11 +180,11 @@ void slurm_auth_unpack_credentials( slurm_auth_t *credp, Buf buffer) slurm_auth_t cred; cred = slurm_auth_alloc_credentials(); - unpack32( &cred->creds.uid, buffer ); - unpack32( &cred->creds.gid, buffer ); - unpack32( (uint32_t *) &cred->creds.valid_from, buffer ); - unpack32( (uint32_t *) &cred->creds.valid_to, buffer ); - unpackmem_ptr( &data, &dummy, buffer ); + unpack32 ( &cred->creds.uid, buffer ); + unpack32 ( &cred->creds.gid, buffer ); + unpack_time ( &cred->creds.valid_from, buffer ); + unpack_time ( &cred->creds.valid_to, buffer ); + unpackmem_ptr( &data, &dummy, buffer ); memcpy( cred->sig.data, data, sizeof( signature ) ); *credp = cred; return; diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index d96cdb918685d9e9f6e3cf167d2bffb782ec8749..38d241ee89d37a9ef1c69c0ca6ad6162bd9d28ee 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -280,7 +280,7 @@ typedef struct job_descriptor { /* Job descriptor for submit, allocate, and upda } job_descriptor_t; typedef struct job_step_id { - uint32_t last_update; + time_t last_update; uint32_t job_id; uint32_t job_step_id; } job_step_id_t; @@ -343,7 +343,7 @@ typedef struct partition_info { *****************************************************************************/ struct slurm_ctl_conf { - uint32_t last_update; /* last update time of the build parameters */ + time_t last_update; /* last update time of the build parameters */ char *backup_addr; /* comm path of slurmctld secondary server */ char *backup_controller; /* name of slurmctld secondary server */ char *control_addr; /* comm path of slurmctld primary server */ @@ -394,7 +394,7 @@ typedef struct job_step_create_response_msg { typedef struct job_step_specs job_step_create_request_msg_t; typedef struct job_step_info_response_msg { - uint32_t last_update; + time_t last_update; uint32_t job_step_count; job_step_info_t *job_steps; } job_step_info_response_msg_t; @@ -403,13 +403,13 @@ typedef struct job_step_id job_step_id_msg_t; typedef struct job_step_id job_info_request_msg_t; typedef struct job_step_info_request_msg { - uint32_t last_update; + time_t last_update; uint32_t job_id; uint32_t step_id; } job_step_info_request_msg_t; typedef struct job_info_msg { - uint32_t last_update; + time_t last_update; uint32_t record_count; job_info_t *job_array; } job_info_msg_t; @@ -426,7 +426,7 @@ typedef struct shutdown_msg { } shutdown_msg_t; typedef struct last_update_msg { - uint32_t last_update; + time_t last_update; } last_update_msg_t; typedef struct launch_tasks_request_msg { @@ -465,13 +465,13 @@ typedef struct task_ext_msg { } task_exit_msg_t; typedef struct node_info_msg { - uint32_t last_update; + time_t last_update; uint32_t record_count; node_info_t *node_array; } node_info_msg_t; typedef struct partition_info_msg { - uint32_t last_update; + time_t last_update; uint32_t record_count; partition_info_t *partition_array; } partition_info_msg_t; diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 862f08eb87f104360f2f61423c13b71f6fbf9e49..904c9e5c7f38e72d4820464c0e9df0ca0acea08c 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -979,7 +979,7 @@ int unpack_job_step_info_members ( job_step_info_t * step , Buf buffer ) unpack32 (&step->job_id, buffer); unpack16 (&step->step_id, buffer); unpack32 (&step->user_id, buffer); - unpack_time ((uint32_t*)&step->start_time, buffer); + unpack_time (&step->start_time, buffer); unpackstr_xmalloc (&step->partition, &uint16_tmp, buffer); unpackstr_xmalloc (&step->nodes, &uint16_tmp, buffer); diff --git a/src/scancel/Makefile.am b/src/scancel/Makefile.am index 9c838680f5bd58003ddb90e17171c3a89fa08efc..df6d8ec7903b0035daee7db4e602a8cc3ebec603 100644 --- a/src/scancel/Makefile.am +++ b/src/scancel/Makefile.am @@ -2,11 +2,13 @@ AUTOMAKE_OPTIONS = foreign -INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api bin_PROGRAMS = scancel -LDADD = $(top_srcdir)/src/common/libcommon.la $(top_srcdir)/src/api/libslurm.la +LDADD = \ + $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la scancel_SOURCES = scancel.c diff --git a/src/scontrol/Makefile.am b/src/scontrol/Makefile.am index 364cf7218771df4786d191506553da0ad0b1f8e9..35e1d3bd4458b1bacee9a6edcd712d721363f0f9 100644 --- a/src/scontrol/Makefile.am +++ b/src/scontrol/Makefile.am @@ -2,11 +2,13 @@ AUTOMAKE_OPTIONS = foreign -INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api bin_PROGRAMS = scontrol -LDADD = $(top_srcdir)/src/common/libcommon.la $(top_srcdir)/src/api/libslurm.la +LDADD = \ + $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la LIBS = -lpthread -ltermcap -lreadline diff --git a/src/sinfo/Makefile.am b/src/sinfo/Makefile.am index 29a440fd0c01f0b14a51263f8d449eb8bfdcabf6..c3d43a396e9a3101cc736c06b0c5cfff0c31aaa4 100644 --- a/src/sinfo/Makefile.am +++ b/src/sinfo/Makefile.am @@ -2,12 +2,11 @@ AUTOMAKE_OPTIONS = foreign -INCLUDES = $(POPT_INCLUDES) -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api - +INCLUDES = $(POPT_INCLUDES) -I$(top_srcdir) -I$(top_srcdir)/src/api bin_PROGRAMS = sinfo -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la \ +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la \ $(POPT_LIBS) noinst_HEADERS = sinfo.h diff --git a/src/slurmctld/Makefile.am b/src/slurmctld/Makefile.am index 3955131b31decc1ed61ffeeda8d7fdf1d36132e8..7911a31447346542ce5cfbd0326933e8fe6a5c0e 100644 --- a/src/slurmctld/Makefile.am +++ b/src/slurmctld/Makefile.am @@ -5,13 +5,13 @@ AUTOMAKE_OPTIONS = foreign CLEANFILES = core.* -INCLUDES = $(SSL_CPPFLAGS) +INCLUDES = -I$(top_srcdir) $(SSL_CPPFLAGS) bin_PROGRAMS = slurmctld -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/common/libcred.la \ - $(top_srcdir)/src/common/libdaemonize.la +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/common/libcred.la \ + $(top_builddir)/src/common/libdaemonize.la slurmctld_SOURCES = \ diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 18fa1106fda684a7e13b87b3e61b969bd2a08ce1..9b4c5d82d813dbbce33ce5528f7d77949ef54481 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -438,10 +438,10 @@ load_job_state ( void ) char *data, *state_file; Buf buffer; uint32_t job_id, user_id, time_limit, priority, total_procs; - time_t buf_time, start_time, end_time; + time_t buf_time, start_time, end_time, submit_time; uint16_t job_state, next_step_id, details; char *nodes = NULL, *partition = NULL, *name = NULL; - uint32_t num_procs, num_nodes, min_procs, min_memory, min_tmp_disk, submit_time; + uint32_t num_procs, num_nodes, min_procs, min_memory, min_tmp_disk; uint16_t shared, contiguous, kill_on_node_fail, name_len, batch_flag; char *req_nodes = NULL, *features = NULL; char *err = NULL, *in = NULL, *out = NULL, *work_dir = NULL; @@ -649,7 +649,7 @@ load_job_state ( void ) while (step_flag == STEP_FLAG) { struct step_record *step_ptr; uint16_t step_id, cyclic_alloc; - uint32_t start_time; + time_t start_time; char *node_list; safe_unpack16 (&step_id, buffer); diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c index 47cadc83d3af0aceedb184271db288867a623c16..f154fa45630afcb6d1d3153b378431aa6c8c107b 100644 --- a/src/slurmctld/node_mgr.c +++ b/src/slurmctld/node_mgr.c @@ -425,9 +425,10 @@ load_node_state ( void ) char *node_name, *data, *state_file; int data_allocated, data_read = 0, error_code = 0; uint16_t node_state, name_len; - uint32_t time_stamp, cpus, real_memory, tmp_disk, data_size = 0; + uint32_t cpus, real_memory, tmp_disk, data_size = 0; struct node_record *node_ptr; int state_fd; + time_t time_stamp; Buf buffer; /* read the file */ diff --git a/src/slurmctld/partition_mgr.c b/src/slurmctld/partition_mgr.c index 29018ad00a09cf59b2988eb771994738c0cad5af..96f5c182796c3713b0b9be371fe1e0fed7d66623 100644 --- a/src/slurmctld/partition_mgr.c +++ b/src/slurmctld/partition_mgr.c @@ -331,7 +331,8 @@ int load_part_state ( void ) { char *part_name, *allow_groups, *nodes, *state_file, *data; - uint32_t time, max_time, max_nodes; + uint32_t max_time, max_nodes; + time_t time; uint16_t name_len, def_part_flag, root_only, shared, state_up; struct part_record *part_ptr; uint32_t data_size = 0; diff --git a/src/slurmd/Makefile.am b/src/slurmd/Makefile.am index d64594722600d17e0f9532251c28a88a25fd8383..c22b236c75948b75a5df64573796921e5a24bbc6 100644 --- a/src/slurmd/Makefile.am +++ b/src/slurmd/Makefile.am @@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = foreign sbin_PROGRAMS = slurmd -INCLUDES = $(SSL_CPPFLAGS) +INCLUDES = -I$(top_srcdir) $(SSL_CPPFLAGS) if WITH_ELAN interconnect_lib = libelan_interconnect.la @@ -17,9 +17,9 @@ noinst_LTLIBRARIES = \ libno_interconnect.la endif -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/common/libdaemonize.la \ - $(top_srcdir)/src/common/libcred.la \ +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/common/libdaemonize.la \ + $(top_builddir)/src/common/libcred.la \ $(SSL_LIBS) slurmd_LDADD = $(LDADD) $(interconnect_lib) @@ -32,15 +32,16 @@ common_sources = \ get_mach_stat.c \ get_mach_stat.h \ read_proc.c \ - read_proc.h \ job.c job.h \ io.c io.h \ semaphore.c semaphore.h \ shm.c shm.h \ - setenvpf.c setenvpf.h + setenvpf.c setenvpf.h \ + interconnect.h slurmd_SOURCES = $(common_sources) + libelan_interconnect_la_SOURCES = elan_interconnect.c libno_interconnect_la_SOURCES = no_interconnect.c diff --git a/src/slurmd/slurmd.c b/src/slurmd/slurmd.c index e6f3c3f7f35e46f3755e21ad649bac31813d6f49..99aa347e0fcb3084231083c3577dc8a6cb928013 100644 --- a/src/slurmd/slurmd.c +++ b/src/slurmd/slurmd.c @@ -310,6 +310,8 @@ _read_config() char *epilog, *prolog, *tmpfs, *savedir, *pubkey; FILE *fp; + epilog = prolog = tmpfs = savedir = pubkey = NULL; + if ((fp = fopen(conf->conffile, "r")) == NULL) { error("Unable to open config file `%s': %m", conf->conffile); exit(1); diff --git a/src/squeue/Makefile.am b/src/squeue/Makefile.am index 1bff04faeb19eebe783c57af48d977018fb40d43..5f3c993b8a6e8ce6d9147c3a16b2c1ccaaec64fd 100644 --- a/src/squeue/Makefile.am +++ b/src/squeue/Makefile.am @@ -2,13 +2,13 @@ AUTOMAKE_OPTIONS = foreign -INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api bin_PROGRAMS = squeue -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la \ - $(POPT_LIBS) +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la \ + $(POPT_LIBS) noinst_HEADERS = squeue.h print.h squeue_SOURCES = squeue.c print.c opts.c diff --git a/src/srun/Makefile.am b/src/srun/Makefile.am index 1c11e3b558efb6b1dbb01f9113a80d69bc516fd5..2de6a4c8a1d1fde9147ee718dd867aa6609633b6 100644 --- a/src/srun/Makefile.am +++ b/src/srun/Makefile.am @@ -1,15 +1,11 @@ AUTOMAKE_OPTIONS = foreign -INCLUDES = $(POPT_INCLUDES) +INCLUDES = -I$(top_srcdir) $(POPT_INCLUDES) bin_PROGRAMS = srun srun_SOURCES = srun.c opt.c env.c opt.h env.h job.c job.h net.c net.h \ msg.c msg.h io.c io.h launch.h launch.c attach.h -srun_LDFLAGS = \ - $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la - -srun_LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la \ - $(POPT_LIBS) +srun_LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la \ + $(POPT_LIBS) diff --git a/src/srun/srun.c b/src/srun/srun.c index 0209d8c8b151209cc9bb6a08c578520c44db9af5..8f4a7952536d27ec59db6b3e501bcb09dc29f31d 100644 --- a/src/srun/srun.c +++ b/src/srun/srun.c @@ -51,6 +51,7 @@ #include <src/common/log.h> #include <src/common/xstring.h> #include <src/common/xmalloc.h> +#include <src/common/xsignal.h> #include <src/common/slurm_protocol_api.h> #include <src/srun/opt.h> diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index 95ff3e9fa14c578132cf0014a5b2095d273cba2a..bd60340faccd9539e885e85ad3840a1ac2423fe7 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -4,3 +4,5 @@ AUTOMAKE_OPTIONS = dejagnu #RUNTESTDEFAULTFLAGS = --srcdir $$srcdir/testsuite SUBDIRS = slurm_unit + +noinst_HEADERS = dejagnu.h diff --git a/testsuite/slurm_unit/api/Makefile.am b/testsuite/slurm_unit/api/Makefile.am index 10bb3bb0e9fabf8eccb9fcb86559f891cd252365..0fb83f3ccdd8a5a72d76d9318e70d534b058bce3 100644 --- a/testsuite/slurm_unit/api/Makefile.am +++ b/testsuite/slurm_unit/api/Makefile.am @@ -3,6 +3,6 @@ AUTOMAKE_OPTIONS = foreign SUBDIRS = manual noinst_PROGRAMS = api-test -INCLUDES = -I$(top_srcdir)/src/common -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la diff --git a/testsuite/slurm_unit/api/manual/Makefile.am b/testsuite/slurm_unit/api/manual/Makefile.am index 04f8a8fd40f227aad49ea4772b7113baa0d2965b..609bb40fe1572eb98489882ce197b5cfda597ae0 100644 --- a/testsuite/slurm_unit/api/manual/Makefile.am +++ b/testsuite/slurm_unit/api/manual/Makefile.am @@ -11,6 +11,6 @@ noinst_PROGRAMS = cancel-tst \ update_config-tst -INCLUDES = -I$(top_srcdir)/src/common -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la diff --git a/testsuite/slurm_unit/common/Makefile.am b/testsuite/slurm_unit/common/Makefile.am index f71447dbaa84665c11b745734f81f7f70fe4fc1c..2befcb5b9f080ede64e267fe136ef70774f3f369 100644 --- a/testsuite/slurm_unit/common/Makefile.am +++ b/testsuite/slurm_unit/common/Makefile.am @@ -6,6 +6,8 @@ else elan_testprogs = endif +INCLUDES = -I$(top_srcdir) + noinst_PROGRAMS = $(elan_testprogs) pack-test log-test stream_server stream_client bitstring-test slurm_protocol_message_client slurm_protocol_message_server -LDADD = $(top_srcdir)/src/common/libcommon.la +LDADD = $(top_builddir)/src/common/libcommon.la diff --git a/testsuite/slurm_unit/common/log-test.c b/testsuite/slurm_unit/common/log-test.c index 46572485021e74cfdd7c1f981871d53e162c9bbe..4662ed0e96f2acd7952d4f69c0ba868c6f80ca33 100644 --- a/testsuite/slurm_unit/common/log-test.c +++ b/testsuite/slurm_unit/common/log-test.c @@ -1,6 +1,11 @@ +#include <src/common/slurm_errno.h> #include <src/common/log.h> +int bad_func() +{ + slurm_seterrno_ret(EINVAL); +} int main(int ac, char **av) { /* test elements */ @@ -34,9 +39,26 @@ int main(int ac, char **av) info ("testing unsigned: %u int: % 08d", u, negi); + switch (fork()) { + case 0: + info("in child %ld", getpid()); + log_reinit(); + info("in child after log reinit"); + exit(0); + break; + case -1: + error("fork: %m"); + break; + default: + info("in parent %ld", getpid()); + break; + } /* for now, this test passes if we make it through without * dumping core */ + + if (bad_func() < 0) + error("bad_func: %m"); return 0; } diff --git a/testsuite/slurm_unit/common/pack-test.c b/testsuite/slurm_unit/common/pack-test.c index 9bbec9aa4e5db7d4aa76ca8aade1098f66011ce6..0d7f55a1a6a0c2e565b6e59d816124142f831dcb 100644 --- a/testsuite/slurm_unit/common/pack-test.c +++ b/testsuite/slurm_unit/common/pack-test.c @@ -1,5 +1,9 @@ /* $Id$ */ +#if HAVE_CONFIG_H +# include <config.h> +#endif + #if HAVE_INTTYPES_H # include <inttypes.h> #else diff --git a/testsuite/slurm_unit/slurmctld/Makefile.am b/testsuite/slurm_unit/slurmctld/Makefile.am index c8f7df92c7624d43194496229af14056ac91dc14..8337b5eae4977878db2ef1476bcf193dfc4b90cb 100644 --- a/testsuite/slurm_unit/slurmctld/Makefile.am +++ b/testsuite/slurm_unit/slurmctld/Makefile.am @@ -1,33 +1,34 @@ AUTOMAKE_OPTIONS = foreign noinst_PROGRAMS = job_mgr-test job_step-test job_add job_cancel step_create - -INCLUDES = -I$(top_srcdir)/src/common - -job_step_test_LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la - -step_create_LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la - -job_add_LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la - -job_cancel_LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/api/libslurm.la - -LDADD = $(top_srcdir)/src/common/libcommon.la \ - $(top_srcdir)/src/slurmctld/agent.o \ - $(top_srcdir)/src/slurmctld/job_scheduler.o \ - $(top_srcdir)/src/slurmctld/node_scheduler.o \ - $(top_srcdir)/src/slurmctld/partition_mgr.o \ - $(top_srcdir)/src/slurmctld/step_mgr.o \ - $(top_srcdir)/src/slurmctld/job_mgr.o \ - $(top_srcdir)/src/slurmctld/node_mgr.o \ - $(top_srcdir)/src/slurmctld/locks.o \ - $(top_srcdir)/src/common/parse_spec.o \ - $(top_srcdir)/src/slurmctld/read_config.o \ - $(top_srcdir)/src/api/libslurm.la \ - $(top_srcdir)/src/common/libcred.la \ +noinst_HEADERS = get_resp.h + +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common + +job_step_test_LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la + +step_create_LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la + +job_add_LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la + +job_cancel_LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/api/libslurm.la + +LDADD = $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/src/slurmctld/agent.o \ + $(top_builddir)/src/slurmctld/job_scheduler.o \ + $(top_builddir)/src/slurmctld/node_scheduler.o \ + $(top_builddir)/src/slurmctld/partition_mgr.o \ + $(top_builddir)/src/slurmctld/step_mgr.o \ + $(top_builddir)/src/slurmctld/job_mgr.o \ + $(top_builddir)/src/slurmctld/node_mgr.o \ + $(top_builddir)/src/slurmctld/locks.o \ + $(top_builddir)/src/common/parse_spec.o \ + $(top_builddir)/src/slurmctld/read_config.o \ + $(top_builddir)/src/api/libslurm.la \ + $(top_builddir)/src/common/libcred.la \ $(SSL_LIBS) diff --git a/testsuite/slurm_unit/slurmd/Makefile.am b/testsuite/slurm_unit/slurmd/Makefile.am index 2e3f28b5c52764fef2e593c8ae7f03a376637403..893dc7b1d24f2ce15bc1841825f7a22980024d57 100644 --- a/testsuite/slurm_unit/slurmd/Makefile.am +++ b/testsuite/slurm_unit/slurmd/Makefile.am @@ -13,7 +13,7 @@ io_lib = $(top_srcdir)/src/slurmd/libthreaded_io.la endif -INCLUDES = -I$(top_srcdir)/src/common +INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common LDADD = $(top_srcdir)/src/common/libcommon.la \ $(top_srcdir)/src/slurmd/task_mgr.o \ $(top_srcdir)/src/slurmd/shmem_struct.o \