discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] New source code repository!


From: Johnathan Corgan
Subject: Re: [Discuss-gnuradio] New source code repository!
Date: Fri, 04 Aug 2006 17:07:42 -0700
User-agent: Thunderbird 1.5.0.5 (X11/20060728)

Just a few words about the new build system and things yet to be done.

In addition to the switch from CVS to Subversion, GNU Radio is now
managed as a single hierarchy of files, separated into individual
component directories as before.  However, the GNU Autotools-based build
scripts that existed in each directory before have been replaced by a
single top-level build:

http://gnuradio.org/trac/browser/gnuradio/trunk

The single exception to this is the gr-how-to-write-a-block component,
which has been left untouched, and is not built by the top-level build.
This directory still demonstrates how to build a GNU Radio component
"outside the tree," and can remain as a template to base your own
projects from.

>From the perspective of a user, you'll need to note several changes.

First the entire repository is checked out; you no longer need to decide
which directories apply and individually grab those or delete them from
the ones gotten by the old gr-build setup:

svn co http://gnuradio.utah.edu/svn/gnuradio/trunk gnuradio
cd gnuradio

The first thing to do is to run the ./bootstrap script found in the root
of the source tree.  This script runs the GNU Autotools and creates the
top-level ./configure script.  Then run this script:

./configure

There are compile time dependencies both for the core libraries of GNU
Radio as well as the remaining components.  The top-level configuration
script will abort if fundamental dependencies that all components depend
upon (such as SWIG or Python) are not found.

For the remainder, the top-level configuration will determine which
components can or cannot be built based on the what it finds.  For
example, when running ./configure on a Linux machine, the
gr-audio-windows component will fail its dependency check and not be
marked for compilation.  At the end of the ./configure process, a report
is issued indicating which packages will and won't be built.

The standard 'make', 'make check', and 'sudo make install' commands work
as expected:

make && make check
sudo make install

At this point, you have a fully installed version of GNU Radio.

For GNU Radio developers:

No .cc, .py, .i or .h files were harmed in the production of this new
build system!

All of the source code changes needed to consolidate the build into a
top-level one were made in Makefile.am's or other related autotools
files.  A great deal of care was spent to ensure that all automated qa
tests passed; there are a few exceptions noted below.

The conversion to a single configure.ac was made by extracting the
component specific configuration directives into a separate m4 macro for
each component.  These live down in the /config directory and start with
 the grc_ prefix.  The configure.ac script invokes these in the correct
order near the end after all the fundamental dependency checks are
satisfied.

One major change has been to have failed dependency checks mark a
variable instead aborting the configuration.  The script maintains a
running list of successful components and uses that list to decide which
subdirectories to recurse into.

Since the top-level directory is now one higher than before, there have
been many changes in paths to add the component subdirectory name.
You'll see this in Makefile.am and other places.

Finally, during the build, all references to include files, libraries,
and Python modules occur from within the build tree hierarchy.  This is
because none of the prior components is installed into the filesystem.
Additionally, the qa tests require some path hackery to make sure the
loaded modules come from the build tree vs. the installed tree.

Here are some component specific notes, including some things that are
broken right now.

gr-audio-osx:
gr-audio-windows:

I don't have access to either of these type of systems to test these
out.  All the changes have been applied similar to what has been done to
other directories, but all that has been tested in the "failed
dependency" code path.  Please test and report bugs in Trac, or even
better fix them and check in the code. :-)

gr-audio-portaudio:

The PKGCONFIG macro has been retained to check for the existence of
portaudio >= 19.  As I only have rev. 18, I cannot test this.

gr-error-correcting-codes:

The qa tests in the Python directory have been disabled in the
Makefile.am.  While configuration and compilation succeed, the
non-standard layout of the library directories breaks the script.

Overall:

The build system works but has not been optimized.  Over the next few
days and weeks expect to see Eric and I refactoring some common things.
And of course, there will be bugs I'll be fixing for a while yet...

I will write up more notes as a I think of them and post to the list.
Please feel free to report build system bugs in the Trac ticket system.

At this point, I shall recall the infinite wisdom of Sir Winston Churchill:

"GNU Autotools is the worst cross-platform configuration management
system ever devised, except for all the rest."

Or something like that :-)

And once again, thanks go to Jay Lepreau and his team at the University
of Utah's Flux Research Group for their generous hosting and network
bandwidth.

-Johnathan Corgan





reply via email to

[Prev in Thread] Current Thread [Next in Thread]