#//%LICENSE//////////////////////////////////////////////////////////////// #// #// Licensed to The Open Group (TOG) under one or more contributor license #// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with #// this work for additional information regarding copyright ownership. #// Each contributor licenses this file to you under the OpenPegasus Open #// Source License; you may not use this file except in compliance with the #// License. #// #// Permission is hereby granted, free of charge, to any person obtaining a #// copy of this software and associated documentation files (the "Software"), #// to deal in the Software without restriction, including without limitation #// the rights to use, copy, modify, merge, publish, distribute, sublicense, #// and/or sell copies of the Software, and to permit persons to whom the #// Software is furnished to do so, subject to the following conditions: #// #// The above copyright notice and this permission notice shall be included #// in all copies or substantial portions of the Software. #// #// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS #// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF #// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. #// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY #// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, #// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE #// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #// #////////////////////////////////////////////////////////////////////////// # commands.mak is a helper Makefile that is intended to be # included in an upper level Makefile. # Ensure that config.mak is included (so that the ROOT # variable is set correctly) ifndef ROOT ifdef PEGASUS_ROOT ROOT = $(subst \,/,$(PEGASUS_ROOT)) else ROOT = . endif include $(ROOT)/mak/config.mak endif ifeq ($(OS_TYPE),windows) STRIPCRS = stripcrs $(RESULTFILE) $(MASTERRESULTFILE) DIFF = mu compare SORT = mu sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) -start CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -stop SLEEP = mu sleep TIME_CMD = WINDOWS_ONLY_SLEEP = mu sleep 10 REMOVE_PEGASUS_DIRECTORY = mu rmdirhier pegasus MUEXE = mu.exe RM = mu rm MKDIRHIER = $(MUEXE) mkdirhier RMDIRHIER = $(MUEXE) rmdirhier ECHO = mu echo ECHO-E = mu echo-e COPY = mu copy CHMOD = CHOWN = CHGRP = CURRENT_USER=Administrator else WINDOWS_ONLY_SLEEP = endif ifeq ($(OS),HPUX) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu MKDIRHIER = mkdir -p RMDIRHIER = rm -rf CPDIRHIER = cp -R ECHO = echo ECHO-E = echo COPY = cp TOUCH = touch CAT = cat DOCXX = doc++ DOXYGEN = doxygen GENERATE_RANDSEED = randseed GET_HOSTNAME = `nslookup \`hostname\` | grep "Name:" | sed 's/Name:[ ]*//'` LIB_LINK_SUFFIX = .so ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_ACC) LIB_LINK_SUFFIX = .sl endif ifeq ($(PEGASUS_PLATFORM), HPUX_PARISC_GNU) LIB_LINK_SUFFIX = .sl endif Prwxr_xr_x = 755 Prwx______ = 700 Prwxrwxrwx = 777 Prwxrwxrwt = 1777 Prwxr__r__ = 744 Pr__r__r__ = 444 Pr________ = 400 Pr_xr_xr_x = 555 Prw_______ = 600 Prw_r__r__ = 644 Prw_r_____ = 640 CHMODDIRHIER = chmod -R INSTALL_USR = bin INSTALL_GRP = bin CIMSERVER_USR = root CIMSERVER_GRP = sys CHMOD = chmod CHOWN = chown CHGRP = chgrp CHOWNDIRHIER = chown -R CHGRPDIRHIER = chgrp -R SYMBOLIC_LINK_CMD = ln -f -s CURRENT_USER=`whoami` endif ifeq ($(OS),solaris) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 # # Refer to bug 4205 for the description of the problem with the SIGUSR1 # signal. That problem required changing the server to be started in the # background with a sleep 30 to prevent the makefile from receiving the # SIGUSR1 signal and exiting # ifeq ($(PEGASUS_PLATFORM), SOLARIS_SPARC_GNU) CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) & $(SLEEP) 30 CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s else CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = /usr/bin/ps -ef | /usr/bin/grep cimserver | /usr/bin/grep -v grep | /usr/bin/awk '{print "kill -9 "$$2 |"/usr/bin/ksh"}' endif SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu RM = rm -f MKDIRHIER = mkdir -p RMDIRHIER = rm -rf ECHO = echo ECHO-E = mu echo-e COPY = cp CHMOD = chmod CHOWN = chown CHGRP = chgrp CURRENT_USER=`whoami` endif ifeq ($(OS),linux) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu MKDIRHIER = mkdir -p RMDIRHIER = rm -rf CPDIRHIER = cp -R ECHO = echo ECHO-E = echo -e COPY = cp TOUCH = touch CAT = cat DOCXX = doc++ DOXYGEN = doxygen GET_HOSTNAME = `host \`hostname\`|cut -d" " -f1` LIB_LINK_SUFFIX = .so Prwxrwxrwx = 777 Prwxrwxrwt = 1777 Prwxr_xr_x = 755 Prwxr_x___ = 750 Prwxr__r__ = 744 Prwx______ = 700 Pr__r__r__ = 444 Pr________ = 400 Pr_xr_xr_x = 555 Pr_x______ = 500 Prw_______ = 600 Prw_r__r__ = 644 Prw_r_____ = 640 CHMODDIRHIER = chmod -R INSTALL_USR = root INSTALL_GRP = pegasus CIMSERVER_USR = root CIMSERVER_GRP = root CHMOD = chmod CHOWN = chown CHGRP = chgrp CHOWNDIRHIER = chown -R CHGRPDIRHIER = chgrp -R SYMBOLIC_LINK_CMD = ln -f -s CURRENT_USER=`whoami` # # Since the Privilege Separation splits the cimserver process into two # processes (cimservermain process - a non privileged process; cimserver # process - a privileged process), the pegasus files need to be split into # two sets. The files which can be updated by cimservermain process are owned # by user "CIMSERVERMAIN_USR" and group "CIMSERVERMAIN_GRP". Other files # owned by user "CIMSERVER_USR" and group "CIMSERVER_GRP" can be updated # by cimserver process. # If the Privilege Separation is not enabled, a single privileged process # (cimserver process) is created. All the pegasus files can be updated by # the cimserver process. The CIMSERVERMAIN_USR variable will be set # equal to CIMSERVER_USR, and the CIMSERVERMAIN_GRP variable will be set # equal to CIMSERVER_GRP. # # To further restrict the privileges assigned to the cimservermain # process, we recommend creating a new group for the cimservermain # process. By default, the name of this group will be the same as # the cimservermain user. Note: the CIMSERVERMAIN_GRP should be # the primary group for the CIMSERVERMAIN_USER. ifdef PEGASUS_ENABLE_PRIVILEGE_SEPARATION CIMSERVERMAIN_USR = $(PEGASUS_CIMSERVERMAIN_USER) CIMSERVERMAIN_GRP = $(PEGASUS_CIMSERVERMAIN_USER) else CIMSERVERMAIN_USR = $(CIMSERVER_USR) CIMSERVERMAIN_GRP = $(CIMSERVER_GRP) endif endif ifeq ($(OS),zos) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu RM = rm -f MKDIRHIER = mkdir -p RMDIRHIER = rm -rf CPDIRHIER = cp -R ECHO = echo ECHO-E = echo COPY = cp TOUCH = touch Prwxrwxrwx = 777 Prwxrwxrwt = 1777 Prwxr_xr_x = 755 Prwxr__r__ = 744 Pr__r__r__ = 444 Pr________ = 400 Pr_xr_xr_x = 555 Pr_x______ = 500 Prw_r__r__ = 644 CHMODDIRHIER = chmod -R INSTALL_USR = root INSTALL_GRP = root CIMSERVER_USR = root CIMSERVER_GRP = root CHMOD = chmod CHOWN = chown CHGRP = chgrp CHOWNDIRHIER = chown -R CHGRPDIRHIER = chgrp -R GET_HOSTNAME = `host \`hostname\`|cut -d" " -f1` LIB_LINK_SUFFIX = .so CURRENT_USER=`whoami` SYMBOLIC_LINK_CMD = ln -f -s CAT = cat endif ifeq ($(OS),VMS) STRIPCRS = DIFF = mu compare SORT = mu sort REDIRECTERROR = $(MUEXE) echo "REDIRECTERROR not defined in commands.mak" CIMSERVER_START_SERVICE_DELAY = 20 CIMSERVER_START_SERVICE = pipe ($(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) &) && mu sleep $(CIMSERVER_START_SERVICE_DELAY) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = $(MUEXE) sleep TIME_CMD = REMOVE_PEGASUS_DIRECTORY = mu rmdirhier pegasus MUEXE = mu MKDIRHIER = $(MUEXE) mkdirhier RMDIRHIER = $(MUEXE) rmdirhier ECHO = $(MUEXE) echo ECHO-E = $(MUEXE) echo "ECHO-E not defined in commands.mak" CHMOD = $(MUEXE) echo "CHMOD not defined in commands.mak" CHOWN = $(MUEXE) echo "CHOWN not defined in commands.mak" CHGRP = $(MUEXE) echo "CHGRP not defined in commands.mak" endif ifeq ($(OS),aix) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu RM = rm -f MKDIRHIER = mkdir -p RMDIRHIER = rm -rf ECHO = echo ECHO-E = COPY = cp CHMOD = chmod CHOWN = chown CHGRP = chgrp CAT = cat endif ifeq ($(OS),PASE) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = system STRTCPSVR *CIMOM CIMSERVER_STOP_SERVICE = system ENDTCPSVR *CIMOM SLEEP = sleep TIME_CMD = time MUEXE = mu RM = rm -f MKDIRHIER = mkdir -p RMDIRHIER = rm -rf ECHO = echo ECHO-E = COPY = cp CHMOD = chmod CHOWN = chown CHGRP = chgrp CAT = cat endif ifeq ($(OS),darwin) STRIPCRS = DIFF = diff SORT = sort REDIRECTERROR = 2>&1 CIMSERVER_START_SERVICE = $(CIMSERVER_PATH)cimserver $(CIMSERVER_CONFIG_OPTIONS) CIMSERVER_STOP_SERVICE = $(CIMSERVER_PATH)cimserver -s SLEEP = sleep TIME_CMD = time REMOVE_PEGASUS_DIRECTORY = rm -Rf pegasus.old; mv pegasus pegasus.old MUEXE = mu RM = rm -f MKDIRHIER = mkdir -p RMDIRHIER = rm -rf ECHO = echo ECHO-E = mu echo-e COPY = cp TOUCH = touch CAT = cat CHMOD = chmod CHOWN = chown CHGRP = chgrp CHMODDIRHIER = chmod -R CHOWNDIRHIER = chown -R CHGRPDIRHIER = chgrp -R SYMBOLIC_LINK_CMD = ln -f -s CURRENT_USER=`whoami` endif ifdef PEGASUS_ENABLE_REMOTE_CMPI ifeq ($(OS_TYPE),windows) CMPIR_START_DAEMON = start "/K $(CIMSERVER_PATH)" CMPIRDaemon CMPIR_STOP_DAEMON = $(CIMSERVER_PATH)CMPIRDaemon --stop else CMPIR_START_DAEMON = $(CIMSERVER_PATH)CMPIRDaemon CMPIR_STOP_DAEMON = $(CIMSERVER_PATH)CMPIRDaemon --stop endif else CMPIR_START_DAEMON = $(ECHO) "(CMPIR_START_DAEMON command ignored)" CMPIR_STOP_DAEMON = $(ECHO) "(CMPIR_STOP_DAEMON command ignored)" endif ifndef TMP_DIR ifdef PEGASUS_TMP TMP_DIR = $(subst \,/,$(PEGASUS_TMP)) else TMP_DIR = . endif endif CMDSFORCE: ## ## Although the macros CIMSERVER_STOP_SERVICE and CIMSERVER_START_SERVICE ## are available and could be invoked directly, their direct usage is ## discouraged in favor of invoking the cimstop and the cimstart rules ## as this allows one place where additional checks, delays etc may be ## added in the future to control or further test the servers performance ## in executing these commands. ## cimstop: CMDSFORCE -$(CMPIR_STOP_DAEMON) $(CIMSERVER_STOP_SERVICE) cimstart: CMDSFORCE $(CIMSERVER_START_SERVICE) $(CMPIR_START_DAEMON) sleep: CMDSFORCE $(SLEEP) $(TIME) mkdirhier: CMDSFORCE $(MKDIRHIER) $(DIRNAME) rmdirhier: CMDSFORCE $(RMDIRHIER) $(DIRNAME) setpermissions: CMDSFORCE $(CHMOD) $(PERMISSIONS) $(OBJECT) $(CHOWN) $(OWNER) $(OBJECT) $(CHGRP) $(GROUP) $(OBJECT) sethierpermissions: CMDSFORCE $(CHMODDIRHIER) $(PERMISSIONS) $(OBJECT) $(CHOWNDIRHIER) $(OWNER) $(OBJECT) $(CHGRPDIRHIER) $(GROUP) $(OBJECT) createlink: CMDSFORCE $(SYMBOLIC_LINK_CMD) $(OBJECT) $(LINKNAME) createrandomseed: CMDSFORCE $(GENERATE_RANDSEED) $(FILENAME) # Because commands.mak is intended to be used as # helper Makefile, embedded use of calls to "make" are # problematic because the name of toplevel is not known. # To workaround this problem, the MAKEOPTIONS define # has been added to the following commands to # allow the name of the toplevel Makefile to be included. # E.g., # # make MAKEOPTION="-f TestMakefile" cimstop_IgnoreError # # However, a better alternative would be to call the # the command directly from the toplevel makefile. # E.g., # # make -f TestMakefile -i cimstop cimstop_IgnoreError: CMDSFORCE @$(MAKE) $(MAKEOPTIONS) -i cimstop rmdirhier_IgnoreError: CMDSFORCE @$(MAKE) $(MAKEOPTIONS) -i rmdirhier mkdirhier_IgnoreError: CMDSFORCE @$(MAKE) $(MAKEOPTIONS) -i mkdirhier # The runTestSuite option starts the CIM Server # with a designated set of configuration options (i.e., # CIMSERVER_CONFIG_OPTIONS) and then runs a specified # set of tests (i.e., TESTSUITE_CMDS). After the tests # have been executed, the CIM Server is stopped. # # To call runTestSuite, you simply (1) define the # configuration options, (2) define the set of # tests and (3) call commands.mak with the appropriate # parameters. Note: when specifying the set of tests # @@ is used as a replacement for blank. E.g., the # following sequence can be used to enable the # HTTP connection, disable the HTTPS connection and # run an osinfo, TestClient, OSTestClient, # and InvokeMethod2 test. # #runTestSuiteTest_CONFIG_OPTIONS = enableHttpConnection=true enableHttpsConnection=false #runTestSuiteTest_TEST_CMDS = \ # osinfo@@-hlocalhost@@-p5988@@-uguest@@-wguest\ # TestClient@@-local \ # OSTestClient \ # $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Pegasus/Client/tests/InvokeMethod2@@poststarttests # #runTestSuiteTest: CMDSFORCE # $(MAKE) $(MAKEOPTIONS) runTestSuite CIMSERVER_CONFIG_OPTIONS="$(runTestSuiteTest_CONFIG_OPTIONS)" TESTSUITE_CMDS="$(runTestSuiteTest_TEST_CMDS)" ## ## NOTE: The CIMSERVER_CONFIG_OPTIONS are set in the environment on the ## makefile rule command line invoking the runTestSuite command. ## They are inherited by the next shell which will run the ## cimstart command. ## runTestSuite: CMDSFORCE -$(CIMSERVER_STOP_SERVICE) -$(CMPIR_STOP_DAEMON) $(CIMSERVER_START_SERVICE) $(CMPIR_START_DAEMON) $(WINDOWS_ONLY_SLEEP) $(foreach i, $(TESTSUITE_CMDS), $(subst @@, ,$(i))) $(CIMSERVER_STOP_SERVICE) $(CMPIR_STOP_DAEMON) ifndef PEGASUS_SSLCNF_FULLY_QUALIFIED_DSN PEGASUS_SSLCNF_FULLY_QUALIFIED_DSN=$(GET_HOSTNAME) endif createSSLCnfFile: CMDSFORCE @$(RM) $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "[ req ]" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "distinguished_name = req_distinguished_name" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "prompt = no" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "[ req_distinguished_name ]" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "C = $(PEGASUS_SSLCNF_COUNTRY_CODE)" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "ST = $(PEGASUS_SSLCNF_STATE)" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "L = $(PEGASUS_SSLCNF_LOCALITY)" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "O = $(PEGASUS_SSLCNF_ORGANIZATION)" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "OU = $(PEGASUS_SSLCNF_ORGANIZATION_UNIT)" >> $(PEGASUS_SSLCERT_CNFFILE) @$(ECHO) "CN = $(PEGASUS_SSLCNF_FULLY_QUALIFIED_DSN)" >> $(PEGASUS_SSLCERT_CNFFILE) createSSLCertificate: CMDSFORCE ifdef PEGASUS_SSL_RANDOMFILE @$(OPENSSL_COMMAND) req -x509 -days $(PEGASUS_SSLCERT_DAYS) -newkey rsa:2048 -rand $(PEGASUS_SSLCERT_RANDOMFILE) -nodes -config $(PEGASUS_SSLCERT_CNFFILE) -keyout $(PEGASUS_SSLCERT_KEYFILE) -out $(PEGASUS_SSLCERT_CERTFILE) else @$(OPENSSL_COMMAND) req -x509 -days $(PEGASUS_SSLCERT_DAYS) -newkey rsa:2048 -nodes -config $(PEGASUS_SSLCERT_CNFFILE) -keyout $(PEGASUS_SSLCERT_KEYFILE) -out $(PEGASUS_SSLCERT_CERTFILE) endif displayCertificate: CMDSFORCE @$(OPENSSL_COMMAND) x509 -in $(PEGASUS_SSLCERT_CERTFILE) -text