Developer's Guide

  • Docs Home
  • Community Home

2. Development Toolchain Requirements

There are a number of other tools that are required to build Zenoss from source (a toolchain). Among them are a C compiler, the make command, and other associated tools.

2.1. Appliance

The Zenoss appliance is based on the rPath Linux 1 (rp11) distribution.

Troves (like the gcc toolchain) that are not available on the Zenoss update repository server are generally available from install labels, such as:

conary.rpath.com@rpl:1

The trove candy store is rBuilder Online. Zenoss recommends that you obtain an account there. It provides good search capabilities for packages of interest, and offers forums to assist with appliance-specific questions.

For a gcc toolchain, try this as the root user:

# conary update --resolve autoconf automake make which \
  --install-label="conary.rpath.com@rpl:1"
# conary update --resolve gcc=conary.rpath.com@rpl:1 \
  --install-label="conary.rpath.com@rpl:devel"

The binutils trove should already be on the box.

An actual install sequence looked like the ouput below. If the --info switch is used, it is possible to see if everything is going to resolve nicely. And if you are really paranoid, use the --test flag which runs through the update but does not commit the result.

# conary update autoconf automake make which --resolve --info \
  --install-label="conary.rpath.com@rpl:1"
    Install autoconf(:data :doc :runtime)=2.59-7-0.1
    Install automake(:data :doc :runtime)=1.9.6-3-0.1
    Install m4(:runtime)=1.4.3-4-0.1
    Install make(:doc :locale :runtime)=3.80-7.2-1
    Install which(:doc :runtime)=2.16-3-0.1

# conary update autoconf automake make which --resolve \
   --install-label="conary.rpath.com@rpl:1"
Including extra troves to resolve dependencies:
    m4:runtime=1.4.3-4-0.1
Applying update job:
    Install autoconf(:data :doc :runtime)=2.59-7-0.1
    Install automake(:data :doc :runtime)=1.9.6-3-0.1
    Install m4(:runtime)=1.4.3-4-0.1
    Install make(:doc :locale :runtime)=3.80-7.2-1
    Install which(:doc :runtime)=2.16-3-0.1

# conary update --info --resolve gcc=conary.rpath.com@rpl:1 \
  --install-label="conary.rpath.com@rpl:devel"
    Install gcc(:devel :devellib :doc :lib :locale :runtime)=3.4.4-9.4-1
    Install libgcc(:devellib)=4.1.2-11-1[~!gcc.core]

#  conary update --resolve gcc=conary.rpath.com@rpl:1 \
   --install-label="conary.rpath.com@rpl:devel"
Including extra troves to resolve dependencies:
    libgcc:devellib=4.1.2-11-1
Applying update job:
    Install gcc(:devel :devellib :doc :lib :locale :runtime)=3.4.4-9.4-1
    Install libgcc(:devellib)=4.1.2-11-1[~!gcc.core]

Generally try to find something on the rpl:1 branch name and do not mix rpl:2 stuff with the rpl:1 stuff. In some cases, you may have to resort to pulling a trove from the rpl:devel branch if it cannot find it elsewhere. That's what happened above when trying to resolve the libgcc dependency for the gcc trove. Adding the extra --install-label option was necessary so that libgcc could be found. How could you know it was on rpl:devel? Go to rBuilder Online and search for that package and it should tell you.

If you want to see where the files for a trove are installed:

# conary q trove_name --lsl

[code]# conary q gcc --lsl
...
lrwxrwxrwx   1 root  root      3 2004-07-07 17:04:44 UTC /usr/bin/cc -> gcc
-rwxr-xr-x   1 root  root  81452 2006-06-19 18:02:30 UTC /usr/bin/gcc
-rwxr-xr-x   1 root  root  16134 2005-10-15 07:22:42 UTC /usr/bin/gccbug
...

Lastly, conary makes it relatively easy to run-away if you're not happy with a trove you've installed. Use conary rblist to see what packages have been committed to the conary stack.

# conary rblist | more
r.3:
	installed: gcc(:devel :devellib :doc :lib :locale :runtime)
conary.rpath.com@rpl:1/3.4.4-9.4-1
	installed: libgcc(:devellib) conary.rpath.com@rpl:devel/4.1.2-11-1

r.2:
	installed: autoconf(:data :doc :runtime) conary.rpath.com@rpl:1/2.59-7-0.1
	installed: automake(:data :doc :runtime) conary.rpath.com@rpl:1/1.9.6-3-0.1
	installed: m4(:runtime) conary.rpath.com@rpl:1/1.4.3-4-0.1

r.1:
	  updated: info-raa-web(:user) products.rpath.com@rpath:raa-2/1-1.1-2 ->
1-1.3-2
          ...

Here is how you would remove the gcc trove that was just installed:

# conary rb r.3
Applying update job:
    Erase   gcc(:devel :devellib :doc :lib :locale :runtime)=3.4.4-9.4-1
    Erase   libgcc(:devellib)=4.1.2-11-1[~!gcc.core]

# conary q gcc
gcc was not found

Be careful which troves you remove!