Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# git ignore file for the Docker-Provider project

/intermediate/
/target/
/build/config.mak

# Unit test files

/test/code/providers/TestScriptPath.h
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these test files ignored?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is created by the build process. I didn't get into details with Yuyang about it, I didn't much care. It's created during the build process, so I put it in .gitignore.

/test/code/providers/providertestutils.cpp
79 changes: 43 additions & 36 deletions build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ ifndef ENABLE_DEBUG
$(error "ENABLE_DEBUG is not set. Please re-run configure")
endif

# Include the version file
include ../../docker.version

ifndef CONTAINER_BUILDVERSION_STATUS
$(error "Is docker.version missing? Please re-run configure")
endif

SOURCE_DIR := $(BASE_DIR)/source/code
TEST_DIR := $(BASE_DIR)/test/code

Expand All @@ -22,22 +29,22 @@ PROVIDER_TEST_DIR := $(TEST_DIR)/providers
PAL_INCLUDE_DIR := $(SCXPAL_DIR)/source/code/include
PAL_TESTUTILS_DIR := $(SCXPAL_DIR)/test/code/testutils

INTERMEDIATE_DIR=$(BASE_DIR)/intermediate/$(BUILD_CONFIGURATION)
INTERMEDIATE_DIR := $(BASE_DIR)/intermediate/$(BUILD_CONFIGURATION)
TARGET_DIR := $(BASE_DIR)/target/$(BUILD_CONFIGURATION)
PROVIDER_LIBRARY := $(TARGET_DIR)/libcontainer.so
PROVIDER_LIBRARY := $(INTERMEDIATE_DIR)/libcontainer.so

INSTALLER_TMPDIR := $(TARGET_DIR)/installer_tmp
INSTALLER_TMPDIR := $(INTERMEDIATE_DIR)/installer_tmp

# Include files

INCLUDE_DEFINES := $(TARGET_DIR)/defines.h
INCLUDE_DEFINES := $(INTERMEDIATE_DIR)/defines.h

# Compiler flags

OMI_INCLUDE_FLAGS := -I$(OMI_ROOT)/output/include
PROVIDER_INCLUDE_FLAGS := -I$(PAL_INCLUDE_DIR) -I$(TARGET_DIR)
PROVIDER_INCLUDE_FLAGS := -I$(PAL_INCLUDE_DIR) -I$(INTERMEDIATE_DIR)

PROVIDER_TEST_INCLUDE_FLAGS := -Wmissing-include-dirs -Wno-non-virtual-dtor -I$(SCXPAL_DIR)/source/code/include -I$(TARGET_DIR) -I$(SCXPAL_DIR)/test/ext/include -I$(OMI_ROOT)/output/include -I$(OMI_ROOT) -I$(OMI_ROOT)/common -I$(SCXPAL_DIR)/test/code/include $(PROVIDER_INCLUDE_FLAGS) -I$(PROVIDER_DIR)
PROVIDER_TEST_INCLUDE_FLAGS := -Wmissing-include-dirs -Wno-non-virtual-dtor -I$(SCXPAL_DIR)/source/code/include -I$(INTERMEDIATE_DIR) -I$(SCXPAL_DIR)/test/ext/include -I$(OMI_ROOT)/output/include -I$(OMI_ROOT) -I$(OMI_ROOT)/common -I$(SCXPAL_DIR)/test/code/include $(PROVIDER_INCLUDE_FLAGS) -I$(PROVIDER_DIR)

ifeq ($(ENABLE_DEBUG),1)
PROV_DEBUG_FLAGS := -g
Expand All @@ -53,15 +60,12 @@ SHARED_FLAGS := -shared

# Support for installbuilder

STAGING_DIR := $(TARGET_DIR)/staging

CONTAINER_BUILDVERSION_MAJOR := 1
CONTAINER_BUILDVERSION_MINOR := 0
CONTAINER_BUILDVERSION_PATCH := 0
CONTAINER_BUILDVERSION_BUILDNR := 0
STAGING_DIR := $(INTERMEDIATE_DIR)/staging

ifeq ($(ULINUX),1)
OUTPUT_PACKAGE_PREFIX=docker-cimprov-$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH)-$(CONTAINER_BUILDVERSION_BUILDNR).universal.$(PF_ARCH)
# For consistency, the architecture should be i686 (for x86) and x86_64 (for x64)
DOCKER_ARCH := $(shell echo $(PF_ARCH) | sed -e 's/x86$$/i686/' -e 's/x64$$/x86_64/')
OUTPUT_PACKAGE_PREFIX=docker-cimprov-$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH)-$(CONTAINER_BUILDVERSION_BUILDNR).universal.$(DOCKER_ARCH)
else
PF_DISTRO_LC := $(shell echo $(PF_DISTRO) | tr A-Z a-z)
OUTPUT_PACKAGE_PREFIX=docker-cimprov-$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH)-$(CONTAINER_BUILDVERSION_BUILDNR).$(PF_DISTRO_LC).$(PF_MAJOR).$(PF_ARCH)
Expand Down Expand Up @@ -255,7 +259,6 @@ $(PROVIDER_LIBRARY): CFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(PROVIDER_LIBRARY): CXXFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(PROVIDER_LIBRARY): $(STATIC_PROVIDERLIB_OBJFILES) $(STATIC_PROVIDERLIB_LOGPOLICY) $(INCLUDE_DEFINES) $(PROVIDER_HEADERS)
$(MKPATH) $(INTERMEDIATE_DIR)
$(MKPATH) $(TARGET_DIR)
g++ $(PROVIDER_COMPILE_FLAGS) $(SHARED_FLAGS) $(PROVIDER_INCLUDE_FLAGS) -o $@ $(STATIC_PROVIDERLIB_OBJFILES) $(LINK_LIBRARIES)

#--------------------------------------------------------------------------------
Expand Down Expand Up @@ -286,12 +289,11 @@ STATIC_PROVIDER_PAL_UNITFILES = \

STATIC_PROVIDER_TEST_OBJFILES = $(call src_to_obj,$(STATIC_PROVIDER_UNITFILES))

$(TARGET_DIR)/testrunner: INCLUDES += $(PROVIDER_TEST_INCLUDE_FLAGS) -I$(PAL_INCLUDE_DIR) -I$(PAL_TESTUTILS_DIR) -I$(PROVIDER_DIR) -I$(SOURCE_DIR)
$(TARGET_DIR)/testrunner: CFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(TARGET_DIR)/testrunner: CXXFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(TARGET_DIR)/testrunner : $(STATIC_PROVIDER_TEST_OBJFILES) $(STATIC_PROVIDERLIB_OBJFILES) $(INCLUDE_DEFINES) $(PROVIDER_HEADERS)
$(INTERMEDIATE_DIR)/testrunner: INCLUDES += $(PROVIDER_TEST_INCLUDE_FLAGS) -I$(PAL_INCLUDE_DIR) -I$(PAL_TESTUTILS_DIR) -I$(PROVIDER_DIR) -I$(SOURCE_DIR)
$(INTERMEDIATE_DIR)/testrunner: CFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(INTERMEDIATE_DIR)/testrunner: CXXFLAGS += $(PROVIDER_COMPILE_FLAGS)
$(INTERMEDIATE_DIR)/testrunner : $(STATIC_PROVIDER_TEST_OBJFILES) $(STATIC_PROVIDERLIB_OBJFILES) $(INCLUDE_DEFINES) $(PROVIDER_HEADERS)
$(MKPATH) $(INTERMEDIATE_DIR)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate with the following line.

$(MKPATH) $(TARGET_DIR)
g++ $(PROVIDER_COMPILE_FLAGS) $(PROVIDER_TEST_INCLUDE_FLAGS) -o $@ $(STATIC_PROVIDER_PAL_UNITFILES) $(STATIC_PROVIDER_TEST_OBJFILES) $(STATIC_PROVIDERLIB_OBJFILES) $(LINK_LIBRARIES) $(PROVIDER_TEST_LINK_LIBRARIES)

testrun : test
Expand All @@ -300,9 +302,9 @@ TEST_STATUS:
@echo "========================= Performing Building provider tests"
@echo \#define TEST_SCRIPT_PATH \"$(TEST_DIR)/scripts/\" > $(TEST_DIR)/providers/TestScriptPath.h

test : TEST_STATUS $(SCXPAL_INTERMEDIATE_DIR) $(TARGET_DIR)/testrunner
test : TEST_STATUS $(SCXPAL_INTERMEDIATE_DIR) $(INTERMEDIATE_DIR)/testrunner
@echo "========================= Performing container testrun execution"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(OMI_ROOT)/output/lib; cd $(TARGET_DIR); ./testrunner
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(OMI_ROOT)/output/lib; cd $(INTERMEDIATE_DIR); sudo ./testrunner

#--------------------------------------------------------------------------------
# Build the distribution kit
Expand All @@ -320,10 +322,10 @@ ifeq ($(ULINUX),1)
@echo "========================= Performing Building RPM and DPKG packages"
$(MKPATH) $(INSTALLER_TMPDIR)
sudo $(RMDIR) $(STAGING_DIR)
$(MKPATH) $(TARGET_DIR)
$(MKPATH) $(INTERMEDIATE_DIR)
python $(SCXPAL_DIR)/installer/InstallBuilder/installbuilder.py \
--BASE_DIR=$(BASE_DIR) \
--TARGET_DIR=$(TARGET_DIR) \
--TARGET_DIR=$(INTERMEDIATE_DIR) \
--INTERMEDIATE_DIR=$(INSTALLER_TMPDIR) \
--STAGING_DIR=$(STAGING_DIR) \
--BUILD_TYPE=$(BUILD_TYPE) \
Expand All @@ -332,18 +334,18 @@ ifeq ($(ULINUX),1)
--PFDISTRO=$(PF_DISTRO) \
--PFMAJOR=$(PF_MAJOR) \
--PFMINOR=$(PF_MINOR) \
--VERSION=1.0.0 \
--RELEASE=1 \
--VERSION=$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH) \
--RELEASE=$(CONTAINER_BUILDVERSION_BUILDNR) \
--CONTAINER_BUILD_LIBRARY=$(CONTAINERLIB_FILENAME) \
--OUTPUTFILE=$(OUTPUT_PACKAGE_PREFIX) \
--DATAFILE_PATH=$(BASE_DIR)/installer/datafiles \
base_container.data linux.data linux_rpm.data

sudo $(RMDIR) $(STAGING_DIR)
$(MKPATH) $(TARGET_DIR)
$(MKPATH) $(INTERMEDIATE_DIR)
python $(SCXPAL_DIR)/installer/InstallBuilder/installbuilder.py \
--BASE_DIR=$(BASE_DIR) \
--TARGET_DIR=$(TARGET_DIR) \
--TARGET_DIR=$(INTERMEDIATE_DIR) \
--INTERMEDIATE_DIR=$(INSTALLER_TMPDIR) \
--STAGING_DIR=$(STAGING_DIR) \
--BUILD_TYPE=$(BUILD_TYPE) \
Expand All @@ -352,29 +354,33 @@ ifeq ($(ULINUX),1)
--PFDISTRO=$(PF_DISTRO) \
--PFMAJOR=$(PF_MAJOR) \
--PFMINOR=$(PF_MINOR) \
--VERSION=1.0.0 \
--RELEASE=1 \
--VERSION=$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH) \
--RELEASE=$(CONTAINER_BUILDVERSION_BUILDNR) \
--CONTAINER_BUILD_LIBRARY=$(CONTAINERLIB_FILENAME) \
$(DPKG_LOCATION) \
--OUTPUTFILE=$(OUTPUT_PACKAGE_PREFIX) \
--DATAFILE_PATH=$(BASE_DIR)/installer/datafiles \
base_container.data linux.data linux_dpkg.data

# Strip the package extension from the package filename
sed -re 's/.rpm$$|.deb$$//' $(TARGET_DIR)/package_filename > $(TARGET_DIR)/package_file.tmp
sed -re 's/.rpm$$|.deb$$//' $(INTERMEDIATE_DIR)/package_filename > $(INTERMEDIATE_DIR)/package_file.tmp; mv $(INTERMEDIATE_DIR)/package_file.tmp $(INTERMEDIATE_DIR)/package_filename

# Build the tar file containing both .rpm and .deb packages
cd $(TARGET_DIR); tar cvf $(OUTPUT_PACKAGE_PREFIX).tar $(OUTPUT_PACKAGE_PREFIX).rpm $(OUTPUT_PACKAGE_PREFIX).deb
cd $(INTERMEDIATE_DIR); tar cvf $(OUTPUT_PACKAGE_PREFIX).tar $(OUTPUT_PACKAGE_PREFIX).rpm $(OUTPUT_PACKAGE_PREFIX).deb

../installer/bundle/create_bundle.sh $(PF)_$(PF_DISTRO) $(INTERMEDIATE_DIR) $(OUTPUT_PACKAGE_PREFIX)
# Copy the shell bundle to the target directory
$(MKPATH) $(TARGET_DIR)
cd $(INTERMEDIATE_DIR); cp `cat $(INTERMEDIATE_DIR)/package_filename`.sh $(TARGET_DIR)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cd looks unnecessary.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not. The package_filename file doesnt contain a path prefix so, without adding that, this will fail without the cd.


../installer/bundle/create_bundle.sh $(PF)_$(PF_DISTRO) $(TARGET_DIR) $(OUTPUT_PACKAGE_PREFIX)
else

@echo "========================= Performing Building RPM and DPKG packages"
sudo $(RMDIR) $(STAGING_DIR)
$(MKPATH) $(TARGET_DIR)
$(MKPATH) $(INTERMEDIATE_DIR)
python $(SCXPAL_DIR)/installer/InstallBuilder/installbuilder.py \
--BASE_DIR=$(BASE_DIR) \
--TARGET_DIR=$(TARGET_DIR) \
--TARGET_DIR=$(INTERMEDIATE_DIR) \
--INTERMEDIATE_DIR=$(INSTALLER_TMPDIR) \
--STAGING_DIR=$(STAGING_DIR) \
--BUILD_TYPE=$(BUILD_TYPE) \
Expand All @@ -383,11 +389,12 @@ else
--PFDISTRO=$(PF_DISTRO) \
--PFMAJOR=$(PF_MAJOR) \
--PFMINOR=$(PF_MINOR) \
--VERSION=1.0.0 \
--RELEASE=1 \
--VERSION=$(CONTAINER_BUILDVERSION_MAJOR).$(CONTAINER_BUILDVERSION_MINOR).$(CONTAINER_BUILDVERSION_PATCH) \
--RELEASE=$(CONTAINER_BUILDVERSION_BUILDNR) \
--CONTAINER_BUILD_LIBRARY=$(CONTAINERLIB_FILENAME) \
$(DPKG_LOCATION) \
--OUTPUTFILE=$(OUTPUT_PACKAGE_PREFIX) \
--DATAFILE_PATH=$(BASE_DIR)/installer/datafiles \
base_container.data linux.data linux_dpkg.data

endif
82 changes: 9 additions & 73 deletions build/configure
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,45 +1,14 @@
#!/bin/bash

#--------------------------------- START OF LICENSE ----------------------------
#
# MySQL cimprov ver. 1.0
#
# Copyright (c) Microsoft Corporation
#
# All rights reserved.
#
# MIT 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.
#
#---------------------------------- END OF LICENSE -----------------------------

scxomi_dir=`(cd ../../OMI/Unix; pwd -P)`
scxpal_dir=`(cd ../../Pal; pwd -P)`
scxomi_dir=`(cd ../../omi/Unix; pwd -P)`
scxpal_dir=`(cd ../../pal; pwd -P)`

enable_debug=""
enable_debug_flag=0
enable_purify_agent=""
enable_purify_server=""
enable_omi_tools=""
enable_omi_tools_flag=0
opensource_distro=0
build_type=Release
ULINUX=0
NOULINIX=0
Expand All @@ -52,6 +21,13 @@ if [ ! -d "$scxomi_dir" ]; then
exit 1
fi

# Do we have a version file from the super project? If not, trigger error

if [ ! -f ../../docker.version ]; then
echo "Docker version file does not exist in superproject"
exit 1
fi

for opt
do

Expand Down Expand Up @@ -106,10 +82,6 @@ do
enable_omi_tools_flag=1
;;

--enable-open-source)
opensource_distro=1
;;

*)
echo "configure: invalid option '$opt'"
echo "Try configure --help' for more information."
Expand Down Expand Up @@ -141,7 +113,6 @@ OPTIONS:
--enable-purify-agent Allow agent to be run with purify (memory leak detection)
--enable-purify-server Allow server to be run with purify (memory leak detection)
--enable-omi-tools Build to allow use of OMI tools (omischema and omireg)
--enable-open-source Build for open source distribution

EOF
exit 0
Expand All @@ -150,43 +121,13 @@ fi
omi_configure_quals="${enable_debug} ${enable_purify_agent} ${enable_purify_server} ${enable_omi_tools} ${omi_configure_quals}"
pal_configure_quals="${enable_debug}"

if [ "$ULINUX" -eq 1 -a "$opensource_distro" -eq 1 ]; then
echo "*** ULINUX not permitted for open source distributions; ULINUX disabled ***"
ULINUX=0
fi

if [ "$opensource_distro" -eq 1 ]; then
# We really don't want ULINUX, not even defaulted
NOULINUX=1
fi

# See if we're running on a SuSE 10 (universal) system; if so, assume ULINUX
if [ "$NOULINUX" != "1" ]; then
if [ -e /etc/SuSE-release ]; then
PF_MAJOR=`head -n 1 /etc/SuSE-release | sed 's/.* \([0-9][0-9]*\)[ \.].*/\1/'`
PF_MINOR=`(head -n 1 /etc/SuSE-release | sed 's/.* [0-9][0-9]*[\.]\([0-9][0-9]*\).*/\1/') | grep -v '[^0-9]' || echo '0'`
if [ "$PF_MAJOR" = "10" -a "$PF_MINOR" = "0" ]; then
ULINUX=1
fi
fi
fi

# Note: Most of this code came from the PAL configure file

set_ulinux_pf()
{
PF_MAJOR=1
PF_MINOR=0
PF_DISTRO=ULINUX
PF_DISTRO_ULINUX_D=`[ -e /usr/bin/dpkg ] && echo 1`
if [ -n "$PF_DISTRO_ULINUX_D" ]; then
PF_DISTOR_ULINUX_R=
BUILD_DPKG=1
PKG_SUFFIX=deb
else
PF_DISTRO_ULINUX_R=`[ -e /usr/bin/rpmbuild ] && echo 1`
BUILD_RPM=1
fi
}

uname=`uname`
Expand Down Expand Up @@ -226,19 +167,15 @@ case $uname in
case `uname -m` in
*64*)
PF_ARCH=x64
ARCH=x64
;;
*86*)
PF_ARCH=x86
ARCH=ia32
;;
*athlon*)
PF_ARCH=x86
ARCH=ia32
;;
*)
PF_ARCH=UNKNOWN
ARCH=UNKNOWN
;;
esac

Expand Down Expand Up @@ -267,7 +204,6 @@ PF=$PF
PF_MAJOR=$PF_MAJOR
PF_MINOR=$PF_MINOR
PF_ARCH=$PF_ARCH
ARCH=$ARCH
PF_WIDTH=$PF_WIDTH
PF_DISTRO=$PF_DISTRO
ULINUX=$ULINUX
Expand Down
Loading