Commits on Jul 26, 2017
  1. Added t7058 - change a .hidden file with the monitor running.

    We allow hidden files now, but the monitor was using its own separate
    function to determine which files can be ignored. It should use the same
    check that we use during scan.
    committed Jun 29, 2017
Commits on Jul 25, 2017
  1. Added t4185 - ignore \??\nul on Windows

    We already are supposed to ignore "nul", but sometimes Windows uses
    \??\nul instead. Fortunately, using cmd.exe to do 'echo foo > NUL' uses
    this version, so it is easy to test for.
    Fixes #321
    committed Jul 25, 2017
Commits on Jul 24, 2017
  1. Use a single thread for the monitor autoupdate waiter.

    Similar to the master fork, the monitor was spawning a detached pthread
    to wait for the autoupdate sub-process. We can just use a single thread
    that is joined when the monitor closes to make helgrind happy.
    committed Jul 24, 2017
  2. Use a single waiter thread.

    The master fork loop was spawning a separate thread for each subprocess
    to do a waitpid(). Instead we can put the process -> sid mapping
    (child_wait_info) in a tree and use a single thread to do the waits. This
    way we can join the single thread during shutdown to avoid errors with
    helgrind caused by detached threads.
    committed Jul 24, 2017
Commits on Jul 21, 2017
  1. Allow specifying the archiver command

    Aside from just being more correct and in line with the recent work for
    making Tup's own build more configurable, this allows the use of the
    gcc-ar wrapper, which is needed when using LTO.
    kalrish committed with Jul 20, 2017
  2. Support building on Windows

    kalrish committed with Jun 25, 2017
Commits on Jul 19, 2017
  1. Fix segfault in fake_mtime()

    committed Jul 18, 2017
  2. Fix t4105 on some Windows installs.

    Sometimes we get a symbol like '.rdata$zzz', which makes looking for a
    single-character symbol named 'z' more tricky. So let's make the names
    more unique.
    committed Jul 18, 2017
  3. Use a struct for database upgrades.

    This gets rid of the ugly switch/case fallthrough nonsense.
    committed Jul 19, 2017
  4. Added t1009 - basic verification of database bumps.

    This verifies that we can go from database version 1 to the most recent
    DB successfully. It does not verify all intermediate behavior though,
    such as duplicate ghosts that may have been created prior to version 12.
    committed Jul 17, 2017
  5. Fixup some database version bumps.

    Some of these used tup_db_* calls, which may change with database
    version. So even if they worked in the past, as the database is updated
    the calls are no longer valid. That means we just have to use raw SQL
    for each of the updates.
    committed Jul 17, 2017
  6. Use arrays of database statements.

    Some tup_db_* calls should still be separated out into the lists of
    statements, but this is a good start to simplifying the upgrade path.
    committed Jul 17, 2017
  7. Create lock files if they don't exist when trying to open the lock.

    This lets us be a bit more flexible when upgrading old databases.
    committed Jul 17, 2017
  8. Fix symlink in t8040

    committed Jul 19, 2017
Commits on Jun 12, 2017
  1. Update SQLite 3.19.2 -> 3.19.3

    committed Jun 12, 2017
Commits on May 25, 2017
  1. use correct sys header for 'major' macro

    It fixes warning:
    fuse_server.c:208:13: warning: In the GNU C Library, "major" is defined
     by <sys/sysmacros.h>. For historical compatibility, it is
     currently defined by <sys/types.h> as well, but we plan to
     remove this soon. To use "major", include <sys/sysmacros.h>
     directly. If you did not intend to use a system-defined macro
     "major", you should undefine it after including <sys/types.h>.
         if(major(st.st_dev) != major(homest.st_dev) ||
    anatol committed with May 25, 2017
  2. fix length for memset()

    memset need specify number of bytes, i.e. we need to multiple number of elements to
    size of the element.
    It fixes warning:
    parser.c:3412:2: warning: 'memset' used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size]
    anatol committed with May 25, 2017
  3. Update SQLite 3.19.0 -> 3.19.2

    committed May 25, 2017
Commits on May 23, 2017
  1. Added t6073 - broken update test.

    In this case, a directory is re-created as a new node, but the old
    directory was a dependent of another. So in parse_dependent_tupfiles(),
    it would try to parse something that was a file rather than a directory.
    committed May 23, 2017
  2. Added

    Fixes #314.
    committed May 23, 2017
Commits on May 22, 2017
  1. Update SQLite 3.18.0 -> 3.19.0

    committed May 22, 2017
Commits on May 12, 2017
  1. Update SQLite 3.16.2 -> 3.18.0

    committed May 12, 2017
  2. Added t2206 - display all output errors at once.

    It can be annoying to only get one error at a time, fix that in the
    Tupfile, and then see the next error that it would've hit for the same
    rule (eg: if multiple outputs exist in the tree already).
    committed May 12, 2017
Commits on Jan 27, 2017
  1. remove shell glob from gitignore

    tharvik committed with Dec 14, 2016
Commits on Jan 23, 2017
  1. dllinject: Reduce stack memory usage of canon_path()

    Simply allocating the full 128 KiB for the two wide paths on the stack
    upfront will cause an immediate stack overflow crash when tup is used on
    executables that define a stack reserve size of less than 128 KiB in the
    PE header. In my particular case, this happened with the old Turbo
    Assembler by Borland, version 5.0, that only defines a stack reserve
    size of 8 KiB.
    If tup still used CreateRemoteThread() for DLL injection on Windows, it
    would have been possible to define a custom stack reserve size for the
    DLL injection thread, which might have been better than messing around
    with alloca() and hoping that the final path still fits into whatever
    small stack size that tup would have to work with. So yeah, this is only
    a workaround, but I guess it's enough. Since this issue hasn't come up
    before, it probably only affects similarly antique compilers that are
    unlikely to even support paths that long anyway.
    Also, for some reason, doing this in canon_path() is enough to avoid
    stack overflow crashes and have tup work correctly in my case, even
    though mhandle_file() also allocates 128 KiB of stack space.
    nmlgc committed with Jan 17, 2017
Commits on Jan 16, 2017
Commits on Jan 12, 2017
  1. Added t2205 - support both .bat and .sh for 'tup generate' on Windows

    We had to fix up path seperators since we need just '/' in the shell
    scripts, but otherwise it is pretty straightforward.
    committed Jan 12, 2017