discuss-gnuradio
[Top][All Lists]
Advanced

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

[Discuss-gnuradio] GNU Stow and make install (DESTDIR)


From: Patrick Strasser
Subject: [Discuss-gnuradio] GNU Stow and make install (DESTDIR)
Date: Thu, 06 Jan 2011 19:51:34 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050602 Thunderbird/1.0.2 Mnenhy/0.7.2.0

Hello!

I tried to install GNU Radio with GNU Stow. I'd like to have several
versions of GNU Radio that I can switch betwenn without rebuild. Stow
seems to help much in that scenario. And it does a clean uninstall even
if the build tree has changed since build.

How install does _not_ work:
============================

The Stow manual recommends[1]:
----------------------------
6.1.2 Other FSF software

The Free Software Foundation, the organization behind the GNU project,
has been unifying the build procedure for its tools for some time.
Thanks to its tools `autoconf' and `automake', most packages now respond
well to these simple steps, with no other intervention necessary:

./configure options
make
make install prefix=/usr/local/stow/package

Hopefully, these tools can evolve to be aware of Stow-managed packages,
such that providing an option to `configure' can allow `make' and `make
install' steps to work correctly without needing to "fool" the build
process.
----------------------------

Unfortnately libtool does not like this way of installing:
$ make install prefix=/usr/local/stow/package
[...]
test -z "/usr/local/stow/packag/lib" || /bin/mkdir -p
"/usr/local/stow/packag/lib"
 /bin/bash ../../../libtool   --mode=install /usr/bin/install -c
libgnuradio-core.la '/usr/local/stow/packag/lib'
libtool: install: error: cannot install `libgnuradio-core.la' to a
directory not ending in /usr/local/lib
[...]

How install _does_ work:
============================

You rather need to install with DESTDIR[2]:

# full version
STOWDIR=/usr/local/stow
PACKAGE=gnuradio
VERSION=3.3git
PREFIX=/usr/local
./configure --prefix=${PREFIX}
make
sudo make install DESTDIR=${STOWDIR}/${PACKAGE}-${VERSION}
stow -d ${STOWDIR} -t / ${PACKAGE}-${VERSION}

Note: make install with DESTDIR installs everything with DESTDIR
prepended. If PREFIX=/usr/local/, and DESTDIR=/usr/local/stow/package,
files will end up under /usr/local/stow/package/usr/local/. Stow just
moves files out of DESTDIR to the target directory. This is why the
target has to be /-

If you install to the standard paths, this can be simplified to

# simple version
PACKAGE=gnuradio
VERSION=3.3
./configure
make
sudo make install DESTDIR=/usr/local/stow/${PACKAGE}-${VERSION}
sudo stow -d /usr/local -t / ${PACKAGE}-${VERSION}

If you get conflicts you probably have an old package version installed.
You need to uninstall first.

Uninstall:
==========

List your stow packages:

STOWDIR=/usr/local/stow
ls $STOWDIR

The name of the directory is the name of the package.

Unstow the currently installed version:

sudo stow -d $STOWDIR -t/ -D package

[1] http://www.gnu.org/software/stow/manual.html#SEC8
[2] http://www.gnu.org/prep/standards/standards.html#DESTDIR
========================================

I hope this information can help others manage their GNU Radio
installations.

Regards

Patrick




reply via email to

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