Revert "Revert "avoid running SharedMemoryTest when POCO_NO_SHAREDMEMORY is defined.""

This reverts commit e1c0db371d.
This commit is contained in:
FrancisANDRE 2015-11-10 14:19:06 +01:00
parent e1c0db371d
commit 603e43ee7d
13 changed files with 468 additions and 59 deletions

View File

@ -9,7 +9,6 @@
// SPDX-License-Identifier: BSL-1.0
//
#include "SharedMemoryTest.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h"
@ -35,7 +34,7 @@ SharedMemoryTest::~SharedMemoryTest()
void SharedMemoryTest::testCreate()
{
SharedMemory mem("hi", 4096, SharedMemory::AM_WRITE);
assert (mem.end()-mem.begin() == 4096);
assert (mem.end()- mem.begin() == 4096);
mem.begin()[0] = 'A';
mem.end()[-1] = 'Z';
}
@ -89,8 +88,9 @@ CppUnit::Test* SharedMemoryTest::suite()
{
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SharedMemoryTest");
#if !defined(POCO_NO_SHAREDMEMORY)
CppUnit_addTest(pSuite, SharedMemoryTest, testCreate);
CppUnit_addTest(pSuite, SharedMemoryTest, testCreateFromFile);
#endif
return pSuite;
}

View File

@ -16,11 +16,13 @@
#include "Poco/TimedNotificationQueue.h"
#include "Poco/Notification.h"
#include "Poco/Timestamp.h"
#include "Poco/Clock.h"
using Poco::TimedNotificationQueue;
using Poco::Notification;
using Poco::Timestamp;
using Poco::Clock;
namespace
@ -71,13 +73,13 @@ void TimedNotificationQueueTest::testDequeue()
assert (queue.size() == 0);
pNf->release();
Poco::Timestamp ts1;
Poco::Clock ts1;
ts1 += 100000;
Poco::Timestamp ts2;
Poco::Clock ts2;
ts2 += 200000;
Poco::Timestamp ts3;
Poco::Clock ts3;
ts3 += 300000;
Poco::Timestamp ts4;
Poco::Clock ts4;
ts4 += 400000;
queue.enqueueNotification(new QTestNotification("first"), ts1);

View File

@ -22,6 +22,36 @@ endif
LIBPREFIX ?= lib
#
# Determine OS
#
POCO_HOST_OSNAME = $(shell uname)
ifeq ($(findstring CYGWIN,$(POCO_HOST_OSNAME)),CYGWIN)
ifeq ($(findstring x86_64,$(POCO_HOST_OSNAME)),x86_64)
OSARCH_64BITS = 1
endif
POCO_HOST_OSNAME = Cygwin
endif
ifeq ($(findstring MINGW,$(POCO_HOST_OSNAME)),MINGW)
POCO_HOST_OSNAME = MinGW
endif
POCO_HOST_OSARCH ?= $(subst /,-,$(shell uname -m | tr ' ' _))
#
# Determine operating system
#
ifndef POCO_TARGET_OSNAME
OSNAME := $(POCO_HOST_OSNAME)
else
OSNAME := $(POCO_TARGET_OSNAME)
endif
ifndef POCO_TARGET_OSARCH
OSARCH := $(POCO_HOST_OSARCH)
else
OSARCH := $(POCO_TARGET_OSARCH)
endif
.PHONY: poco all libexecs cppunit tests samples cleans clean distclean install
# TESTS and SAMPLES are set in config.make
@ -49,8 +79,12 @@ install: libexecs
find $(POCO_BUILD)/$$comp/bin -perm -700 -type f -exec cp -f {} $(INSTALLDIR)/bin \; ; \
fi ; \
done
find $(POCO_BUILD)/lib -name "$(LIBPREFIX)Poco*" -type f -exec cp -f {} $(INSTALLDIR)/lib \;
find $(POCO_BUILD)/lib -name "$(LIBPREFIX)Poco*" -type l -exec cp -Rf {} $(INSTALLDIR)/lib \;
ifeq ($(OSNAME), Cygwin)
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "cygPoco*" -type f -exec cp -f {} $(INSTALLDIR)/bin \;
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "cygPoco*" -type l -exec cp -Rf {} $(INSTALLDIR)/bin \;
endif
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "libPoco*" -type f -exec cp -f {} $(INSTALLDIR)/lib \;
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "libPoco*" -type l -exec cp -Rf {} $(INSTALLDIR)/lib \;
libexecs = Foundation-libexec XML-libexec JSON-libexec Util-libexec Net-libexec Crypto-libexec NetSSL_OpenSSL-libexec Data-libexec Data/SQLite-libexec Data/ODBC-libexec Data/MySQL-libexec MongoDB-libexec Zip-libexec PageCompiler-libexec PageCompiler/File2Page-libexec CppParser-libexec PDF-libexec
tests = Foundation-tests XML-tests JSON-tests Util-tests Net-tests Crypto-tests NetSSL_OpenSSL-tests Data-tests Data/SQLite-tests Data/ODBC-tests Data/MySQL-tests MongoDB-tests Zip-tests CppParser-tests PDF-tests

View File

@ -32,6 +32,7 @@
<options>
${Includes},
-I/usr/local/mysql/include,
-I/usr/include/mysql,
-D_DEBUG,
-E,
-C,

View File

@ -33,6 +33,7 @@
<options>
${Includes},
-I/usr/local/mysql/include,
-I/usr/include/mysql,
-D_DEBUG,
-E,
-C,

View File

@ -3,7 +3,7 @@
#
# CYGWIN
#
# Make settings for Cygwin on WinXP/gcc 3.4
# Make settings for Cygwin
#
#
@ -36,15 +36,19 @@ LIBPREFIX = cyg
SHAREDLIBEXT = .$(target_version).dll
SHAREDLIBLINKEXT = .dll
IMPPREFIX = lib
IMPLIBEXT = -$(target_version).dll.a
IMPLIBLINKEXT = .dll.a
#
# Compiler and Linker Flags
#
CFLAGS =
CFLAGS32 =
CFLAGS64 =
CXXFLAGS = -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY
CFLAGS32 = -O2 -pipe -Wimplicit-function-declaration
CFLAGS64 = -Wa,-mbig-obj
CXXFLAGS = -O2 -pipe -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_SHAREDMEMORY
CXXFLAGS32 =
CXXFLAGS64 =
CXXFLAGS64 = -Wa,-mbig-obj
LINKFLAGS =
LINKFLAGS32 =
LINKFLAGS64 =
@ -52,8 +56,8 @@ STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
SHAREDOPT_CC =
SHAREDOPT_CXX =
SHAREDOPT_LINK =
SHAREDOPT_CXX = -frepo
SHAREDOPT_LINK = -frepo
DEBUGOPT_CC = -g -D_DEBUG
DEBUGOPT_CXX = -g -D_DEBUG
DEBUGOPT_LINK = -g
@ -66,6 +70,11 @@ RELEASEOPT_LINK =
#
SYSFLAGS = -D_XOPEN_SOURCE=500
# give visibility of old BSD typedef like u_short, u_int, u_long...
# used in some networking system includes, need when using PocoNet
SYSFLAGS += -D__BSD_VISIBLE
#
# System Specific Libraries
#

View File

@ -33,35 +33,35 @@ $(OBJPATH_RELEASE_STATIC) $(OBJPATH_DEBUG_STATIC) $(OBJPATH_RELEASE_SHARED) $(OB
#
# Rules for compiling
#
$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(debug, static)"
$(CXX) $(INCLUDE) $(CXXFLAGS) $(DEBUGOPT_CXX) $(STATICOPT_CXX) -c $< -o $@
$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(release, static)"
$(CXX) $(INCLUDE) $(CXXFLAGS) $(RELEASEOPT_CXX) $(STATICOPT_CXX) -c $< -o $@
$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
$(OBJPATH_DEBUG_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(debug, static)"
$(CC) $(INCLUDE) $(CFLAGS) $(DEBUGOPT_CC) $(STATICOPT_CC) -c $< -o $@
$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
$(OBJPATH_RELEASE_STATIC)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(release, static)"
$(CC) $(INCLUDE) $(CFLAGS) $(RELEASEOPT_CC) $(STATICOPT_CC) -c $< -o $@
$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(debug, shared)"
$(CXX) $(INCLUDE) $(CXXFLAGS) $(DEBUGOPT_CXX) $(SHAREDOPT_CXX) -c $< -o $@
$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d
$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.cpp $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(release, shared)"
$(CXX) $(INCLUDE) $(CXXFLAGS) $(RELEASEOPT_CXX) $(SHAREDOPT_CXX) -c $< -o $@
$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
$(OBJPATH_DEBUG_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(debug, shared)"
$(CC) $(INCLUDE) $(CFLAGS) $(DEBUGOPT_CC) $(SHAREDOPT_CC) -c $< -o $@
$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d
$(OBJPATH_RELEASE_SHARED)/%.o: $(SRCDIR)/%.c $(DEPPATH)/%.d $(POCO_BASE)/build/config/$(POCO_CONFIG)
@echo "** Compiling" $< "(release, shared)"
$(CC) $(INCLUDE) $(CFLAGS) $(RELEASEOPT_CC) $(SHAREDOPT_CC) -c $< -o $@

View File

@ -11,8 +11,10 @@
#
ifdef target_version
SHL_EXT = $(SHAREDLIBEXT)
IMP_EXT = $(IMPLIBEXT)
else
SHL_EXT = $(SHAREDLIBLINKEXT)
IMP_EXT = $(IMPLIBLINKEXT)
endif
LIB_RELEASE_STATIC = $(LIBPATH)/$(LIBPREFIX)$(target)$(OSARCH_POSTFIX).a
@ -22,6 +24,11 @@ LIB_DEBUG_SHARED = $(LIBPATH)/$(LIBPREFIX)$(target)d$(OSARCH_POSTFIX)$(SH
LIB_RELEASE_SHARED_LINK = $(LIBPATH)/$(LIBPREFIX)$(target)$(OSARCH_POSTFIX)$(SHAREDLIBLINKEXT)
LIB_DEBUG_SHARED_LINK = $(LIBPATH)/$(LIBPREFIX)$(target)d$(OSARCH_POSTFIX)$(SHAREDLIBLINKEXT)
IMP_RELEASE_SHARED = $(LIBPATH)/$(IMPPREFIX)$(target)$(OSARCH_POSTFIX)$(IMP_EXT)
IMP_DEBUG_SHARED = $(LIBPATH)/$(IMPPREFIX)$(target)d$(OSARCH_POSTFIX)$(IMP_EXT)
IMP_RELEASE_SHARED_LINK = $(LIBPATH)/$(IMPPREFIX)$(target)$(OSARCH_POSTFIX)$(IMPLIBLINKEXT)
IMP_DEBUG_SHARED_LINK = $(LIBPATH)/$(IMPPREFIX)$(target)d$(OSARCH_POSTFIX)$(IMPLIBLINKEXT)
TARGET_LIBS_DEBUG = $(foreach l,$(target_libs),-l$(l)d$(OSARCH_POSTFIX))
TARGET_LIBS_RELEASE = $(foreach l,$(target_libs),-l$(l)$(OSARCH_POSTFIX))
@ -62,12 +69,18 @@ $(LIB_RELEASE_STATIC): $(foreach o,$(objects),$(OBJPATH_RELEASE_STATIC)/$(o).o)
$(LIB_DEBUG_SHARED): $(foreach o,$(objects),$(OBJPATH_DEBUG_SHARED)/$(o).o)
@echo "** Building shared library (debug)" $@
$(SHLIB) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_DEBUG) $(SYSLIBS)
ifeq ($(OSNAME), CYGWIN)
$(SHLIBLN) $(IMP_DEBUG_SHARED) $(IMP_DEBUG_SHARED_LINK)
endif
$(SHLIBLN) $(LIB_DEBUG_SHARED) $(LIB_DEBUG_SHARED_LINK)
$(postbuild)
$(LIB_RELEASE_SHARED): $(foreach o,$(objects),$(OBJPATH_RELEASE_SHARED)/$(o).o)
@echo "** Building shared library (release)" $@
$(SHLIB) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_RELEASE) $(SYSLIBS)
ifeq ($(OSNAME), CYGWIN)
$(SHLIBLN) $(IMP_RELEASE_SHARED) $(IMP_RELEASE_SHARED_LINK)
endif
$(SHLIBLN) $(LIB_RELEASE_SHARED) $(LIB_RELEASE_SHARED_LINK)
$(STRIPCMD)
$(postbuild)

View File

@ -4,24 +4,59 @@
#
# A script for running the POCO testsuites.
#
# usage: runtests
# usage: runtests [component [test] ]
#
# If the environment variable EXCLUDE_TESTS is set, containing
# a space-separated list of project names (as found in the
# components file), these tests will be skipped.
#
# Cygwin specific setup.
# ----------------------
# On Cygwin, Unix IPC are provided by a separate process daemon
# named cygserver, which should be started once before running any
# test from Foundation.
# 1/ Open a separate Cygwin terminal with Administrator privilege
# 2/ run the command: cygserver-configure
# 3/ Start the cygserver: nohup /usr/sbin/cygserver &
# 4/ close the separate terminal
# 5/ run the Foundation tests: build/script/runtests.sh Foundation
#
if [ "$POCO_BASE" = "" ] ; then
POCO_BASE=`pwd`
fi
TESTRUNNER=./testrunner
TESTRUNNERARGS=-all
components=`cat $POCO_BASE/components`
if [ "$OSNAME" = "" ] ; then
OSNAME=`uname`
if [ "$1" = "" ] ; then
components=`cat $POCO_BASE/components`
else
components=$1
fi
if [ "$2" = "" ] ; then
TESTRUNNERARGS=-all
else
TESTRUNNERARGS=$2
fi
if [ "$OSARCH" = "" ] ; then
OSARCH=`uname -m | tr ' /' _-`
fi
if [ "$OSNAME" = "" ] ; then
OSNAME=`uname`
case $OSNAME in
CYGWIN*)
OSNAME=CYGWIN
TESTRUNNER=$TESTRUNNER.exe
PATH=$POCO_BASE/lib/$OSNAME/$OSARCH:$PATH
;;
MINGW*)
OSNAME=MinGW ;;
esac
fi
BINDIR="bin/$OSNAME/$OSARCH/"
runs=0
@ -44,14 +79,14 @@ do
echo ""
echo ""
echo "****************************************"
echo "*** $comp"
echo "*** $OSNAME $OSARCH $comp"
echo "****************************************"
echo ""
runs=`expr $runs + 1`
sh -c "cd $POCO_BASE/$comp/testsuite/$BINDIR && $TESTRUNNER $TESTRUNNERARGS"
sh -c "cd $POCO_BASE/$comp/testsuite/$BINDIR && LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH $TESTRUNNER $TESTRUNNERARGS"
if [ $? -ne 0 ] ; then
failues=`expr $failures + 1`
failures=`expr $failures + 1`
failedTests="$failedTests $comp"
status=1
fi

View File

@ -48,19 +48,23 @@ if(MSVC)
else(MSVC)
# Other compilers then MSVC don't have a static STATIC_POSTFIX at the moment
set(STATIC_POSTFIX "" CACHE STRING "Set static library postfix" FORCE)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
endif(MSVC)
# Add a d postfix to the debug libraries
if(POCO_STATIC)
set(CMAKE_DEBUG_POSTFIX "${STATIC_POSTFIX}d" CACHE STRING "Set Debug library postfix" FORCE)
set(CMAKE_RELEASE_POSTFIX "${STATIC_POSTFIX}" CACHE STRING "Set Release library postfix" FORCE)
set(CMAKE_MINSIZEREL_POSTFIX "${STATIC_POSTFIX}" CACHE STRING "Set MinSizeRel library postfix" FORCE)
set(CMAKE_RELWITHDEBINFO_POSTFIX "${STATIC_POSTFIX}d" CACHE STRING "Set RelWithDebInfo library postfix" FORCE)
set(CMAKE_RELWITHDEBINFO_POSTFIX "${STATIC_POSTFIX}" CACHE STRING "Set RelWithDebInfo library postfix" FORCE)
else(POCO_STATIC)
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Set Debug library postfix" FORCE)
set(CMAKE_RELEASE_POSTFIX "" CACHE STRING "Set Release library postfix" FORCE)
set(CMAKE_MINSIZEREL_POSTFIX "" CACHE STRING "Set MinSizeRel library postfix" FORCE)
set(CMAKE_RELWITHDEBINFO_POSTFIX "d" CACHE STRING "Set RelWithDebInfo library postfix" FORCE)
set(CMAKE_RELWITHDEBINFO_POSTFIX "" CACHE STRING "Set RelWithDebInfo library postfix" FORCE)
endif()
@ -72,23 +76,28 @@ if(WIN32)
add_definitions( -DPOCO_OS_FAMILY_WINDOWS -DUNICODE -D_UNICODE -D__LCC__) #__LCC__ define used by MySQL.h
endif(WIN32)
if (UNIX AND NOT ANDROID )
add_definitions( -DPOCO_OS_FAMILY_UNIX )
# Standard 'must be' defines
if (APPLE)
add_definitions( -DPOCO_HAVE_IPv6 -DPOCO_NO_STAT64)
set(SYSLIBS dl)
else (APPLE)
add_definitions( -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 )
if (QNX)
add_definitions( -DPOCO_HAVE_FD_POLL)
set(SYSLIBS m socket)
else (QNX)
add_definitions( -D_XOPEN_SOURCE=500 -DPOCO_HAVE_FD_EPOLL)
set(SYSLIBS pthread dl rt)
endif (QNX)
endif (APPLE)
endif(UNIX AND NOT ANDROID )
if (CYGWIN)
add_definitions(-DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING)
add_definitions(-D_XOPEN_SOURCE=500 -D__BSD_VISIBLE)
else (CYGWIN)
if (UNIX AND NOT ANDROID )
add_definitions( -DPOCO_OS_FAMILY_UNIX )
# Standard 'must be' defines
if (APPLE)
add_definitions( -DPOCO_HAVE_IPv6 -DPOCO_NO_STAT64)
set(SYSLIBS dl)
else (APPLE)
add_definitions( -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 )
if (QNX)
add_definitions( -DPOCO_HAVE_FD_POLL)
set(SYSLIBS m socket)
else (QNX)
add_definitions( -D_XOPEN_SOURCE=500 -DPOCO_HAVE_FD_EPOLL)
set(SYSLIBS pthread dl rt)
endif (QNX)
endif (APPLE)
endif(UNIX AND NOT ANDROID )
endif (CYGWIN)
if (CMAKE_SYSTEM MATCHES "SunOS")
add_definitions( -DPOCO_OS_FAMILY_UNIX )
@ -102,10 +111,6 @@ if (CMAKE_COMPILER_IS_MINGW)
add_definitions(-D_WIN32 -DMINGW32 -DWINVER=0x500 -DODBCVER=0x0300 -DPOCO_THREAD_STACK_SIZE)
endif (CMAKE_COMPILER_IS_MINGW)
if (CYGWIN)
# add_definitions(-DWC_NO_BEST_FIT_CHARS=0x400 -DPOCO_WIN32_UTF8)
endif (CYGWIN)
# SunPro C++
if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
add_definitions( -D_BSD_SOURCE -library=stlport4)

284
poco.cygport.txt Normal file
View File

@ -0,0 +1,284 @@
# poco.cygport
NAME="poco"
VERSION=1.6.1
RELEASE=1
SUMMARY="A set of C++ class libraries for network-centric applications."
DESCRIPTION="The POCO C++ Libraries (POCO stands for POrtable COmponents) are open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++. The POCO C++ Libraries are built strictly on standard ANSI/ISO C++, including the standard library."
CATEGORY="Devel"
MAJOR_VERSION="${VERSION/p[0-9]*/}"
HOMEPAGE="http://pocoproject.org/"
SRC_URI="http://pocoproject.org/releases/poco-${MAJOR_VERSION}/poco-${VERSION}-all.tar.bz2
http://pocoproject.org/releases/poco-${MAJOR_VERSION}/poco-${VERSION}-all-doc.tar.gz"
SRC_DIR="poco-${VERSION}-all"
#############################################################################
# Determine the POCO library version. This is contained in the 'libversion'
# file in the sources - but we might not have downloaded those yet. So get
# the library version number direct from github.
LIBRARY_VERSION=$(wget --quiet --no-check-certificate --output-document=- https://raw.github.com/pocoproject/poco/poco-${VERSION}-release/libversion)
#############################################################################
#############################################################################
# This cygport file produces four packages: the main 'libpoco' package
# contains the binaries necessary to run applications built with the POCO
# library; 'libpoco-devel' contains the header files and libs necessary to
# build applications that use the POCO library; 'libpoco-doc' contains the
# documentation for the POCO API in HTML format; 'poco' contains the
# PageCompiler component.
PKG_NAMES="poco libpoco${LIBRARY_VERSION} libpoco-devel libpoco-doc"
#############################################################################
#############################################################################
# Details for the 'poco' package.
poco_CONTENTS="--exclude=html usr/bin/*.exe usr/share"
poco_SUMMARY="The PageCompiler POCO component."
poco_DESCRIPTION="${DESCRIPTION} This package contains the PageCompiler component of POCO."
poco_CATEGORY="Devel"
#############################################################################
#############################################################################
# Details for the main 'libpoco' package.
declare libpoco${LIBRARY_VERSION}_SUMMARY="A set of C++ class libraries for network-centric applications."
declare libpoco${LIBRARY_VERSION}_DESCRIPTION="${DESCRIPTION}"
declare libpoco${LIBRARY_VERSION}_CATEGORY="Devel"
declare libpoco${LIBRARY_VERSION}_CONTENTS="usr/bin/*.dll"
#############################################################################
#############################################################################
# Details for the 'libpoco-devel' package. Note that POCO provides versions
# of expat, zlib, sqlite3 and pcre, but we delete these and use the
# equivalent Cygwin libraries. Hence the 'libpoco-devel' package has a
# couple of extra '-devel' dependencies.
libpoco_devel_SUMMARY="Headers for developing programs that will use POCO."
libpoco_devel_DESCRIPTION="${DESCRIPTION} This package contains the header files needed for developing POCO applications."
libpoco_devel_CATEGORY="Devel"
libpoco_devel_REQUIRES="libexpat-devel zlib-devel"
libpoco_devel_CONTENTS="usr/include usr/lib"
#############################################################################
#############################################################################
# Details for the 'libpoco-doc' package. This contains the documentation from
# the 'doc' source package. This is unaltered, and will contain documentation
# for any POCO libraries that aren't built due to missing dependencies.
libpoco_doc_SUMMARY="The POCO API reference documentation."
libpoco_doc_DESCRIPTION="${DESCRIPTION} This is the complete POCO class library reference documentation in HTML format."
libpoco_doc_CATEGORY="Devel"
libpoco_doc_CONTENTS="usr/share/doc/poco/html"
#############################################################################
#############################################################################
# Remove the versions of expat, zlib, sqlite3 and pcre that come bundled with
# POCO. We compile and link against the corresponding Cygwin packages
# instead.
DISTCLEANFILES="
Foundation/include/Poco/zconf.h
Foundation/include/Poco/zlib.h
Foundation/src/adler32.c
Foundation/src/compress.c
Foundation/src/crc32.c
Foundation/src/crc32.h
Foundation/src/deflate.c
Foundation/src/deflate.h
Foundation/src/gzguts.h
Foundation/src/infback.c
Foundation/src/inffast.c
Foundation/src/inffast.h
Foundation/src/inffixed.h
Foundation/src/inflate.c
Foundation/src/inflate.h
Foundation/src/inftrees.c
Foundation/src/inftrees.h
Foundation/src/MSG00001.bin
Foundation/src/pcre_*.c
Foundation/src/trees.c
Foundation/src/trees.h
Foundation/src/zconf.h
Foundation/src/zlib.h
Foundation/src/zutil.c
Foundation/src/zutil.h
Data/SQLite/src/sqlite3.c
Data/SQLite/src/sqlite3.h
XML/include/Poco/XML/expat.h
XML/include/Poco/XML/expat_external.h
XML/src/ascii.h
XML/src/asciitab.h
XML/src/expat_config.h
XML/src/iasciitab.h
XML/src/internal.h
XML/src/latin1tab.h
XML/src/nametab.h
XML/src/utf8tab.h
XML/src/xmlparse.cpp
XML/src/xmlrole.c
XML/src/xmlrole.h
XML/src/xmltok.c
XML/src/xmltok.h
XML/src/xmltok_impl.c
XML/src/xmltok_impl.h
XML/src/xmltok_ns.c
"
#############################################################################
#############################################################################
# Patches. These are as follows:
#
# - 1.4.6p1-unbundled.patch - This forces POCO to use the expat, pcre,
# sqlite3 and zlib libraries that come with Cygwin, rather than the
# versions that are bundled with the POCO source code.
#
# - 1.4.7-test-dequeue.patch - Ensures that 'testDequeue' uses a consistent
# time source for all its computations.
#
# - 1.5.3-data-odbc.patch - This builds the Data/ODBC component of POCO
# with the iODBC library.
#
# - 1.6.0-pcre-unbundled.patch - POCO comes bundled with its own version
# of pcre.h, which is slightly different from the one in libpcre-devel,
# even though they are the same version. Hence, when POCO is built in
# unbundled form, these differences result in compilation errors
# concerning conflicting types. This patch corrects those problems.
#
# The 'unbundled' patch comes from the Fedora port of poco-1.4.2; the other
# patches are specific to Cygwin.
PATCH_URI="
1.4.6p1-unbundled.patch
1.4.7-test-dequeue.patch
1.5.3-data-odbc.patch
1.6.0-pcre-unbundled.patch
"
#############################################################################
src_compile() {
# In the declaration of LIBRARY_VERSION above, we guessed a value
# based on a file fetched from github. We need to check that the
# value we guessed is correct, and abort if it isn't.
local libversion=$(cat "${S}/libversion")
if [ "${LIBRARY_VERSION}" != "${libversion}" ]; then
error "Library version determined from github is '${LIBRARY_VERSION}', but version number in the local sources is '${libversion}'."
fi
lndirs
cd ${B}
./configure --prefix=/usr --unbundled --no-samples
cygmake CC="${CC}" CXX="${CXX}" AR="${AR}" RANLIB="${RANLIB}" \
STRIP=/usr/bin/true CFLAGS="${CFLAGS}" \
CXXFLAGS="${CXXFLAGS} -DSQLITE_THREADSAFE=1 -frepo" \
LINKMODE=SHARED DEFAULT_TARGET=shared_release
}
src_install() {
# Invoke 'make install'. Note that the runtime libraries are not
# installed by default, so we copy those in using the 'dobin'
# command.
cd ${B}
dobin lib/CYGWIN/$(uname -m)/*.${LIBRARY_VERSION}.dll
cyginstall LINKMODE=SHARED DEFAULT_TARGET=shared_release
# Rename library files.
pushd ${D}/usr/lib
for file in libPoco*.dll.a
do
mv "${file}" "${file/${LIBRARY_VERSION}./}"
done
popd
# Install POCO documentation.
local doc_dir=${D}/usr/share/doc/poco
mkdir -p "${doc_dir}"
cp -pr "${S}/../poco-${VERSION}-all-doc" "${doc_dir}"
mv "${doc_dir}/poco-${VERSION}-all-doc" "${doc_dir}/html"
}
src_test() {
# The code for some of Poco's events uses semaphores, which requires
# cygserver. Ensure that the 'cygserver' service exists.
if [ "0" == "$(cygrunsrv --list | grep -i cygserver | wc -l)" ]; then
cygserver-config --yes
fi
# Get the name of the 'cygserver' service. By default, this will be
# 'cygserver', but there is some debate about postfixing this with
# '-32' or '-64' for the different architectures. The line below
# should work it out.
local cygserver=$(cygrunsrv --list | grep -i cygserver | head --lines=1)
# If the 'cygserver' service isn't running then start it now.
local cygsvrstate=$(cygrunsrv -Q "${cygserver}" | grep -i 'current state' | sed 's/\s//g' | cut -d ':' -f 2)
if [ "${cygsvrstate}" != "Running" ]; then
cygrunsrv -S "${cygserver}"
fi
# Most of these test harnesses run cleanly. However, please note the
# following:
#
# - Foundation: Test 'testFileAttributes3' accesses '/dev/console',
# which fails if the test is run from mintty. The test passes if
# you start Cygwin from the 'cygwin.bat' batch file.
#
# - Data/MySQL: Requires a MySQL server to be running locally:
#
# mysql_install_db
# pushd /usr
# /usr/bin/mysqld_safe &
# popd
#
# You will need to create a user 'test' with password 'test':
#
# mysql --host=localhost --user=root --password= -e \
# "CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';"
#
# Then all the MySQL tests will pass.
#
# - Net: 'testHostByName' fails, but this also fails when POCO is
# built for Win32 using MSVC++ 2008. So this is probably a
# malformed test rather than a Cygwin problem.
#
# - NetSSL_OpenSSL: There are two tests called 'testProxy', and
# both fail. However, these tests also fail when POCO is built
# for Fedora 18, so this is probably a malformed test rather than
# a Cygwin problem.
#
# - Crypto: 'testCertificate' fails when built against newer
# versions of OpenSSL. However, this test also fails when POCO is
# built for Fedora 21, so it is unlikely to be a Cygwin problem.
#
# - Data/ODBC: This testsuite requires a number of ODBC drivers,
# some of which are available for Cygwin. Sadly, I have been
# unable to get iodbc working under Cygwin, either through the
# 'myodbc-installer' or by creating an 'odbc.ini' file and using
# 'iodbctest'. Hence I have been unable to run this testsuite.
#
# All other tests pass.
local arch=$(uname -m)
export PATH="${B}/lib/CYGWIN/${arch}:${PATH}"
export POCO_BASE="${B}"
# export CYGWIN="${CYGWIN} error_start=gdb -nw %1 %2"
local components=$(cat "${S}/components" | xargs)
for component in ${components}; do
if [ -d "${B}/${component}/testsuite/bin/CYGWIN/${arch}" ]; then
pushd "${B}/${component}/testsuite/bin/CYGWIN/${arch}"
if [ -f testrunner.exe ]; then
inform "Running ${component} tests..."
./testrunner -all || /usr/bin/true
fi
popd
fi
done
# If we started the 'cygserver' service above then stop it now.
if [ "${cygsvrstate}" != "Running" ]; then
cygrunsrv -E "${cygserver}"
fi
}

View File

@ -14,6 +14,13 @@
# usage: mkdoc [-l <perforce-label>] [<specfile>]
#
osname=`uname -s | tr ' ' '_'`
osarch=`uname -m | tr ' ' '_'`
if [ ${osname:0:6} = "CYGWIN" ] ; then
osname="CYGWIN"
fi
if [ "$POCO_BASE" = "" ] ; then
echo "Error: POCO_BASE not set."
exit 1
@ -59,6 +66,14 @@ if [ "$version" = "" ] ; then
fi
release=$version$tag
if [ ! -f libversion ] ; then
echo "Error: No libversion file found."
exit 2
fi
if [ "$libversion" = "" ] ; then
read libversion <$POCO_BASE/libversion
fi
#
# Build release
#
@ -74,16 +89,25 @@ cd $tools
./configure --no-tests --no-samples
make -s -j8
cd $POCO_BASE
if [ $osname = "CYGWIN" ] ; then
find $tools -type f -name "*.$libversion.dll" > $TMP/dlls
rebase -O -T $TMP/dlls
rm $TMP/dlls
fi
osname=`uname -s | tr ' ' '_'`
osarch=`uname -m | tr ' ' '_'`
cd $POCO_BASE
if [ $osname = "Darwin" ] ; then
archpath=`dirname stage/tools/PocoDoc/bin/Darwin/*/PocoDoc`
osarch=`basename $archpath`
fi
if [ $osname = "CYGWIN" ] ; then
# Poco dlls must be on PATH for Cygwin
export PATH=$tools/lib/$osname/$osarch:$PATH
fi
export PATH=$tools/PocoDoc/bin/$osname/$osarch:$PATH
echo PATH=$PATH

View File

@ -123,6 +123,7 @@ echo "PocoDoc.output=$docPath" >>$build/PocoDoc.ini
echo "PocoDoc.version=$docVersion" >> $build/PocoDoc.ini
echo "Includes=$includes" >> $build/PocoDoc.ini
echo "PocoDoc --config=$docConfig --config=$build/PocoDoc.ini"
PocoDoc --config=$docConfig --config=$build/PocoDoc.ini
cd $dist