sphinx-contrib/sphinxcontrib-versioning

Building on windows: tar falls over trying to chdir to tempdir via -C

nicolan opened this issue · 1 comments

I leap in where angels fear to tread.

Attempting to use sphinx-versioning on Windows (both native and cygwin). My first problem was that the pipe of git archive ... | tar -C was failing. The command with arguments as given worked okay from the command line, but from within Python, tar was falling over trying to chdir to the temp dir. I got past that by patching thusly to let Python set the cwd instead of relying on tar:

In git.py : export

    git_command = ['git', 'archive', '--format=tar', commit, '--output='+os.path.join(temp_dir,'foo.tar')]
    # Run commands.
    run_command(local_root, git_command, piped=None)
    run_command(temp_dir, ['tar', '-x', '-f', 'foo.tar'], piped=None)
    os.chdir(local_root)

My python is nonexistent so I submit the gist of the idea here only. (foo.tar is madness? os.chdir may not be necessary?)

Getting this to work on Windows won't be trivial since I used os.path.join() for URLs and multiprocess features that probably don't work on Windows without if statements. Also Windows doesn't support pipes (though cygwin does).

I'm tracking Windows support in #3 but it will be a few months before I can get to it.