[fdo-dev] fdo and fdocore

Greg Boone greg.boone at autodesk.com
Tue Jul 4 18:34:52 EDT 2006


You may also wish to read the OpenSourceBuild__README.txt file located
in the root of the fdocore Subversion. This file also contains some
information that may be useful in your efforts to build FDO and the

While the fdocore.osgeo.org subproject contains source code for the FDO
API, the fdo[ProviderName].osgeo.org projects contain the source code
for each provider. The web sites for these projects contain minimal
documentation at this point and users are expected to gain access to
these subprojects primarily through the fdo.osgeo.org site. It is my
expectation that not users will be given access to all providers but
that access will be given on an as needed basis.

Each provider subproject is setup in a similar manner with the source
code being organized....


The inclusion of Providers at the top of the source code tree was not
absolutely required but was done to maintain a visual link with the
source in fdocore and encourage the location of provider code in a
directory structure that intertwined with fdocore. In this manner the
fdocore build scripts can be used to build the providers as well. Using
the checkoutsvn script is an easy means of correctly setting up the
proper directory structure. 

For building purposes, each provider under .../Provides/[ProviderName]
has a separate configure build script and a version of build.bat and
build_linux.sh that is specific to that provider. These scripts can be
called directly. If these scripts are called directly, ensure that the
following environment variables are set as outlined in the fdocore
setenvironment script:


NOTE that build_linux.sh is a helper script that assists developers to
build the FDO components on Linux. We have many components in the FDO
architecture and building them all was getting somewhat tedious using
straight calls to configure and make. We also found that some developers
were not interested in building all components or were only interested
in building a subset of the components. 

The implementation of build_linux.sh script in essence calls...
    libtoolize --force
    automake --add-missing --copy
    make install

...for the fdocore components as well as the set of FDO providers that
are currently supported on the OSGeo site. NOTE that building GDAL
through the top level fdocore build_linux.sh script has not yet been

Regarding the unit tests, the tests located in .../Fdo/UnitTest have
been developed exclusively for the FDO API. These tests do not apply to

Each Provider will have their unit tests located under
.../Providers/[ProviderName]/Src/UnitTest. The unit tests for GDAL are
located under .../Providers/GDAL/Src/UnitTest

If test data is required for the unit tests to run, the test data will
be located under .../Providers/[ProviderName]/TestData. The test data
for the GDAL provider are located under .../Providers/GDAL/TestData.

For Linux, ensure that make install is run for the provider you are
testing so that all binaries are installed in the default install
directory /usr/local/fdo-3.2.0/lib.

All unit tests are build on a cppunit framework. New test can be added
by deriving the unit tests classes from the correct base class and
calling the appropriate macros. Use the existing unit tests as examples
of how new tests can be added. However, I have run the existing unit
tests for GDAL and noticed a few errors. I would recommend debugging and
correcting these errors as a means of leaning how the unit test
framework is establish and how it can be extended. 

These two email have been a general overview on the structure of the fdo
subprojects. I am sure that you will have additional questions....


-----Original Message-----
From: Greg Boone 
Sent: Tuesday, July 04, 2006 2:52 PM
To: 'dev at fdo.osgeo.org'
Cc: Donald Cameron
Subject: RE: [fdo-dev] fdo and fdocore


build -- builds the FDO API and all Providers on Windows. Executing this
script with no arguments will build Fdo, Utilities and all Provider
retrieved by the checkoutsvn script. 

build_linux -- builds the FDO API and all Providers on Linux. Executing
this script with no arguments will build Fdo, Utilities and all Provider
retrieved by the checkoutsvn script.


-----Original Message-----
From: Greg Boone 
Sent: Tuesday, July 04, 2006 2:49 PM
To: 'dev at fdo.osgeo.org'
Cc: Donald Cameron
Subject: RE: [fdo-dev] fdo and fdocore

Hi Mateusz,

Please bear with me. I will attempt to provide some background
information over a number of responses.

NOTE: The OSGeo FDO project is currently not a Live project. It is
*scheduled* to go live towards the end of July. The site is currently
under development with a number of changes being made to the look and
feel of the site as well as source code content found on the site.
Please be patient as we work towards getting the site up and running. 

Feature Data Objects (FDO) is an API for manipulating, defining, and
analyzing geospatial information. FDO uses a provider (or driver) based
model for supporting a variety of geospatial data sources, where each
provider typically supports a particular data format or data store.
Providers exist for accessing data stored in RDBMS formats such as MySQL
or from file formats such as Shape. 

To start using FDO, I strongly recommend reading...

The Essential FDO:


FDO Developers Guide:


NOTE: We are also working on a 'How to Build FDO' document that will
assist users in the specific issues involved with building the various
components within the FDO architecture. 

The FDO project structure has been organized into several OSGeo
subprojects that allow access to the source code of the various
components with the FDO architecture as separate projects.

https://fdo.osgeo.org is the top level project and is a starting point
for discovering components within the FDO architecture. From this site
the FDO API is introduced and the developer community exposed to the API
and a set of supported data providers. 

https://fdo.osgeo.org contains a number of Subversion Subprojects:

fdocore   -- FDO Core APIs            https://fdocore.osgeo.org 
fdoarcsde -- FDO Provider for ArcSDE  https://fdoarcsde.osgeo.org 
fdogdal   -- FDO GDAL Provider        https://fdogdal.osgeo.org 
fdoogr    -- FDO OGR Provider         https://fdoogr.osgeo.org 
fdordbms  -- FDO Providers for RDBMS  https://fdordbms.osgeo.org 
fdosdf    -- FDO Provider for SDF     https://fdosdf.osgeo.org 
fdoshp    -- FDO Provider for SHP     https://fdoshp.osgeo.org 
fdowfs    -- FDO Provider for WFS     https://fdowfs.osgeo.org 
fdowms    -- FDO Provider for WMS     https://fdowms.osgeo.org 

fdocore is the FDO API subversion. The FDO API was placed in the fdocore
subproject to separate its development from provider development. Access
rights will be granted to fdocore separately from the subprojects that
implement the FDO API. 

NOTE: fdocore must be built first so that all other subprojects that
depend on the FDO API may be built. 

fdocore is composed of three central components

1) Fdo: The base FDO API written in portable C++ and compliable in a
Windows or Linux environment. There is also an additional set of .Net
managed C++ classes that serve as wrapper classes around the unmanaged
API and allows the FDO API to be executed from within a Windows .Net

Fdo is primarily composed of:

a) A set of FDO abstract interfaces that each FDO provider must
implement in order to support various commands within the FDO API such
as Select, Insert, Update and Delete.
b) A Common API consisting of various generic FDO API classes that have
been reused in the development of the FDO API and the supported
providers that implement the FDO API. 
c) The OSGeo FDO Geometry API that encapsulates the OSGeo geometry
format. (See chapter 12 in the FDO Developers Guide)

2) Utilities: A set of utility libraries that are meant to be reused in
the development of FDO providers. These libraries were not used in the
implementation of the FDO API itself.

3) Thirdparty: The source code for a set of thirdparty components that
are used by the FDO API and its providers. Source code for these
components is provided so that OSGeo can maintain compatibility between
its OpenSource and Enterprise products. 

fdocore contains a Providers directory which is empty. This directory is
meant to be a placeholder under which all provider source can be located
so that the FDO and Provider source code can be compiled from the top
level fdocore build scripts. The continues existence of this directory
may be maintained or abandoned as we move towards the *go live* date.



The above directory structure is optional and each Provider can be
placed in a separate directory tree if required. However, maintaining
the provider code under Providers will allow maximum reuse of the helper
scripts provider and will mimic the build setup used by the OSGeo build

Once the source code for fdocore has been downloaded, there are a number
of helper scripts that can be used to update and build the source code.
There are versions of these scripts available for Windows and Linux.

checkoutsvn -- allows the FDO API and provider source code to be updated
from their appropriate subversions. NOTE: executing this script will
checkout setup the FDO API and Provider directories in a configuration
that mimics the internal build configuration. This will mean that all
OSGeo Provider source code will be retrieved to your development

setenvironment -- sets the build environment that will allow the FDO API
and the Providers to be built

build_thirdparty -- builds the thirdparty components required by the FDO
API and its providers to run successfully.

build -- builds the FDO API and Providers on Windows. Executing this
script with no arguments will build Thirdparty, Fdo, Utilities and all
Provider retrieved by the checkoutsvn script. 

build_linux -- builds the FDO API and Providers on Linux. Executing this
script with no arguments will build Thirdparty, Fdo, Utilities and all
Provider retrieved by the checkoutsvn script.

(More to come....)


-----Original Message-----
From: Mateusz Loskot [mailto:mateusz at loskot.net] 
Sent: Friday, June 30, 2006 4:44 PM
To: dev at fdo.osgeo.org
Subject: [fdo-dev] fdo and fdocore

Hi Greg,

My name is Mateusz Loskot.
Recently, I started to work on FDO and GDAL provider for FDO and
I met some problems I'd like to ask you to help me with.

First, I'd like to learn the overall FDO project/sub-projects structure.
As I know, there are 3 projects available on the OSGeo.org website:
fdo, fdocore and fdogdal.
The last one is clear. It's a GDAL provider for FDO.
But I can't figure out what is the role of fdo and fdocore projects.
As I found, both projects include the same files e.g. fdo module.
fdocore seems to be newer but there are no providers in
the Providers directory.
fdo project includes some providers, but there are no Utilities, etc.

I'd be very thank full if you could explain me the FDO projects

My main aim is to build FDO core + GDAL provider and test it deeply on
Linux and Windows.
Finally, I'm going to test GDAL provider for FDO with MapGuide.
As I see, there are UnitTests already available in the fdo and fdocore.
Could you tell me something about current state of those tests?
Could I extend them and create new, when I will be testing FDO with

I subscribed to all dev/user lists of fdo, fdocore and fdogdal projects.
At first, I wanted to write my questions to mailing list, but I could
not decide which one should I choose.
Please, could you tell me which list can be considered as the main FDO
development list?

Thanks in advance for your assistance
Mateusz Loskot

To unsubscribe, e-mail: dev-unsubscribe at fdo.osgeo.org
For additional commands, e-mail: dev-help at fdo.osgeo.org

More information about the Fdo-internals mailing list