mirror of
https://github.com/pocoproject/poco.git
synced 2025-02-24 15:26:52 +01:00
285 lines
11 KiB
Plaintext
285 lines
11 KiB
Plaintext
# 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
|
|
}
|