build 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/bash
  2. [% c("var/set_default_env") -%]
  3. [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
  4. distdir=/var/tmp/dist/[% project %]
  5. mkdir -p /var/tmp/build
  6. [% IF c("var/linux") || c("var/windows") %]
  7. TORCONFIGDIR="$distdir/Data/Tor"
  8. mkdir -p $TORCONFIGDIR
  9. mkdir -p "$distdir/Tor"
  10. [% END %]
  11. [% IF c("var/osx") %]
  12. TORBINDIR="$distdir/Contents/MacOS/Tor"
  13. TORCONFIGDIR="$distdir/Contents/Resources/TorBrowser/Tor"
  14. mkdir -p $distdir/bin
  15. mkdir -p $TORBINDIR
  16. mkdir -p $TORCONFIGDIR
  17. [% END %]
  18. tar -C /var/tmp/dist -xf [% c('input_files_by_name/openssl') %]
  19. tar -C /var/tmp/dist -xf [% c('input_files_by_name/libevent') %]
  20. [% IF c("var/linux") && c("var/nightly") %]
  21. tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
  22. export PATH=/var/tmp/dist/rust/bin:$PATH
  23. [% END %]
  24. tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
  25. libeventdir=/var/tmp/dist/libevent
  26. openssldir=/var/tmp/dist/openssl
  27. [% IF c("var/windows") %]
  28. tar -C /var/tmp/build -xf [% c('input_files_by_name/zlib') %]
  29. zlibdir=/var/tmp/build/zlib
  30. cp $zlibdir/lib/*.dll $openssldir/bin/*.dll $libeventdir/bin/*.dll \
  31. $gcclibs/*.dll $distdir/Tor/
  32. [% END %]
  33. [% IF c("var/linux") %]
  34. mkdir -p "$distdir/Debug/Tor"
  35. cp $openssldir/lib/libssl.so.1.0.0 "$distdir/Tor/"
  36. cp $openssldir/lib/libcrypto.so.1.0.0 "$distdir/Tor/"
  37. cp $libeventdir/lib/libevent-2.0.so.5 "$distdir/Tor/"
  38. # We need to copy the libstdc++.so.6 for Tor Browser on older Linux distros.
  39. # Copying it into /Browser, which feels more natural, and amending
  40. # LD_LIBRARY_PATH breaks updates from a Tor Browser with the old
  41. # LD_LIBRARY_PATH value to the Tor Browser with the newer one. Thus, we copy
  42. # the libstdc++ into the directory with the libs tor depends on, too. See bug
  43. # 13359 for further details.
  44. cp /var/tmp/dist/gcc/[% c("var/libdir") %]/libstdc++.so.6 "$distdir/Tor/"
  45. [% IF c("var/asan") -%]
  46. cp /var/tmp/dist/gcc/[% c("var/libdir") %]/libasan.so.3 "$distdir/Tor/"
  47. cp /var/tmp/dist/gcc/[% c("var/libdir") %]/libubsan.so.0 "$distdir/Tor/"
  48. [% END -%]
  49. chmod 700 "$distdir"/Tor/*.so*
  50. # This is needed to make RPATH unavailable. See bug 9150.
  51. export LD_LIBRARY_PATH="$distdir/Tor/"
  52. [% END %]
  53. [% IF c("var/osx") %]
  54. cp $libeventdir/lib/libevent-*.dylib $TORBINDIR/
  55. [% END %]
  56. cd /var/tmp/build/[% project %]-[% c('version') %]
  57. # add git hash to micro-revision.i for #24995
  58. echo '"[% c("abbrev", { abbrev_length => 16 }) %]"' > micro-revision.i
  59. ./autogen.sh
  60. find -type f -print0 | xargs -0 [% c("var/touch") %]
  61. [% IF c("var/linux") && c("var/nightly") %]TOR_RUST_DEPENDENCIES=`pwd`/src/ext/rust/crates[% END %] ./configure --disable-asciidoc --with-libevent-dir="$libeventdir" --with-openssl-dir="$openssldir" \
  62. [% IF c("var/asan") %]--enable-fragile-hardening[% END %] \
  63. [% IF c("var/windows") %]--with-zlib-dir="$zlibdir"[% END %] \
  64. [% IF c("var/osx") %]--enable-static-openssl[% END %] \
  65. [% IF c("var/linux") && c("var/nightly") %]--enable-rust[% END %] \
  66. --prefix="$distdir" [% c("var/configure_opt") %]
  67. [% IF c("var/osx") || c("var/windows") -%]
  68. export LD_PRELOAD=[% c("var/faketime_path") %]
  69. export FAKETIME="[% USE date; GET date.format(c('timestamp'), format = '%Y-%m-%d %H:%M:%S') %]"
  70. [% END -%]
  71. make -j[% c("buildconf/num_procs") %]
  72. make install
  73. [% IF c("var/osx") -%]
  74. unset LD_PRELOAD
  75. [% END -%]
  76. cp $distdir/share/tor/geoip $TORCONFIGDIR
  77. cp $distdir/share/tor/geoip6 $TORCONFIGDIR
  78. [% IF c("var/osx") %]
  79. LIBEVENT_FILE=`basename $libeventdir/lib/libevent-*.dylib`
  80. cd $distdir
  81. cp bin/tor $TORBINDIR/
  82. cd $TORBINDIR/
  83. x86_64-apple-darwin10-install_name_tool -change $libeventdir/lib/$LIBEVENT_FILE @executable_path/$LIBEVENT_FILE tor
  84. [% END %]
  85. cd $distdir
  86. [% IF c("var/windows") %]
  87. install -s $distdir/bin/tor.exe $distdir/Tor/
  88. [% IF c("var/expert_bundle") %]
  89. install -s $distdir/bin/tor-gencert.exe $distdir/Tor/
  90. [% END %]
  91. [% END %]
  92. [% IF c("var/linux") %]
  93. # Strip and generate debuginfo for libs
  94. objcopy --only-keep-debug $distdir/bin/tor $distdir/Debug/Tor/tor
  95. install -s $distdir/bin/tor $distdir/Tor/
  96. objcopy --add-gnu-debuglink=./Debug/Tor/tor $distdir/Tor/tor
  97. for i in $distdir/Tor/*so*
  98. do
  99. LIB=`basename $i`
  100. objcopy --only-keep-debug $distdir/Tor/$LIB $distdir/Debug/Tor/$LIB
  101. strip $distdir/Tor/$LIB
  102. objcopy --add-gnu-debuglink=./Debug/Tor/$LIB $distdir/Tor/$LIB
  103. done
  104. [% END %]
  105. mkdir -p [% dest_dir _ '/' _ c('filename') %]
  106. [%
  107. IF c("var/expert_bundle");
  108. SET win_arch = c('var/windows-x86_64') ? 'win64' : 'win32';
  109. c('zip', {
  110. zip_src => [ 'Data', 'Tor', ],
  111. zip_args => dest_dir _ '/' _ c('filename') _ '/tor-' _ win_arch _ '-' _ c("version") _ '.zip',
  112. });
  113. ELSE;
  114. IF c("var/osx");
  115. SET tarsrcdir = [ 'Contents' ];
  116. ELSE;
  117. SET tarsrcdir = [ 'Data', 'Tor', ];
  118. END;
  119. c('tar', {
  120. tar_src => tarsrcdir,
  121. tar_args => '-czf ' _ dest_dir _ '/' _ c('filename') _ '/tor.tar.gz',
  122. });
  123. END;
  124. %]
  125. [% IF c("var/linux") %]
  126. [% c('tar', {
  127. tar_src => [ 'Debug' ],
  128. tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/tor-debug.tar.xz',
  129. }) %]
  130. [% END %]