[Ovirt-devel] oVirt Source Repository Refactoring

Ben Guthro bguthro at virtualiron.com
Tue Sep 9 12:42:13 UTC 2008

I'm having some issues building after the refactoring, and I was hoping 
someone might be able to point me in the right direction...

I am only interested in building the managed node pxe images, at this point.
As I understand this restructuring, this means I need the following 
repos to build:

I should be able to do without the other subcomponents that I am not 
interested in, correct?

To build I execute make overriding the following environment variables:
FEDORA_URL                  Use a local yum mirror
OVIRT_CACHE_DIR         Override location to make this behave as before, 
and put it in a
                                          local dir to the build area
SUBDIRS="node node-image" Only build what I care about.
OVIRT_BRANCH               build on the "next" branch

However, it would seem that something in the automake magic is picking 
up the SUBDIRS override, because it seems to be using it incorrectly 
when it tries to make the "node" dir. (see make output below)

Am I doing something wrong here? Is this a supported operation?

<build output>

[bguthro at bguthro ovirt]$ ls
node  node-image  release
[bguthro at bguthro ovirt]$ make FEDORA_URL=http://install/fedora/yum 
OVIRT_CACHE_DIR=/home/bguthro/dev/trivo/ovirt/ovirt-cache SUBDIRS="node 
node-image" -f release/ovirt.mk build
for dir in node node-image; do \
                if ! test -d $dir ; then \
                        make $dir || exit 1 ; \
                fi ; \
                ( cd $dir; test ! -f Makefile.in && ./autogen.sh ); \
                ( cd $dir; test ! -f Makefile && ./configure ); \
                make -C $dir publish || exit 1 ; \
I am going to run ./configure with no arguments - if you wish
to pass any to it, please specify them on the ./autogen.sh command line.
configure.ac:3: installing `./install-sh'
configure.ac:3: installing `./missing'
ovirt-identify-node/Makefile.am: installing `./depcomp'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for DBUS... yes
checking for HAL... yes
checking for VIRT... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating ovirt-identify-node/Makefile
config.status: creating config.h
config.status: executing depfiles commands
make[1]: Entering directory `/home/bguthro/dev/trivo/ovirt/node'
{ test ! -d ovirt-node-0.92 || { find ovirt-node-0.92 -type d ! -perm 
-200 -exec chmod u+w {} ';' && rm -fr ovirt-node-0.92; }; }
test -d ovirt-node-0.92 || mkdir ovirt-node-0.92
list='node node-image'; for subdir in $list; do \
          if test "$subdir" = .; then :; else \
            test -d "ovirt-node-0.92/$subdir" \
            || /bin/mkdir -p "ovirt-node-0.92/$subdir" \
            || exit 1; \
            distdir=`CDPATH="${ZSH_VERSION+.}:" && cd ovirt-node-0.92 && 
pwd`; \
            top_distdir=`CDPATH="${ZSH_VERSION+.}:" && cd 
ovirt-node-0.92 && pwd`; \
            (cd $subdir && \
              make  \
                top_distdir="$top_distdir" \
                distdir="$distdir/$subdir" \
                am__remove_distdir=: \
                am__skip_length_check=: \
                distdir) \
              || exit 1; \
          fi; \
/bin/sh: line 7: cd: node: No such file or directory
make[1]: *** [distdir] Error 1
make[1]: Leaving directory `/home/bguthro/dev/trivo/ovirt/node'
make: *** [publish] Error 1

</build output>

Perry N. Myers wrote on 09/08/2008 03:40 PM:
> oVirt is composed of several components that have well defined interfaces
> and are able to be used in isolation from each other.  Our code 
> repository
> did not reflect this since it was a single monolithic repository for all
> of oVirt.
> We've refactored the repositories into the following:
> ovirt-server    : RPMs that provide oVirt Server Suite functionality
> ovirt-node      : RPMs that provide oVirt node functionality
> ovirt-node-image: RPM that contains LiveCD ISO image and PXE images of
>                   the oVirt Node which uses the ovirt-node RPM
> ovirt-appliance : RPM that contains a Fedora appliance OS with
>                   ovirt-server and ovirt-node-image RPMs installed and
>                   configured
> ovirt-release   : RPM that contains yum repo configuration file for
>                   ovirt.org repositories and developer convenience 
> scripts
> ovirt-docs      : RPMs that contain documentation for the oVirt project
> The build-all.sh script that was used to build all of the sub-projects of
> oVirt has been replaced with a top level makefile (ovirt.mk) from the
> ovirt-release repository and RPM.
> The old ovirt repo will continue to be hosted on git.et.redhat.org
> indefinitely, since it corresponds to version 0.92-1 and below of oVirt.
> The next release of oVirt will use the new refactored repositories.
> In addition to the repo refactoring and change from build-all.sh to
> ovirt.mk, we've also tried to reduce the dependency on root access for
> building.  The only sections of the build that still require root are the
> RPM builds of ovirt-appliance and ovirt-node-image, as these RPMs use
> livecd-creator which requires root.
> Because of this, the user running the ovirt.mk makefile should have
> passwordless sudo as root access.  Sudo is used inside of the appliance
> and node-image spec files to allow livecd-creator to work properly.
> Developers wishing to take a look at what is currently in development for
> the next release can do the following on a Fedora 9 host.
> Install the latest ovirt-release RPM from ovirt.org:
> $ sudo rpm -ivh 
> http://ovirt.org/repos/ovirt/9/ovirt-release-0.92-1.fc9.noarch.rpm
> This will add:
> /etc/yum.repos.d/ovirt.repo - Used for yum update/install of oVirt RPMs
> /usr/share/ovirt-release/ovirt.mk - Developer Makefile
> To get the rest of the repositories do the following:
> $ mkdir ~/ovirt
> $ cd ~/ovirt\
> $ export OVIRT_BRANCH=next
> $ make -f /usr/share/ovirt-release/ovirt.mk update
> Replace ~/ovirt with any directory you would like (this is just an
> example)  This will check out all 6 repos from the ovirt.org site.
> OVIRT_BRANCH is set to next to indicate that you want to work on the next
> branch instead of master in the git repos.
> To do a build (similar to build-all.sh in previous releases) do:
> $ make -f /usr/share/ovirt-release/ovirt.mk build
> This will build all of the RPMs and make the oVirt Node and Appliance.
> After that you can run:
> $ sudo create-ovirt-appliance
> to create the Appliance on your host.  create-ovirt-appliance replaces
> create-wui-appliance and has the same command line parameters.  So to
> bridge your appliance to eth1, you would use:
> $ sudo create-ovirt-appliance -e eth1
> Give the new repositories and developer scripts a try and please report
> any problems encountered.
> Thanks,
> oVirt Development Team

More information about the ovirt-devel mailing list