aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile.in
AgeCommit message (Collapse)Author
2015-09-22f*open*: Use more-correct mode.pseudo-1.7.4PSEUDO_1_7_4Peter Seebach
The f{re,}open{64,} functions use a default mode of 0666 & ~umask, and defaulting to 0600 for the post-open chmod was breaking some use cases. Problem and solution identified by Ross Burton, I just made the local copy of the patch. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-09-04pseudo 1.7.3pseudo-1.7.3PSEUDO_1_7_3Peter Seebach
So fchmodat(..., AT_SYMLINK_NOFOLLOW) isn't valid, and could result in mkdirat/mkfifoat setting errno on success, which is mostly harmless except for one or two programs which consider a non-zero errno to be proof of failure. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-09-031.7.2 branchpseudo-1.7.2PSEUDO_1_7_2Peter Seebach
And another branch, for 1.7.2, because I think that'll be the last of it. Hah. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-09-02pseudo 1.7.1pseudo-1.7.1PSEUDO_1_7_1Peter Seebach
Two little bug fixes. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-08-21New option: Use extended attributes to store db values.Peter Seebach
This is a moderately experimental feature which stores values in an extended attribute called 'user.pseudo_data' instead of in the database. Still missing: Database<->filesystem synchronization for this. For at least some workloads, this can dramatically improve performance. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-08-20Initial profiling implementation.Peter Seebach
A partially-implemented profiler for client time, which basically just inserts (optional) gettimeofday calls in various places and stashes data in a flat file containing one data block per pid. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-07-171.6.7: fix mkfifopseudo-1.6.7PSEUDO_1_6_7Peter Seebach
Worked for trivial cases, but spuriously closed fd 0 and had other issues. Separated implementations out.
2015-07-161.6.6 (fifo and xattr improvements)pseudo-1.6.6PSEUDO_1_6_6Peter Seebach
2015-05-04reduce spurious messages about trailing slashespseudo-1.6.5PSEUDO_1_6_5Peter Seebach
There was supposed to be a check for filenames showing up with a trailing slash when the file was not a directory. What actually made it in was a check for a mismatch between "is a directory" and "has trailing slash", which produced spurious messages saying the path had a trailing slash whenever a directory path did *not* have a trailing slash. But that's valid and should not produce diagnostics. Let alone thousands of diagnostics. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2015-01-22pseudo 1.6.4pseudo-1.6.4PSEUDO_1_6_4Peter Seebach
2015-01-151.6.3pseudo-1.6.3PSEUDO_1_6_3Peter Seebach
2014-10-03call this 1.6.2Peter Seebach
2014-07-181.6.1pseudo-1.6.1PSEUDO_1_6_1Peter Seebach
2014-07-10don't pass -L/usr/libSeebs
The sqlite flags don't need to be present if they don't have meaningful values. I think.
2014-04-24subports: Use right compilerPeter Seebach
Turns out the checks for feature support were using plain cc, not ${CC}, which could break tests. Also add a sanity check to the xattr support to confirm that <attr/xattr.h> is available. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2014-04-24Make configure handle xattr guessing (or specifying)Peter Seebach
Clean-up: Allow specification of environment hints for subports scripts, such as whether xattr support is available. Also make configure guess at a bit width if none is specified. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2014-04-21Automatic dependency checking for wrappersPeter Seebach
Ports can provide pseudo_wrappers.c or portdefs.h, and individual functions have implementations. These dependencies aren't known until post-configure. Make the Makefile include two sub-Makefiles which can be updated by makewrappers. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2014-01-22New version 1.6.Peter Seebach
2014-01-22Don't automatically fall back to /etc/passwd.Peter Seebach
In some cases, we'd rather pseudo fail than fall back to using /etc/passwd or /etc/group. Make the determination of what to fall back to when neither PSEUDO_PASSWD nor a chroot directory contains passwd/group files controllable by a configure-time flag, controlled by --with-passwd-fallback= or --without-passwd-fallback.
2013-06-25Change debugging to use flags rather than levelsPeter Seebach
This is a moderately intrusive change. The basic overall effect: Debugging messages are now controlled, not by a numeric "level", but by a series of flags, which are expressed as a string of letters. Each flag has a single-letter form used for string specifications, a name, a description, a numeric value (1 through N), and a flag value (which is 1 << the numeric value). (This does mean that no flag has the value 1, so we only have 31 bits available. Tiny violins play.) The other significant change is that the pseudo_debug calls are now implemented with a do/while macro containing a conditional, so that computationally-expensive arguments are never evaluated if the corresponding debug flags weren't set. The assumption is that in the vast majority of cases (specifically, all of them so far) the debug flags for a given call are a compile-time constant, so the nested conditional will never actually show up in code when compiled with optimization; we'll just see the appropriate conditional test. The VERBOSE flag is magical, in that if the VERBOSE flag is used in a message, the debug flags have to have both VERBOSE and at least one other flag for the call to be made. This should dramatically improve performance for a lot of cases without as much need for PSEUDO_NDEBUG, and improve the ability of users to get coherent debugging output that means something and is relevant to a given case. It's also intended to set the stage for future development work involving improving the clarity and legibility of pseudo's diagnostic messages in general. Old things which used numeric values for PSEUDO_DEBUG will sort of continue to work, though they will almost always be less verbose than they used to. There should probably be a pass through adding "| PDBGF_CONSISTENCY" to a lot of the messages that are specific to some other type.
2013-02-26PSEUDO_ALLOW_FSYNC: Allow fsync()pseudo-1.5PSEUDO_1_5Peter Seebach
Some filesystems have buggy semantics where stat(2) will return incorrect sizes for files for a while after some changes, sometimes, unless they've been fsync'd. We still want to disable fsync most of the time, but enabling it for specific programs can be useful. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2013-02-16allow pseudo to force asynchronous behaviorPeter Seebach
The openembedded build, at least with RPM or SMART, is heavily affected by the cost of calling fsync or fdatasync on package databases all the time. Gosh, wouldn't it be nice if we could suppress that without making dozens of highly intrusive and risky changes into RPM, various database packages, and so on? Yes, yes it would. If only there were a program which could intercept system calls and change their behavior! Enter --enable-force-async. There are now wrappers for fsync, fdatasync, and a few related functions. If --enable-force-async is set, these wrappers instantly return 0, even if PSEUDO_DISABLED is set. And with any luck, bitbake will now perform a bit better. Credit for this insight goes to Richard Purdie. I've reimplemented this to add the configure option, and make the fsync suppression work even when PSEUDO_DISABLED is set.
2013-02-16Use in-memory database for filesPeter Seebach
It turns out that file databases don't get very large, and that sqlite3 can be quite fast with an in-memory database. It also turns out that dumping the database to disk on exit (or during idle times) is pretty cheap compared to constant updates. So: We add "--enable-memory-db", which defaults to on if you have sqlite 3.7 or later, and off for 3.6 (because 3.6 has horrible performance with in-memory db on some hosts we tried).
2013-02-13Fix linkat() again.pseudo-1.4.5PSEUDO_1_4_5Peter Seebach
wrap_linkat() was trying to avoid "redundantly" expanding paths before calling real_linkat(). Which is fine when you're not using an absolute path in a chroot environment, but if you are, it ends up calling the real syscall with the absolute path and no chroot prefix. General observation: All the *at() implementations are expanding paths into absolute paths, then dutifully calling real_*at() functions with them anyway. This is silly. Added a note to Futures.txt to fix it some day. In the mean time, linkat() is fixed correctly; it always expands paths, does so exactly once, and then uses the underlying link() call because it doesn't need special processing of directory fds anymore. Also fixed errno stashing to reduce the risk that link() will change errno in a circumstance where it doesn't actually fail.
2013-02-12Fix link() to work when chrootedpseudo-1.4.4PSEUDO_1_4_4Peter Seebach
The automatic path fixups invoked for names which end in the string "path" was still applying to link(), which then called linkat(), which would do the same path fixups; if you were chrooted, this would produce bogus paths. On systems which actually have linkat(), this would produce the even more mysterious behavior that the link would succeed, but the following stat would fail. Solution: Change the wrapfuncs prototypes for link() so it doesn't invoke automatic path name fixups.
2013-01-31Tag: 1.4.3.pseudo-1.4.3PSEUDO_1_4_3Peter Seebach
Fixed up the libdir stuff in a saner way, fixed the @GLIBC_2.7 thing, want to avoid any risk of someone having a stale archive.
2013-01-30Add sqlite-lib setting.pseudo-1.4.2PSEUDO_1_4_2Peter Seebach
There's a few circumstances where sqlite's libdir isn't the same as the directory name we want to use for libpseudo.so, so make it a separate setting. This may obviate the need for --with-static-sqlite. Signed-off-by: seebs <peter.seebach@windriver.com>
2012-12-13tag (and makefile.in) 1.4.2Peter Seebach
2012-11-02Makefile.in/configure: Use $(LIB), not hardcoded lib, for sqlitePeter Seebach
It turns out that the -L usage mostly doesn't matter (usually something else has requested the right directory, or it's the default), but the explicit path to libsqlite3.a hardcoded "lib", and on some systems it should be something else, such as "lib64". Solution: Use $(LIB) for that directory. Note that this may not resolve things if, say, you're doing MIPS n32 on a target where that lives in /usr/lib32, but I think in that case you'd be specifying $libdir, so it should still work out. Also added --with-static-sqlite=/path as an option in case people need to further outsmart this. Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
2012-08-02Remove the _plain thing, use PSEUDO_STATBUF everywhere.Peter Seebach
The _plain thing was added because of clashes between Linux ("struct stat64 for 64-bit file sizes") and Darwin ("struct stat is already 64 bits"). But it turns out not to be enough, because stat will *fail* if it cannot represent a file size, so when something like unlinkat() calls a non-64-bit stat in order to determine whether a file exists, it gets the wrong answer if the file is over 2GB in size. Solution: Continue using PSEUDO_STATBUF, and also provide defines for base_stat() which can be either real_stat() or real_stat64(), etcetera. This eliminates any reason to need the _plain functions. It also suggests that the other real___fxstatat() calls should someday go away because that is an ugly, ugly, implementation detail. As part of testing this, fix up some bitrot which affected Darwin (such as the continue outside of a loop, but inside an #ifdef; that was left over from the conversion of init_one_wrapper to a separate function).
2012-07-27Use .tar.bz2 tarballpseudo-1.4PSEUDO_1_4Peter Seebach
Instead of using .tgz, use .tar.bz2 (and change czf to cjf). This makes life easier for Yocto.
2012-07-20tag 1.4Peter Seebach
2012-07-20Don't try to learn all the architecture-specific flagsPeter Seebach
Pseudo should never have been the one picking -m32/-m64. That should be coming from the build system in some way. Deprecate --arch, add --cflags.
2012-06-281.3.1 tagPeter Seebach
Enough changes to justify a tag.
2012-04-10First pass at smarter handling of multilib compile optionsPeter Seebach
Long story short: ARM doesn't use -m32 and -m64, so make those a little more dependent. We'll probably rework this completely "soon" as we mess with more targets and x32 becomes an issue.
2012-03-27call this 1.3pseudo-1.3PSEUDO_1_3Peter Seebach
2012-03-27Allow static sqlitePeter Seebach
Some systems prefer to avoid messing with LD_LIBRARY_PATH as much, and instead link sqlite statically.
2012-03-27Configuration cleanup for OE-core:Peter Seebach
In OE-Core we need to be able to configure for both 32-bit and 64-bit libpseudo libraries. In order to avoid some complex manipulations, we adjust the configure and Makefile to facilitate this. Upstream-Status: Submitted Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-11-02Name this 1.2pseudo-1.2PSEUDO_1_2Peter Seebach
2011-06-061.1.1 releasePeter Seebach
2011-06-02Call this "version 1.1".Peter Seebach
2011-05-02Accept --libdirColin Walters
The way multilib works on at least Fedora is that --libdir=$prefix/lib64 is passed to configure. The source build system should not attempt to guess at architecture or take other configure flags (like --bits); instead it should default to whatever the given $(CC) does. This patch preserves the ability to specify --bits however.
2011-03-25Merge in ports workPeter Seebach
This is a spiffied-up rebase of a bunch of intermediate changes, presented as a whole because it is, surprisingly, less confusing that way. The basic idea is to separate the guts code into categories ranging from generic stuff that can be the same everywhere and specific variants. The big scary one is the Darwin support, which actually seems to run okay on 64-bit OS X 10.6. (No other variants were tested.) The other example given is support for the old clone() syscall on RHEL 4, which affects some wrlinux use cases. There's a few minor cleanup bits here, such as a function with inconsistent calling conventions, but nothing really exciting.
2011-02-01... and pseudodb needs -ldlpseudo-1.0PSEUDO_1_0Peter Seebach
2011-02-01Oh, sqlite needs -lpthread sometimesPeter Seebach
2011-02-01Fix linkage issues due to missing -ldlPeter Seebach
2010-12-16The maketables thing made it possible for some modules to get builtPeter Seebach
before pseudo_tables.h existed. Fixed.
2010-11-30Major shift: All the id_t types have been reworked so that theyPeter Seebach
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.
2010-11-18Messing with makewrappers: Move templating code out (for planned usePeter Seebach
in an incoming "maketables".)
2010-10-11Major change: Replace the shell-based makewrappers with a PythonPeter Seebach
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.