summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Add remaining obfs3 fingerprints.3.6-betaDavid Fifield2014-01-15
|
* Add bridge keyids where I was able to find them.David Fifield2014-01-12
|
* Remove LearnCircuitBuildTimeout and CircuitBuildTimeout from flash proxy config.David Fifield2014-01-12
| | | | | | | Mike tells me that these are no longer necessary since #3443 ("Client with low CBT can't establish any circuits") was fixed. I removed the config from my hourly tests and it doesn't seem to increase the number of failures.
* Copy PT programs and config only when making "beta".David Fifield2014-01-12
|
* Move PT config into separate torrc-appendix files.David Fifield2014-01-12
|
* Source versions in gitian-bundle.yml.David Fifield2014-01-12
|
* Use version number 3.6-beta-1 for the "beta" target.David Fifield2014-01-12
|
* Add "beta" target.David Fifield2014-01-12
|
* Upgrade another obfs2 bridge to obfs3.David Fifield2014-01-12
|
* Upgrade a couple more bridges to obfs3.David Fifield2014-01-12
|
* Add python to packages in gitian-bundle.yml.David Fifield2014-01-12
| | | | | | | | It seems to be needed in makexpi.sh. My guess is that python was usually installed incidentally by a previous build step, and you would see an error only if you started the bundle step with a clean VM. https://trac.torproject.org/projects/tor/ticket/10387
* Add pluggable transport licenses.David Fifield2014-01-12
| | | | | Copied from /pluggable-transports/bundle.git/doc 86efa19e1d7fb8f75cd1d9b126d40263658d27bb
* Add pt configuration to torrcs.David Fifield2014-01-12
| | | | | | | | | | | | | | | Bridges are commented out. With #5018, we could leave in ClientTransportPlugin lines, and tor would not start them until there is a Bridge line that needs them. #5018 is only merged into 0.2.5 at this point. https://trac.torproject.org/projects/tor/ticket/5018 Even more forward-looking, we might need another way to take care of transports that discover their own bridges, and want to run even without bridges configured. https://trac.torproject.org/projects/tor/ticket/5018#comment:17
* Apply bug5018.patch.David Fifield2014-01-12
|
* Apply bug10297.patch.David Fifield2014-01-12
|
* Copy in patch files.David Fifield2014-01-12
|
* Add bug5018.patch. (Don't start ClientTransportPlugin without Bridges.)David Fifield2014-01-12
| | | | | | | | | | | | | This patch prevents transport plugins from being started if there is no bridge that needs them. It corresponds to merge 4b6f074df9c540cb4847793b7e8243c8f642de0a in the tor repo. I made it by doing git format-patch master..bug5018 git cat 000* > bug5018.patch in the tor repo, then I applied it on top of tor-0.2.4.18-rc with GIT_COMMITTER_NAME="nobody" GIT_COMMITTER_EMAIL="nobody@localhost" GIT_COMMITTER_DATE="2000-01-01 00:00:00" git am bug5018.patch and did another format-patch and cat.
* Add bug10297.patch. (Set CREATE_NO_WINDOW.)David Fifield2014-01-12
| | | | | | This is the patch from #10297, that causes Tor to set the CREATE_NO_WINDOW flag so console windows don't appear. It has been applied to tor master but not yet to TOR_TAG.
* Set GIT_COMMITTER_{NAME,EMAIL,DATE} in preparation for applying patches.David Fifield2014-01-12
| | | | | | | | | | | These values are included in the commit hash (which is in turn included in the tor source code as tor_git_revision). GIT_COMMITTER_NAME is probably always "Ubuntu" in our configuration, and GIT_COMMITTER_DATE isn't strictly needed as it's taken care of by libfaketime. But GIT_COMMITTER_EMAIL, if not set, is constructed as something like "ubuntu@$(hostname --fqdn)", which can vary between hosts even within the build VM.
* Update the index in preparation for applying patches.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using "git am" to apply a patch was failing randomly using git version 1.7.0.4 on the lucid i386 and amd64 images. The error message was: ubuntu@ubuntu:~/build/tor$ git am ~/build/0001-Set-CREATE_NO_WINDOW-in-tor_spawn_background.patch Applying: Set CREATE_NO_WINDOW in tor_spawn_background. error: src/common/util.c: does not match index Patch failed at 0001 Set CREATE_NO_WINDOW in tor_spawn_background. When you have resolved this problem run "git am --resolved". If you would prefer to skip this patch, instead run "git am --skip". To restore the original branch and stop patching run "git am --abort". I could log in and run the command manually; it would fail perhaps 10% of the time. The rest of the time it would work as expected. What I mean is that I could set the working tree to the tag tor-0.2.4.18-rc using either of git checkout tor-0.2.4.18-rc git reset --hard tor-0.2.4.18-rc try running the "git am" command, and sometimes it would work, sometimes not. I would reset the state of the tree and again, sometimes it would work, and sometimes not. I checked many times using "git status" and "git ls-files -s" to see that there were no changes and nothing staged in the working tree. I believe the cause of the error is the bug fixed by this commit: "am: refresh the index at start and --resolved" https://github.com/git/git/commit/2a6f08ac1f6949ed0072aed3240bc04d80051851 It doesn't seem to have made it into the release notes, but according to the history it first appeared in 1.7.6.1. See also the email thread leading to the commit: http://git.661346.n2.nabble.com/quot-git-apply-check-quot-successes-but-git-am-says-quot-does-not-match-index-quot-td6684646.html I never got this error with "git am" for the windows build on the precise i386 VM, which has git version 1.7.9.5, which fits with the problem being a git bug that has since been fixed.
* Forcibly overwrite .pyc timestamps.David Fifield2014-01-12
| | | | | | | | | | | | | | | For each extension module, py2exe generates and byte-compiles a tiny stub .py file that loads the module: creating python loader for extension 'bz2' (Z:\home\ubuntu\install\python\DLLs\bz2.pyd -> bz2.pyd) These .py stubs are dynamically generated at py2exe time, so we don't have an opportunity to set the mtime of .py files ahead of time. But we can set the .pyc timestamps after the fact. I believe this commit makes bd4b3de712e345adc20ec9e959759f03da5826bc superfluous, but I'm leaving that one because I hope there is a nicer way to do this one.
* Add pyc-timestamp.sh to stomp .pyc timestamps.David Fifield2014-01-12
|
* Reset mtimes on .py files before py2exe.David Fifield2014-01-12
| | | | | | | .pyc files contain the mtime of the .py file used to produce them. I couldn't find a way to prevent py2exe from byte-compiling .pyc files. http://benno.id.au/blog/2013/01/15/python-determinism
* Manually copy in python27.dll.David Fifield2014-01-12
| | | | | | py2exe run under Wine doesn't get this file, so copy it in manually. http://bugs.winehq.org/show_bug.cgi?id=3591
* Build flashproxy for windows.David Fifield2014-01-12
|
* Build m2crypto for windows.David Fifield2014-01-12
|
* Build obfsproxy for windows.David Fifield2014-01-12
|
* Build twisted for windows.David Fifield2014-01-12
|
* Build zope.interface for windows.David Fifield2014-01-12
| | | | | | | | | | | The step of creating zope/__init__.py is needed so that py2exe can find the package. This need was previous discovered: https://gitweb.torproject.org/pluggable-transports/bundle.git/commitdiff/4482c5f5ad63b320e6208547a091f47005394ec9 then removed because easy_install made it unnecessary: https://gitweb.torproject.org/pluggable-transports/bundle.git/commitdiff/64044647bf5412e5aa3a930a577e1dbb8cd91276 Now we need it back because we're not using easy_install.
* Build pycrypto for windows.David Fifield2014-01-12
|
* Build pyptlib for windows.David Fifield2014-01-12
|
* Build setuptools for windows.David Fifield2014-01-12
|
* Compile and install wine-wrappers.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | gcc.exe, dllwrap.exe, and swig.exe need to be actual executables. If you merely rename gcc.py and dllwrap.py, the programs run, but they immediately detach themselves from the shell and run in the background. So when py2exe calls a bunch of programs in series: gcc -o file1.o file1.c dllwrap file1.o gcc -o file2.o file2.c dllwrap file2.o gcc -o file3.o file3.c dllwrap file3.o all the programs would run essentially simultaneously. dllwrap wasn't waiting for gcc to finish writing the object file that it (dllwrap) needed as input. (You could actually get a successful build out of this, if you ran build_ext once, waiting a few seconds for all the gccs to finish, then ran it again. The second time, distutils would notice that the object files already existed, and run only the dllwrap commands, which would succeed because the object files were already in place.)
* Add gcc, dllwrap, and swig wrappers for Wine.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Python distutils, with the "mingw32" compiler profile, is inflexible. It hardcodes the names "gcc.exe" and "dllwrap.exe", and passes them fixed options. It's not possible to control it with environment variables like CC and CFLAGS. Before Python 2.7.6, distutils always passes the option -mno-cygwin to gcc, which causes an error. Additionally, when distutils is run under Wine, it passes Windows-style paths with backslashes to our unsuspecting i686-w64-mingw32-gcc. These wrapper programs strip -mno-cygwin, and convert Windows paths to Unix paths. They also set LD_PRELOAD and FAKETIME, because those can't be set for the outer Wine process. Doing a subprocess.Popen of a Unix program from within Wine mostly works. For example, subprocess.Popen(["/usr/bin/i686-w64-mingw32-gcc"]) starts a new compiler process. However, if you .wait() on the process object, you get a "WindowsError: [Error 6] Invalid handle". The same goes for the implicit wait in subprocess.call and subprocess.check_output. The .pid of such processes is 0. What you can do, however, is read from one of the process's output streams--it will be closed when the process terminates. Because we know we are dealing with gcc subprocesses, we read its stderr and look for the string " error: ". If it appears, we return a non-zero status code. We don't return non-zero merely on a non-empty stderr, because warnings don't usually cause that. The difficulty doesn't exist when running native Windows binaries. That's why we can do subprocess.call(["winepath", ...]): because winepath.exe is a native binary that comes with Wine.
* Install py2exe for windows.David Fifield2014-01-12
| | | | | | The only binary distribution is a self-installing executable, and I couldn't find a way to make it run from the command line. So extract it with 7z and copy its contents.
* Install Windows Python MSI package.David Fifield2014-01-12
|
* Install newer wine from Ubuntu PPA.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main reason for a newer wine is to work around an issue in the Ubuntu's standard wine1.4 that often manifests when running Python code, leading to a page fault. "blender 2.61 crashes on start (python3.2) http://bugs.winehq.org/show_bug.cgi?id=29764 "EVE Online crashes when viewing certain ship models (T3 ships)" http://bugs.winehq.org/show_bug.cgi?id=30515 The crash is triggered by the _PyVerify_fd function, which peeks at a Windows-internal data structure, implicitly expecting it to have been allocated on the heap. http://hg.python.org/cpython/file/694e2708b4a8/Modules/posixmodule.c#l1078 Wine 1.4 doesn't do this structure in the way Python expects, leading to the page fault. _PyVerify_fd is called by many Python functions that deal with file descriptor numbers, such as io.open and os.fstat. This is sufficient to crash Python run under Wine 1.4: >>> import os >>> os.fstat(4) (The crash is actually at RtlHeapSize, called by _msize, called by _PyVerify_fd.) I initially tried to patch around such problematic calls, but they are too pervasive. When running wineboot or any other Wine command, it is necessary to remove libfaketime from LD_PRELOAD. "[Bug 31237] New: libfaketime: integrate with libfaketime to allow running a program with a fake time" http://bugs.winehq.org/show_bug.cgi?id=31237 My experience matches what appears in the bug report. With libfaketime in LD_PRELOAD, I got this error every time I ran a Wine command: wine: created the configuration directory '/home/ubuntu/.wine' wine: Unhandled page fault on read access to 0x00000000 at address (nil) (thread 000b), err:seh:start_debugger Couldn't start debugger ("winedbg --auto 10 104") (2) Read the Wine Developers Guide on how to set up winedbg or another debugger wine: Unhandled page fault on read access to 0x00000000 at address (nil) (thread 0011), err:seh:start_debugger Couldn't start debugger ("winedbg --auto 16 68") (2) Read the Wine Developers Guide on how to set up winedbg or another debugger
* Add GPG key for Ubuntu Wine Team.David Fifield2014-01-12
| | | | | | | https://launchpad.net/~ubuntu-wine/+archive/ppa http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x5A9A06AEF9CB8DB0. gpg --output gpg/ubuntu-wine.gpg --export --export-options export-minimal 0x5A9A06AEF9CB8DB0
* Install pluggable-transports into windows bundle.David Fifield2014-01-12
|
* Call gitian-pluggable-transports.yml from mkbundle-windows.sh.David Fifield2014-01-12
|
* Add gitian-pluggable-transports.yml for windows.David Fifield2014-01-12
| | | | Empty except for copied openssl build from gitian-tor.yml.
* Download setuptools.David Fifield2014-01-12
|
* Download py2exe installer.David Fifield2014-01-12
|
* Download Windows Python MSI package.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | | gpg --output gpg/PYTHON_MSI.gpg --export --export-options export-minimal 0x7D9DC8D2 We need to have a Python installation in order to compile various Python packages. On GNU/Linux, we can use a python-dev package. The Mac OS X SDK contains a Python "framework." I tried cross-compiling Python using the mingw-w64 tools, but that seems unsupported and likely to require many third-party patches. "cross and native build of python for mingw* hosts" http://bugs.python.org/issue3871 "Add support for mingw" http://bugs.python.org/issue6335 "Cross compilation patches and build scripts for CPython" https://github.com/mingwandroid/crucifixion-freedom "Cross compilation patches for Python 2.7.3 and 3.3.0, targeting MinGW/Darwin/Linux and MinGW builds generated from these." https://code.google.com/p/mingw-and-ndk/
* Force 32-bit Python 2.6 on Mac.David Fifield2014-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears that we must use a Python that is compatible with the compiled Python modules we provide. Apple's custom python binary provides environment variables to control the version and word length: VERSIONER_PYTHON_VERSION=2.6 VERSIONER_PYTHON_PREFER_32_BIT=yes See python(1). With neither of these variables set, on OS X 10.9, importing a module results in: ImportError: dlopen(TorBrowserBundle_en-US.app/Tor/Crypto/Cipher/_AES.so, 2): no suitable image found. Did find: /Users/david/TorBrowserBundle_en-US.app/Tor/Crypto/Cipher/_AES.so: mach-o, but wrong architecture The same happens if VERSIONER_PYTHON_VERSION=2.6 but VERSIONER_PYTHON_PREFER_32_BIT is unset. Setting VERSIONER_PYTHON_PREFER_32_BIT=yes without setting VERSIONER_PYTHON_VERSION causes this message in the terminal along with a popup offering to send a crash report: Fatal Python error: Interpreter not initialized (version mismatch?) Abort trap: 6 Setting both variables seems to work. This issue may be a manifestation of that our compiled modules are i386-only: $ file Crypto/Cipher/_AES.so Crypto/Cipher/_AES.so: Mach-O dynamically linked shared library i386 Whereas /usr/bin/python is both 32-bit and 64-bit. The 2.x series of PT bundles used fat shared objects and didn't show this problem.
* Install a pwd-setting tor wrapper as in #10030.David Fifield2014-01-12
|
* Build flashproxy for mac.David Fifield2014-01-12
|
* Build m2crypto for mac.David Fifield2014-01-12
|
* Build obfsproxy for mac.David Fifield2014-01-12
|
* Build twisted for mac.David Fifield2014-01-12
|