build_env "distro build" issues
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_
DESKTOP_STUBLIBS = $(shell cat ../../desktop_
and it's later used in this manner:
# Create symlink to libs in the most recent LSB version.
cd $(DESTDIR)
./$(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.
Changed in mandriva: | |
importance: | Unknown → Medium |
status: | Unknown → In Progress |