lsb

build_env "distro build" issues

Bug #1332218 reported by Jeff Johnson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
lsb
In Progress
Medium
Unassigned
Mandriva
In Progress
Medium

Bug Description

Several things have come up in pursuing a unified build of build_env.

1. In headers, make clean clobbers stuff that is no longer built by make - the
need to match. A change was made a while ago to regen headers only on "make
gensrc", so going to change to only purge on "make distclean".

2. In headers, make install is dangerous - there are no defaults for
INSTALL_ROOT and INCLUDE_DIR

3. In lsbdev-cc, there's not a clean way to pass in an alternative BASE_PATH,
which is how lsbcc is told stubs/includes are in a non-default place. Want to
be able to have the standard model where if you do nothing else, a build at the
top level makes binaries which work in /usr/local.

4. In stub_libs, "make install" doesn't build anything, needs to depend on
"all".

5. In stub_libs, there's a problem with the editing of pkgconfig files and
others with hardcoded paths - the edits happen in place, they should only
happen in flight as installation is going on such that the installed copies are
modified. Editing in place is okay for rpm-based builds, the tree will be
thrown away, but when building direct from a bzr branch, it will leave modified
files which could possibly get checked in later if you're not paying attention.

6. In stub_libs there's an install problem that's occurred since two "future"
versions (4.1 and 5.0) were added in, in that this code appears in the top of
Makefile.all-arch:

# Arch independent components for creating stub libraries

LSB_VERSION = $(shell basename "`cd ../ && pwd`")
CORE_STUBLIBS = $(shell cat ../../core_filelist_$(LSB_VERSION))
DESKTOP_STUBLIBS = $(shell cat ../../desktop_filelist_$(LSB_VERSION))

and it's later used in this manner:

        # Create symlink to libs in the most recent LSB version.
        cd $(DESTDIR)/$(INSTALL_ROOT) && rm -f ./$(LIBDIR) && ln -s
./$(LIBDIR)-$(LSB_VERSION) ./$(LIBDIR)

but this is called one from the "make install" in each version subdirectory, so
we see this sequence:

cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-3.0 .//lib64
cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-3.1 .//lib64
cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-3.2 .//lib64
cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-4.0 .//lib64
cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-4.1 .//lib64
cd /tmp/foo//usr/local && rm -f .//lib64 && ln -s .//lib64-5.0 .//lib64

and in the end, the last one "wins", when what we want is the link to be made
only once, to the target version.

Tags: buildenv
Changed in mandriva:
importance: Unknown → Medium
status: Unknown → In Progress
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Related blueprints

Remote bug watches

Bug watches keep track of this bug in other bug trackers.