[tor-bugs] #10935 [meek]: Make bundles featuring meek

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu May 8 19:14:34 UTC 2014


#10935: Make bundles featuring meek
-------------------------+--------------------------
     Reporter:  dcf      |      Owner:  dcf
         Type:  project  |     Status:  needs_review
     Priority:  normal   |  Milestone:
    Component:  meek     |    Version:
   Resolution:           |   Keywords:  meek
Actual Points:           |  Parent ID:
       Points:           |
-------------------------+--------------------------

Comment (by dcf):

 The question came up of how much meek increases the size of the bundles. I
 compared [https://people.torproject.org/~dcf/pt-bundle/3.6.1-meek-1/
 3.6.1-meek-1] with [https://www.torproject.org/dist/torbrowser/3.6.1/
 3.6.1] and the summary is:
  * 1.7 MB increase in linux xz (29 MB to 31 MB)
  * 1.9 MB increase in windows exe (26 MB to 28 MB)
  * 2.4 MB increase in mac dmg (31 MB to 33 MB)

 The increase is almost entirely caused by new executables: the size of the
 extra Firefox profile and extension, documentation, etc. is negligible.

 Here's a list of all the added files in the linux bundle with their sizes:
 {{{
 967  ./Data/Browser/profile.meek-http-helper/user.js
 2.9K ./Docs/meek/README
 3.0K ./Docs/meek/meek-server.1
 4.1K ./Docs/meek/meek-client.1
 5.5K ./Data/Browser/profile.meek-http-helper/extensions/meek-http-
 helper at bamsoftware.com.xpi
 6.9K ./Docs/PluggableTransports/LICENSE.CC0
 3.5M ./Tor/PluggableTransports/meek-client-torbrowser
 7.6M ./Tor/PluggableTransports/meek-client
 }}}
 Clearly the two programs meek-client-torbrowser and meek-client are the
 only files that matter. On disk they are 11.2 MB together. When I compress
 them with xz, they take up 1.7 MB.
 {{{
 1.7M t.tar.xz
 }}}

 The large size of the binaries is caused by static linking by the golang
 compiler. I don't think we want to try to circumvent Go's preference for
 static linking (see e.g. http://harmful.cat-v.org/software/dynamic-
 linking/); compression seems to get rid of most of the redundancy anyway.
 The large executable sizes are a known problem; see
 [https://code.google.com/p/go/issues/detail?id=6853 issue 6853: binaries
 too big and growing] and [https://donatstudios.com/Golang-Binary-Sizes Go
 Binary Sizes Are Growing out of Control]. It's supposed to be better in
 the upcoming Go 1.3 (we're using Go 1.2). I tried compiling with a 1.3
 beta and it does save some bytes, though compression makes it not matter
 much:
 With Go 1.2:
 {{{
 3.5M ./Tor/PluggableTransports/meek-client-torbrowser
 7.6M ./Tor/PluggableTransports/meek-client
 ----
 1.7M t.tar.xz
 }}}
 With Go 1.3:
 {{{
 2.8M ./Tor/PluggableTransports/meek-client-torbrowser
 6.0M ./Tor/PluggableTransports/meek-client
 ----
 1.6M t.tar.xz
 }}}

 == Appendix ==

 For the record, here are the exact bundle sizes of 3.6.1 and 3.6.1-meek-1:
 {{{
 30021204 tor-browser-linux64-3.6.1_en-US.tar.xz
 31790408 tor-browser-linux64-3.6.1-meek-1_en-US.tar.xz
 26949533 torbrowser-install-3.6.1_en-US.exe
 28954030 torbrowser-install-3.6.1-meek-1_en-US.exe
 31522646 TorBrowser-3.6.1-osx32_en-US.dmg
 34053808 TorBrowser-3.6.1-meek-1-osx32_en-US.dmg
 }}}

 Here are the added files and their sizes for windows (missing doc files
 are #11834). The extra terminateprocess-buffer.exe program is a special
 program required only on windows. I derived this output from `diff -u <(cd
 3.6.1/windows && find . -type f -print0 | xargs -0 ls -lh) <(cd
 3.6.1-meek-1/windows && find . -type f -print0 | xargs -0 ls -lh)`.
 {{{
 967  ./$_OUTDIR/Data/Browser/profile.meek-http-helper/user.js
 5.5K ./$_OUTDIR/Data/Browser/profile.meek-http-helper/extensions/meek-
 http-helper at bamsoftware.com.xpi
 6.9K ./$_OUTDIR/Docs/PluggableTransports/LICENSE.CC0
 2.2M ./$_OUTDIR/Tor/PluggableTransports/terminateprocess-buffer.exe
 2.7M ./$_OUTDIR/Tor/PluggableTransports/meek-client-torbrowser.exe
 5.8M ./$_OUTDIR/Tor/PluggableTransports/meek-client.exe
 }}}
 Again compression of the executables accounts for essentially all the
 difference in bundle sizes.
 {{{
 2.2M ./$_OUTDIR/Tor/PluggableTransports/terminateprocess-buffer.exe
 2.7M ./$_OUTDIR/Tor/PluggableTransports/meek-client-torbrowser.exe
 5.8M ./$_OUTDIR/Tor/PluggableTransports/meek-client.exe
 ----
 1.8M t.7z
 }}}

 Here are the added files and their sizes for mac (missing doc files are
 [https://gitweb.torproject.org/user/dcf/tor-browser-
 bundle.git/commitdiff/9d611fdee18b0b1658a09e1b134511768e9b7eca 9d611fde]).
 {{{
 967  ./TorBrowser.app/Data/Browser/profile.meek-http-helper/user.js
 5.5K ./TorBrowser.app/Data/Browser/profile.meek-http-helper/extensions
 /meek-http-helper at bamsoftware.com.xpi
 6.9K ./TorBrowser.app/Docs/PluggableTransports/LICENSE.CC0
 2.8M ./TorBrowser.app/Tor/PluggableTransports/meek-client-torbrowser
 6.2M ./TorBrowser.app/Tor/PluggableTransports/meek-client
 }}}
 The bz2 compression of the dmg container doesn't save as much in this
 case.
 {{{
 2.8M ./TorBrowser.app/Tor/PluggableTransports/meek-client-torbrowser
 6.2M ./TorBrowser.app/Tor/PluggableTransports/meek-client
 ----
 2.5M t.tar.bz2
 }}}

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/10935#comment:15>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list