Age | Commit message (Collapse) | Author |
|
database to preserve the meaning of log messages in old databases
in case of renumbering... but these tables were never used, and
the tables used to create them were, in fact, out of date and
inconsistent with the range of operations now supported. Remove
the vestigial remains of the never-implemented feature.
Also, update .gitignore to stop git from complaining about some
more generated files.
|
|
are generated from text files and templates, making it now (we hope)
impossible for the list of strings to get out of sync with the
enum.
|
|
in an incoming "maketables".)
|
|
|
|
one device to another, for instance.
|
|
|
|
|
|
|
|
one.
There's a long story here, but to abbreviate it:
The shell script was annoying at best to maintain and starting to
show signs of not really being the right tool for the job. For
various reasons, we have some other Python stuff in our build system,
so we picked Python as the language we were already using for other
stuff. We think this works with anything reasonably recent (around
Python 2.4 through 2.6).
There's a little bit of cleanup, also, of the wrapper templates.
|
|
Note that this replaces an existing getxattr() wrapper which canonicalized
pathnames for use in a chroot() environment. The need for that to work
in some possible future may require us to revisit this.
|
|
Current versions of gnu coreutils 'cp' were attempting to set permissions
using fsetxattr. As a workaround, we need to return ENOTSUP so that it falls
back to using fchmod, which pseudo does know how to wrap.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
argument -- which turns out to be a problem, as this controls the
canonicalization. The upshot is that some invocations of symlinks
were corrupting $0.
|
|
in one place, but then often reuse them in other project directories.
As a result, the --with-sqlite path is no longer the right path to
use for RPATH later in the program's life. In the past, we were
using chrpath to change the path to something more suitable, but this
doesn't work if the new path is longer.
Instead, allow an explicit --with-rpath setting which our build
system can use. The logic is:
* If you don't specify --with-sqlite or --with-rpath, you get
no -Wl,-R
* If you specify an empty path in --with-rpath, or --without-rpath,
you get no -Wl,-R
* If you specify --with-rpath with a non-empty path, you get
-Wl,-R<path>
* If you specify --with-sqlite, but not --with-rpath, you get
-Wl,-R$(SQLITE)/lib
|
|
mknodat() uses a dev_t * argument, not a dev_t argument, so the
0 passed into wrap___xmknodat() by wrap_mkfifoat() is an invalid
argument rather than an unused but valid zero. Change mkfifoat
to create a dummy dev_t and pass its address.
|
|
in the default location.
|
|
... Also, make that error message a debugging message, since that's
a normal and legitimate use case.
|
|
|
|
flaw in the code. Yes, Virginia, your printf arguments must match
their format strings, and size_t is not the same thing as int.
|
|
that for a macro that does it correctly. Why not just use strcmp,
you ask? Because we aren't doing a string compare, we're looking
for a prefix.
|
|
an LD_LIBRARY_PATH that included the pseudo library directory
and some other directories, the other directories would get
wiped out. Also a couple of whitespace rationalizatoins.
|
|
all) noticed, that offsets.c was busted. Fixed.
|
|
pseudo_saved_sigmask occurred outside of the check against
antimagic, calls to wrapped functions made by the internals
of a wrapper resulted on overwriting pseudo_saved_sigmask,
so we restored the already-blocked sigmask. This could
result in programs getting their sigmask permanently changed
to block various signals, most crucially SIGCHLD.
We now stash the value immediately before calling a wrapper,
and never stash it if we're not calling a wrapper. Now
the anti-magic stuff happening inside wrappers isn't trashing
the signal mask. YAY!
|
|
in processes started under pseudo.
|
|
For reasons that may never be known, the /usr/bin/find on
RHEL5 contains its own local copies of regcomp() and
regexec(). Thus, when pseudo makes calls to these functions,
it gets the local copies in the binary instead of the ones in
libc.
But wait! That's not all. There's also the fascinating
detail that, for reasons unknown, these local copies have
an incompatible API, such that:
regexec(pattern, list, 1, pmatch, 0);
can write to more than one element of pmatch, and since
that's a local array of one member, that means that they
can crush something on the stack, such that a couple of
function calls later you get a segfault in Nothing In
Particular.
So. We try to grab the real regcomp/regexec from libc,
using dlsym, and if we can't, we fall back on whatever the
defaults were.
Inexplicably, this code actually made pseudo crash less often
on at least one target. This is madness within madness, and
I really have no idea why on earth /usr/bin/find, on a Linux
system, would have its own local copies of regcomp/regexec,
let alone why it would have copies that had substantially
different semantics.
|
|
bug in the speculative-unlink operation.
The intent is to mark and then confirm or cancel the delete. This
removes the quirk where we tried to stash old database entries,
which didn't handle directories anyway; "rmdir non-empty-directory"
is a bit too common a case to dismiss as unthinkable.
|
|
Fixed a couple of allocation issues, corrected an off-by-one
error in environment setup.
|
|
Fix an obvious ld_preload/ld_library_path mixup in pseudo_util.c
Signed-off-by: Richard Purdie <richard.purdie@intel.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
|
|
|
|
|
|
Add local variable cache via get_value and set_value. The local cache
is setup at constructor time (or soon after).
Rewrite the pseudo_setupenv and pseudo_dropenv routines, add a new
pseudo_setupenvp and pseudo_dropenvp as well to handle the execve
cases.
We can now successfully use /usr/bin/env -i env and get pseudo values
back!
|
|
Add rules for 'pseudo', 'pseudodb', 'pseudolog' and 'libpseudo'.
|
|
We wrap all of the execs so that we can ensure the environment is
properly configured prior to the exec running.
handle ... for the new execl* wrappers
Add a test for the new execl* ... handling.
|
|
|
|
We can potentially under allocate memory due.
|
|
If the environment has been cleared (in an execve for instance),
we need to seed the environment with the PSEUDO_PREFIX,
PSEUDO_BINDIR, PSEUDO_LIBDIR, and PSEUDO_LOCALSTATEDIR values.
|
|
Add PSEUDO_BINDIR, PSEUDO_LIBDIR, and PSEUDO_LOCALSTATEDIR to allow for more
easy customization of PSEUDO components at run-time. If these are not set
they will be automatically generated based on the existing PSEUDO_PREFIX path.
PSEUDO_BINDIR = PSEUDO_PREFIX /bin
PSEUDO_LIBDIR = PSEUDO_PREFIX /lib
PSEUDO_LOCALSTATEDIR = PSEUDO_PREFIX /var/pseudo
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
CFLAGS is set by many autobuilder systems. In these environments we may
need both the internal flags pseudo expects and the autobuilder flags.
Adjust the Makefile accordingly.
Based on code from Richard Purdie 2010-03-18 in Poky Linux.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
Add a missing dependency from pseudo_wrapfuncs.h to wrappers.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
When generating binaries for the bin directory, they were not properly
configured to generate the bin dir. Also sync up and generate the
lib dir and localstatedir as well...
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
|
|
CQ: WIND00225366
When moving a directory, pseudo performs the following sequence: stat
old, unlink new, link old and then rename. When linking a file, pseudo
first makes sure the file does not already exist in the database and
does an unlink. So the full sequence was stat old, unlink new, link
old ( unlink old, unlink contents of old, relink old ), rename. The
fix removes the unlinking of the contents of old.
|
|
CQ: WIND00225366
A simple test harness that runs all the scripts in the test
directory. Each test script is run inside pseudo and uses exit status
to report back whether the test was successful. The script uses the
build executables, not the installed ones and each test run starts
with an empty database.
|
|
CQ: WIND000225366
Pseudo requires functionality in sqlite3 only available in version
3.6.x. The configure script now checks if sqlite headers are installed
and checks that the version is at least 3.6.x.
|
|
CQ: WIND00225366
The .gitignore file tells git to ignore all the temporary files that
are created by the build.
|
|
|
|
libpseudo-foo.so.
|
|
The PSEUDO_SUFFIX thing is an installation quirk to allow our
build system to tag libpseudo.so with a checksum of the host libc.
However, we reuse a prebuilt pseudo server with the new pseudo
libraries; this means that encoding the suffix in the environment
hackery is a Bad Idea.
Update version number to 0.3, since this seems to wrap up a
hunk of development effort.
|
|
feature.
|
|
In fakechroot, which pseudo tries to match the functionality of,
the default behavior when creating a symlink with an absolute target
is to prepend the chroot path, so that underlying syscalls will
get the right file.
It is necessary to be able to disable this behavior to create target
filesystems in some cases. To that end, support a new environment
variable, PSEUDO_NOSYMLINKEXP, which disables that behavior.
|