libv8 5.1.281.59.1 → 5.2.361.43.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -7
  3. data/CHANGELOG.md +9 -1
  4. data/README.md +41 -23
  5. data/Rakefile +1 -1
  6. data/ext/libv8/builder.rb +1 -1
  7. data/ext/libv8/compiler/apple_llvm.rb +5 -4
  8. data/ext/libv8/compiler/clang.rb +5 -4
  9. data/ext/libv8/compiler/gcc.rb +5 -4
  10. data/ext/libv8/compiler/generic_compiler.rb +11 -1
  11. data/lib/libv8/version.rb +1 -1
  12. data/patches/0001-Build-a-standalone-static-library.patch +26 -0
  13. data/patches/{0002-Disable-building-tests.patch → 0002-Don-t-compile-unnecessary-stuff.patch} +31 -34
  14. data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +10 -10
  15. data/patches/0004-Reinterpret-thread-hash-for-FreeBSD-too.patch +25 -0
  16. data/release/armhf-linux/Vagrantfile +95 -0
  17. data/release/armhf-linux/initrd.img +0 -0
  18. data/release/armhf-linux/vmlinuz +0 -0
  19. data/release/{x86_64-freebsd10 → x86_64-freebsd-10}/Vagrantfile +3 -1
  20. data/spec/compiler/apple_llvm_spec.rb +10 -3
  21. data/spec/compiler/clang_spec.rb +7 -0
  22. data/spec/compiler_spec.rb +1 -1
  23. data/spec/support/compiler_helpers.rb +3 -1
  24. data/vendor/depot_tools/{README → README.md} +33 -12
  25. data/vendor/depot_tools/checkout.py +7 -2
  26. data/vendor/depot_tools/cit.py +51 -13
  27. data/vendor/depot_tools/cpplint.py +27 -5
  28. data/vendor/depot_tools/git_cl.py +370 -290
  29. data/vendor/depot_tools/git_common.py +133 -28
  30. data/vendor/depot_tools/git_drover.py +29 -2
  31. data/vendor/depot_tools/git_map.py +2 -2
  32. data/vendor/depot_tools/git_map_branches.py +9 -5
  33. data/vendor/depot_tools/git_rebase_update.py +3 -3
  34. data/vendor/depot_tools/git_upstream_diff.py +1 -1
  35. data/vendor/depot_tools/infra/config/OWNERS +1 -0
  36. data/vendor/depot_tools/infra/config/cq.cfg +8 -3
  37. data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
  38. data/vendor/depot_tools/man/html/depot_tools.html +10 -2
  39. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +14 -15
  40. data/vendor/depot_tools/man/html/git-auto-svn.html +2 -2
  41. data/vendor/depot_tools/man/html/git-cherry-pick-upload.html +2 -11
  42. data/vendor/depot_tools/man/html/git-drover.html +19 -17
  43. data/vendor/depot_tools/man/html/git-footers.html +2 -2
  44. data/vendor/depot_tools/man/html/git-freeze.html +17 -4
  45. data/vendor/depot_tools/man/html/git-hyper-blame.html +2 -2
  46. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  47. data/vendor/depot_tools/man/html/git-map.html +3 -3
  48. data/vendor/depot_tools/man/html/git-mark-merge-base.html +2 -2
  49. data/vendor/depot_tools/man/html/git-nav-downstream.html +7 -7
  50. data/vendor/depot_tools/man/html/git-nav-upstream.html +4 -4
  51. data/vendor/depot_tools/man/html/git-new-branch.html +2 -2
  52. data/vendor/depot_tools/man/html/git-rebase-update.html +2 -2
  53. data/vendor/depot_tools/man/html/git-rename-branch.html +2 -2
  54. data/vendor/depot_tools/man/html/git-reparent-branch.html +2 -2
  55. data/vendor/depot_tools/man/html/git-retry.html +2 -2
  56. data/vendor/depot_tools/man/html/git-squash-branch.html +4 -4
  57. data/vendor/depot_tools/man/html/git-thaw.html +2 -2
  58. data/vendor/depot_tools/man/html/git-upstream-diff.html +2 -2
  59. data/vendor/depot_tools/man/man1/git-auto-svn.1 +4 -4
  60. data/vendor/depot_tools/man/man1/git-cherry-pick-upload.1 +5 -14
  61. data/vendor/depot_tools/man/man1/git-drover.1 +21 -19
  62. data/vendor/depot_tools/man/man1/git-footers.1 +5 -5
  63. data/vendor/depot_tools/man/man1/git-freeze.1 +12 -6
  64. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  65. data/vendor/depot_tools/man/man1/git-map-branches.1 +5 -7
  66. data/vendor/depot_tools/man/man1/git-map.1 +5 -5
  67. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  68. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +9 -9
  69. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +6 -6
  70. data/vendor/depot_tools/man/man1/git-new-branch.1 +4 -4
  71. data/vendor/depot_tools/man/man1/git-rebase-update.1 +4 -4
  72. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  73. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  74. data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
  75. data/vendor/depot_tools/man/man1/git-squash-branch.1 +6 -6
  76. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  77. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +4 -4
  78. data/vendor/depot_tools/man/man7/depot_tools.7 +9 -4
  79. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +14 -15
  80. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +1 -2
  81. data/vendor/depot_tools/man/src/git-freeze.txt +15 -0
  82. data/vendor/depot_tools/man/src/make_docs.sh +4 -4
  83. data/vendor/depot_tools/owners.py +50 -46
  84. data/vendor/depot_tools/owners_finder.py +6 -19
  85. data/vendor/depot_tools/presubmit_canned_checks.py +2 -1
  86. data/vendor/depot_tools/presubmit_support.py +8 -10
  87. data/vendor/depot_tools/recipe_modules/bot_update/api.py +69 -55
  88. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail.json +1 -0
  89. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch.json +1 -0
  90. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch_download.json +1 -0
  91. data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +2 -0
  92. data/vendor/depot_tools/recipe_modules/gclient/api.py +0 -17
  93. data/vendor/depot_tools/recipe_modules/gclient/config.py +9 -8
  94. data/vendor/depot_tools/recipe_modules/gclient/example.py +1 -1
  95. data/vendor/depot_tools/recipe_modules/git/api.py +20 -4
  96. data/vendor/depot_tools/recipe_modules/git/example.expected/can_fail_build.json +1 -0
  97. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output_fails_build.json +1 -0
  98. data/vendor/depot_tools/recipe_modules/git/example.expected/git-cache-checkout.json +189 -0
  99. data/vendor/depot_tools/recipe_modules/git/example.expected/platform_win.json +2 -1
  100. data/vendor/depot_tools/recipe_modules/git/example.expected/rebase_failed.json +1 -0
  101. data/vendor/depot_tools/recipe_modules/git/example.py +6 -1
  102. data/vendor/depot_tools/recipe_modules/git_cl/api.py +13 -0
  103. data/vendor/depot_tools/recipe_modules/git_cl/example.expected/basic.json +17 -0
  104. data/vendor/depot_tools/recipe_modules/git_cl/example.py +3 -0
  105. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_linux.json +14 -0
  106. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_mac.json +14 -0
  107. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_win.json +14 -0
  108. data/vendor/depot_tools/recipe_modules/infra_paths/example.py +1 -1
  109. data/vendor/depot_tools/recipe_modules/infra_paths/path_config.py +23 -10
  110. data/vendor/depot_tools/recipe_modules/tryserver/api.py +5 -3
  111. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch.json +1 -0
  112. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +1 -0
  113. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +1 -0
  114. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_svn_patch.json +1 -0
  115. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch.json +3 -1
  116. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch_new.json +3 -1
  117. data/vendor/depot_tools/recipes.py +56 -27
  118. data/vendor/depot_tools/rietveld.py +10 -0
  119. data/vendor/depot_tools/third_party/httplib2/README.chromium +3 -3
  120. data/vendor/depot_tools/third_party/httplib2/__init__.py +31 -15
  121. data/vendor/depot_tools/third_party/upload.py +54 -45
  122. data/vendor/depot_tools/update_depot_tools +16 -70
  123. data/vendor/depot_tools/update_depot_tools.bat +4 -18
  124. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +10 -6
  125. metadata +15 -8
  126. data/patches/0001-Build-standalone-static-library.patch +0 -26
  127. data/vendor/depot_tools/git_utils/git-tree-prune +0 -122
@@ -2,12 +2,12 @@
2
2
  .\" Title: git-upstream-diff
3
3
  .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4
4
  .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
5
- .\" Date: 05/07/2014
5
+ .\" Date: 07/21/2016
6
6
  .\" Manual: Chromium depot_tools Manual
7
- .\" Source: depot_tools cab11c5
7
+ .\" Source: depot_tools bf2a341
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "GIT\-UPSTREAM\-DIFF" "1" "05/07/2014" "depot_tools cab11c5" "Chromium depot_tools Manual"
10
+ .TH "GIT\-UPSTREAM\-DIFF" "1" "07/21/2016" "depot_tools bf2a341" "Chromium depot_tools Manual"
11
11
  .\" -----------------------------------------------------------------
12
12
  .\" * Define some portability stuff
13
13
  .\" -----------------------------------------------------------------
@@ -123,5 +123,5 @@ Part of the chromium \fBdepot_tools\fR(7) suite\&. These tools are meant to assi
123
123
  .IP " 1." 4
124
124
  here
125
125
  .RS 4
126
- \%https://chromium.googlesource.com/chromium/tools/depot_tools.git
126
+ \%https://chromium.googlesource.com/chromium/tools/depot_tools
127
127
  .RE
@@ -2,12 +2,12 @@
2
2
  .\" Title: depot_tools
3
3
  .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4
4
  .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
5
- .\" Date: 01/28/2016
5
+ .\" Date: 07/21/2016
6
6
  .\" Manual: Chromium depot_tools Manual
7
- .\" Source: depot_tools 7143379
7
+ .\" Source: depot_tools bf2a341
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "DEPOT_TOOLS" "7" "01/28/2016" "depot_tools 7143379" "Chromium depot_tools Manual"
10
+ .TH "DEPOT_TOOLS" "7" "07/21/2016" "depot_tools bf2a341" "Chromium depot_tools Manual"
11
11
  .\" -----------------------------------------------------------------
12
12
  .\" * Define some portability stuff
13
13
  .\" -----------------------------------------------------------------
@@ -42,6 +42,11 @@ A listing of both categories of tools follows\&.
42
42
  .sp
43
43
  A tutorial for these tools can be found at \fBdepot_tools_tutorial\fR(7)\&.
44
44
  .PP
45
+ \fBgit-auto-svn\fR(1)
46
+ .RS 4
47
+ Automatically set up git\-svn metadata for a repo mirrored from SVN\&.
48
+ .RE
49
+ .PP
45
50
  \fBgit-cherry-pick-upload\fR(1)
46
51
  .RS 4
47
52
  Upload the diff between a revision and its parent to rietveld\&.
@@ -135,5 +140,5 @@ Print a diff of the current branch, compared to its upstream\&.
135
140
  .IP " 1." 4
136
141
  here
137
142
  .RS 4
138
- \%https://chromium.googlesource.com/chromium/tools/depot_tools.git
143
+ \%https://chromium.googlesource.com/chromium/tools/depot_tools
139
144
  .RE
@@ -2,12 +2,12 @@
2
2
  .\" Title: depot_tools_tutorial
3
3
  .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
4
4
  .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
5
- .\" Date: 01/13/2015
5
+ .\" Date: 07/21/2016
6
6
  .\" Manual: Chromium depot_tools Manual
7
- .\" Source: depot_tools 379a889
7
+ .\" Source: depot_tools bf2a341
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "DEPOT_TOOLS_TUTORIAL" "7" "01/13/2015" "depot_tools 379a889" "Chromium depot_tools Manual"
10
+ .TH "DEPOT_TOOLS_TUTORIAL" "7" "07/21/2016" "depot_tools bf2a341" "Chromium depot_tools Manual"
11
11
  .\" -----------------------------------------------------------------
12
12
  .\" * Define some portability stuff
13
13
  .\" -----------------------------------------------------------------
@@ -261,7 +261,7 @@ If you have never used git before, you\(cqll need to set some global git configu
261
261
  .nf
262
262
  \fB$\fR # get the code
263
263
  \fB$\fR # In an empty directory:
264
- \fB$ fetch {chromium,blink,\&.\&.\&.}\fR
264
+ \fB$ fetch {chromium,\&.\&.\&.}\fR
265
265
 
266
266
  \fB$\fR # Update third_party repos and run pre\-compile hooks
267
267
  \fB$ gclient sync\fR
@@ -289,7 +289,6 @@ Pick an empty directory and run one of the following:
289
289
  .\}
290
290
  .nf
291
291
  \fB$ fetch chromium\fR # Basic checkout for desktop Chromium
292
- \fB$ fetch blink\fR # Chromium code with Blink checked out to tip\-of\-tree
293
292
  \fB$ fetch android\fR # Chromium checkout for Android platform
294
293
  \fB$ fetch ios\fR # Chromium checkout for iOS platform
295
294
  .fi
@@ -574,7 +573,7 @@ It was a Domo\-Kuun\&.
574
573
  [fix_typo 615ffa7] Fix terrible typo\&.
575
574
  1 file changed, 1 insertion(+), 1 deletion(\-)
576
575
  \fB$ git map\fR
577
- \fB* 615ffa7 \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix terrible typo\&.
576
+ * \fB615ffa7 \fR (HEAD \-> fix_typo) 2014\-04\-10 ~ Fix terrible typo\&.
578
577
  * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorImpl use mailboxes\fB <(fix_typo)\fR
579
578
  * \fB41290e0 \fR 2014\-04\-10 ~ don\*(Aqt use glibc\-specific execinfo\&.h on uclibc builds
580
579
  * \fBa76fde7 \fR 2014\-04\-10 ~ [fsp] Add requestUnmount() method together with the request manager\&.
@@ -676,7 +675,7 @@ Since we got lgtm, let the CQ land it\&.
676
675
  \fB$ git cl set_commit\fR
677
676
  \fB$ git map\fR
678
677
  * \fB0e2e52e \fR (\fBchap2\fR) 2014\-04\-10 ~ FREEZE\&.unindexed
679
- | \fB* 2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
678
+ | * \fB2c0ad9c \fR (HEAD \-> fix_typo) 2014\-04\-10 ~ Fix typo for good!
680
679
  | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
681
680
  |/
682
681
  * \fBbeec6f4 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Make ReflectorImpl use mailboxes\fB <(chap2, fix_typo)\fR
@@ -711,7 +710,7 @@ state without impacting any branches by performing another checkout\&.
711
710
  If you want to create a new branch to retain commits you create, you may
712
711
  do so (now or later) by using \-b with the checkout command again\&. Example:
713
712
 
714
- git checkout \-b new_branch_name
713
+ git checkout \-b <new\-branch\-name>
715
714
 
716
715
  HEAD is now at beec6f4\&.\&.\&. Make ReflectorImpl use mailboxes
717
716
  \fB$ git nav\-downstream\fR
@@ -775,7 +774,7 @@ EOF
775
774
  [chap2 ceef712] Finish chapter 2
776
775
  1 file changed, 6 insertions(+)
777
776
  \fB$ git map\fR
778
- \fB* ceef712 \fR (\fBchap2\fR) 2014\-04\-10 ~ Finish chapter 2
777
+ * \fBceef712 \fR (HEAD \-> chap2) 2014\-04\-10 ~ Finish chapter 2
779
778
  | * \fB2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
780
779
  | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
781
780
  |/
@@ -822,7 +821,7 @@ EOF
822
821
  [chap3 7d4238a] beginning of chapter 3
823
822
  1 file changed, 4 insertions(+)
824
823
  \fB$ git map\fR
825
- \fB* 7d4238a \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
824
+ * \fB7d4238a \fR (HEAD \-> chap3) 2014\-04\-10 ~ beginning of chapter 3
826
825
  * \fBceef712 \fR (\fBchap2\fR) 2014\-04\-10 ~ Finish chapter 2\fB <(chap3)\fR
827
826
  | * \fB2c0ad9c \fR (\fBfix_typo\fR) 2014\-04\-10 ~ Fix typo for good!
828
827
  | * \fB615ffa7 \fR 2014\-04\-10 ~ Fix terrible typo\&.
@@ -853,8 +852,8 @@ Rebasing: chap2
853
852
  Rebasing: fix_typo
854
853
  Failed! Attempting to squash fix_typo \&.\&.\&. Success!
855
854
  Rebasing: chap3
856
- Deleted branch fix_typo (was 5d26fec)\&.
857
855
  Reparented chap3 to track origin/master (was tracking chap2)
856
+ Deleted branch fix_typo (was 5d26fec)\&.
858
857
  Deleted branch chap2 (was 5d26fec)\&.
859
858
  .fi
860
859
  .if n \{\
@@ -870,7 +869,7 @@ Well look at that\&. The CQ landed our typo and chapter2 branches already and gi
870
869
  \fB$ gclient sync\fR
871
870
  \&.\&.\&. truncated output \&.\&.\&.
872
871
  \fB$ git map\fR
873
- \fB* 93fe917 \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
872
+ * \fB93fe917 \fR (HEAD \-> chap3) 2014\-04\-10 ~ beginning of chapter 3
874
873
  * \fB5d26fec \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Finish chapter 2\fB <(chap3)\fR
875
874
  * \fBdf7fefb \fR 2014\-04\-10 ~ Revert 255617, due to it not tracking use of the link doctor page properly\&.
876
875
  * \fB4b39cda \fR 2014\-04\-10 ~ Fix terrible typo\&.
@@ -910,7 +909,7 @@ Rebasing: chap2
910
909
  There was an poignant pause\&.
911
910
 
912
911
  CHAPTER 3:
913
- ++<<<<<<< HEAD
912
+ ++<<<<<<< 59cdb7335b1c3a159ecc22214441cbe2194de25c
914
913
  +Hilariousness! This chapter is awesome!
915
914
  ++=======
916
915
  + Mr\&. Usagi felt that something wasn\*(Aqt right\&. Shortly after the Domo\-Kun left he
@@ -961,7 +960,7 @@ chap3 up\-to\-date
961
960
  \fB$ gclient sync\fR
962
961
  \&.\&.\&. truncated output \&.\&.\&.
963
962
  \fB$ git map\fR
964
- \fB* 1cb4f5b \fR (\fBchap3\fR) 2014\-04\-10 ~ beginning of chapter 3
963
+ * \fB1cb4f5b \fR (HEAD \-> chap3) 2014\-04\-10 ~ beginning of chapter 3
965
964
  * \fB59cdb73 \fR (origin/master, origin/HEAD) 2014\-04\-10 ~ Refactor data interchange format\&.\fB <(chap3)\fR
966
965
  * \fB34676a3 \fR 2014\-04\-10 ~ Ensure FS is exited for all not\-in\-same\-page navigations\&.
967
966
  * \fB7d4784e \fR 2014\-04\-10 ~ Add best chapter2 ever!
@@ -1052,5 +1051,5 @@ main Chromium waterfall
1052
1051
  .IP " 7." 4
1053
1052
  here
1054
1053
  .RS 4
1055
- \%https://chromium.googlesource.com/chromium/tools/depot_tools.git
1054
+ \%https://chromium.googlesource.com/chromium/tools/depot_tools
1056
1055
  .RE
@@ -150,7 +150,7 @@ TL;DR
150
150
  ----
151
151
  [white]**$** # get the code
152
152
  [white]**$** # In an empty directory:
153
- [white]**$ fetch {chromium,blink,...}**
153
+ [white]**$ fetch {chromium,...}**
154
154
 
155
155
  [white]**$** # Update third_party repos and run pre-compile hooks
156
156
  [white]**$ gclient sync**
@@ -174,7 +174,6 @@ Pick an empty directory and run one of the following:
174
174
  [subs="quotes"]
175
175
  ----
176
176
  [white]**$ fetch chromium** # Basic checkout for desktop Chromium
177
- [white]**$ fetch blink** # Chromium code with Blink checked out to tip-of-tree
178
177
  [white]**$ fetch android** # Chromium checkout for Android platform
179
178
  [white]**$ fetch ios** # Chromium checkout for iOS platform
180
179
  ----
@@ -26,10 +26,25 @@ with 'git add', 'git mv', 'git rm', etc.). A commit with the message
26
26
  `FREEZE.unindexed` will contain all changes which were not in your index at the
27
27
  time you ran git freeze (freshly modified files, new files, etc.).
28
28
 
29
+ By default `git freeze` will only freeze up to 100MB of untracked files. See
30
+ 'CONFIGURATION VARIABLES' for more details.
31
+
32
+
29
33
  EXAMPLE
30
34
  -------
31
35
  demo:1[]
32
36
 
37
+
38
+ CONFIGURATION VARIABLES
39
+ -----------------------
40
+
41
+ depot-tools.freeze-size-limit
42
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
+ This sets the size limit as an integer number of megabytes of untracked files
44
+ that git-freeze will be willing to put in suspended animation. A 0 or negative
45
+ limit disables the size-limit check entirely. *100* by default.
46
+
47
+
33
48
  SEE ALSO
34
49
  --------
35
50
  linkgit:git-thaw[1]
@@ -23,7 +23,7 @@ ensure_in_path() {
23
23
  }
24
24
 
25
25
  ensure_in_path xmlto
26
- ensure_in_path hg
26
+ ensure_in_path git
27
27
 
28
28
  DFLT_CATALOG_PATH="/usr/local/etc/xml/catalog"
29
29
  if [[ ! $XML_CATALOG_FILES && -f "$DFLT_CATALOG_PATH" ]]
@@ -35,12 +35,12 @@ fi
35
35
 
36
36
  # We pull asciidoc to get the right version
37
37
  BRANCH=8.6.9
38
- ASCIIDOC_HASH=7fed0aff1b30
39
- if [[ ! -d asciidoc || $(cd asciidoc && hg id -i) != $ASCIIDOC_HASH ]]
38
+ ASCIIDOC_HASH=2ff8681
39
+ if [[ ! -d asciidoc || $(cd asciidoc && git rev-parse --short HEAD) != $ASCIIDOC_HASH ]]
40
40
  then
41
41
  echo Cloning asciidoc
42
42
  rm -rf asciidoc
43
- hg clone -r $BRANCH https://asciidoc.googlecode.com/hg/ asciidoc
43
+ git clone --branch $BRANCH https://github.com/asciidoc/asciidoc asciidoc
44
44
  (cd asciidoc && ln -s asciidoc.py asciidoc)
45
45
  fi
46
46
  echo Asciidoc up to date at $ASCIIDOC_HASH \($BRANCH\)
@@ -55,6 +55,7 @@ Examples for all of these combinations can be found in tests/owners_unittest.py.
55
55
  """
56
56
 
57
57
  import collections
58
+ import fnmatch
58
59
  import random
59
60
  import re
60
61
 
@@ -94,35 +95,32 @@ class Database(object):
94
95
  of changed files, and see if a list of changed files is covered by a
95
96
  list of reviewers."""
96
97
 
97
- def __init__(self, root, fopen, os_path, glob):
98
+ def __init__(self, root, fopen, os_path):
98
99
  """Args:
99
100
  root: the path to the root of the Repository
100
101
  open: function callback to open a text file for reading
101
102
  os_path: module/object callback with fields for 'abspath', 'dirname',
102
- 'exists', and 'join'
103
- glob: function callback to list entries in a directory match a glob
104
- (i.e., glob.glob)
103
+ 'exists', 'join', and 'relpath'
105
104
  """
106
105
  self.root = root
107
106
  self.fopen = fopen
108
107
  self.os_path = os_path
109
- self.glob = glob
110
108
 
111
109
  # Pick a default email regexp to use; callers can override as desired.
112
110
  self.email_regexp = re.compile(BASIC_EMAIL_REGEXP)
113
111
 
114
- # Mapping of owners to the paths they own.
115
- self.owned_by = {EVERYONE: set()}
112
+ # Mapping of owners to the paths or globs they own.
113
+ self._owners_to_paths = {EVERYONE: set()}
116
114
 
117
115
  # Mapping of paths to authorized owners.
118
- self.owners_for = {}
116
+ self._paths_to_owners = {}
119
117
 
120
118
  # Mapping reviewers to the preceding comment per file in the OWNERS files.
121
119
  self.comments = {}
122
120
 
123
121
  # Set of paths that stop us from looking above them for owners.
124
122
  # (This is implicitly true for the root directory).
125
- self.stop_looking = set([''])
123
+ self._stop_looking = set([''])
126
124
 
127
125
  # Set of files which have already been read.
128
126
  self.read_files = set()
@@ -135,6 +133,7 @@ class Database(object):
135
133
  in order avoid suggesting the author as a reviewer for their own changes."""
136
134
  self._check_paths(files)
137
135
  self.load_data_needed_for(files)
136
+
138
137
  suggested_owners = self._covering_set_of_owners_for(files, author)
139
138
  if EVERYONE in suggested_owners:
140
139
  if len(suggested_owners) > 1:
@@ -154,11 +153,7 @@ class Database(object):
154
153
  self._check_reviewers(reviewers)
155
154
  self.load_data_needed_for(files)
156
155
 
157
- covered_objs = self._objs_covered_by(reviewers)
158
- uncovered_files = [f for f in files
159
- if not self._is_obj_covered_by(f, covered_objs)]
160
-
161
- return set(uncovered_files)
156
+ return set(f for f in files if not self._is_obj_covered_by(f, reviewers))
162
157
 
163
158
  def _check_paths(self, files):
164
159
  def _is_under(f, pfx):
@@ -171,25 +166,23 @@ class Database(object):
171
166
  _assert_is_collection(reviewers)
172
167
  assert all(self.email_regexp.match(r) for r in reviewers)
173
168
 
174
- def _objs_covered_by(self, reviewers):
175
- objs = self.owned_by[EVERYONE]
176
- for r in reviewers:
177
- objs = objs | self.owned_by.get(r, set())
178
- return objs
179
-
180
- def _stop_looking(self, objname):
181
- return objname in self.stop_looking
182
-
183
- def _is_obj_covered_by(self, objname, covered_objs):
184
- while not objname in covered_objs and not self._stop_looking(objname):
169
+ def _is_obj_covered_by(self, objname, reviewers):
170
+ reviewers = list(reviewers) + [EVERYONE]
171
+ while True:
172
+ for reviewer in reviewers:
173
+ for owned_pattern in self._owners_to_paths.get(reviewer, set()):
174
+ if fnmatch.fnmatch(objname, owned_pattern):
175
+ return True
176
+ if self._should_stop_looking(objname):
177
+ break
185
178
  objname = self.os_path.dirname(objname)
186
- return objname in covered_objs
179
+ return False
187
180
 
188
181
  def _enclosing_dir_with_owners(self, objname):
189
182
  """Returns the innermost enclosing directory that has an OWNERS file."""
190
183
  dirpath = objname
191
- while not dirpath in self.owners_for:
192
- if self._stop_looking(dirpath):
184
+ while not self._owners_for(dirpath):
185
+ if self._should_stop_looking(dirpath):
193
186
  break
194
187
  dirpath = self.os_path.dirname(dirpath)
195
188
  return dirpath
@@ -197,12 +190,23 @@ class Database(object):
197
190
  def load_data_needed_for(self, files):
198
191
  for f in files:
199
192
  dirpath = self.os_path.dirname(f)
200
- while not dirpath in self.owners_for:
193
+ while not self._owners_for(dirpath):
201
194
  self._read_owners(self.os_path.join(dirpath, 'OWNERS'))
202
- if self._stop_looking(dirpath):
195
+ if self._should_stop_looking(dirpath):
203
196
  break
204
197
  dirpath = self.os_path.dirname(dirpath)
205
198
 
199
+ def _should_stop_looking(self, objname):
200
+ return any(fnmatch.fnmatch(objname, stop_looking)
201
+ for stop_looking in self._stop_looking)
202
+
203
+ def _owners_for(self, objname):
204
+ obj_owners = set()
205
+ for owned_path, path_owners in self._paths_to_owners.iteritems():
206
+ if fnmatch.fnmatch(objname, owned_path):
207
+ obj_owners |= path_owners
208
+ return obj_owners
209
+
206
210
  def _read_owners(self, path):
207
211
  owners_path = self.os_path.join(self.root, path)
208
212
  if not self.os_path.exists(owners_path):
@@ -231,7 +235,7 @@ class Database(object):
231
235
  in_comment = False
232
236
 
233
237
  if line == 'set noparent':
234
- self.stop_looking.add(dirpath)
238
+ self._stop_looking.add(dirpath)
235
239
  continue
236
240
 
237
241
  m = re.match('per-file (.+)=(.+)', line)
@@ -243,10 +247,9 @@ class Database(object):
243
247
  raise SyntaxErrorInOwnersFile(owners_path, lineno,
244
248
  'per-file globs cannot span directories or use escapes: "%s"' %
245
249
  line)
246
- baselines = self.glob(full_glob_string)
247
- for baseline in (self.os_path.relpath(b, self.root) for b in baselines):
248
- self._add_entry(baseline, directive, 'per-file line',
249
- owners_path, lineno, '\n'.join(comment))
250
+ relative_glob_string = self.os_path.relpath(full_glob_string, self.root)
251
+ self._add_entry(relative_glob_string, directive, 'per-file line',
252
+ owners_path, lineno, '\n'.join(comment))
250
253
  continue
251
254
 
252
255
  if line.startswith('set '):
@@ -259,7 +262,7 @@ class Database(object):
259
262
  def _add_entry(self, path, directive,
260
263
  line_type, owners_path, lineno, comment):
261
264
  if directive == 'set noparent':
262
- self.stop_looking.add(path)
265
+ self._stop_looking.add(path)
263
266
  elif directive.startswith('file:'):
264
267
  owners_file = self._resolve_include(directive[5:], owners_path)
265
268
  if not owners_file:
@@ -269,19 +272,20 @@ class Database(object):
269
272
  self._read_owners(owners_file)
270
273
 
271
274
  dirpath = self.os_path.dirname(owners_file)
272
- for key in self.owned_by:
273
- if not dirpath in self.owned_by[key]:
275
+ for key in self._owners_to_paths:
276
+ if not dirpath in self._owners_to_paths[key]:
274
277
  continue
275
- self.owned_by[key].add(path)
278
+ self._owners_to_paths[key].add(path)
276
279
 
277
- if dirpath in self.owners_for:
278
- self.owners_for.setdefault(path, set()).update(self.owners_for[dirpath])
280
+ if dirpath in self._paths_to_owners:
281
+ self._paths_to_owners.setdefault(path, set()).update(
282
+ self._paths_to_owners[dirpath])
279
283
 
280
284
  elif self.email_regexp.match(directive) or directive == EVERYONE:
281
285
  self.comments.setdefault(directive, {})
282
286
  self.comments[directive][path] = comment
283
- self.owned_by.setdefault(directive, set()).add(path)
284
- self.owners_for.setdefault(path, set()).add(directive)
287
+ self._owners_to_paths.setdefault(directive, set()).add(path)
288
+ self._paths_to_owners.setdefault(path, set()).add(directive)
285
289
  else:
286
290
  raise SyntaxErrorInOwnersFile(owners_path, lineno,
287
291
  ('%s is not a "set" directive, file include, "*", '
@@ -292,7 +296,7 @@ class Database(object):
292
296
  include_path = path[2:]
293
297
  else:
294
298
  assert start.startswith(self.root)
295
- start = self.os_path.dirname(start[len(self.root):])
299
+ start = self.os_path.dirname(self.os_path.relpath(start, self.root))
296
300
  include_path = self.os_path.join(start, path)
297
301
 
298
302
  owners_path = self.os_path.join(self.root, include_path)
@@ -321,7 +325,7 @@ class Database(object):
321
325
  dirname = current_dir
322
326
  distance = 1
323
327
  while True:
324
- for owner in self.owners_for.get(dirname, []):
328
+ for owner in self._owners_for(dirname):
325
329
  if author and owner == author:
326
330
  continue
327
331
  all_possible_owners.setdefault(owner, [])
@@ -329,7 +333,7 @@ class Database(object):
329
333
  # directory, only count the closest one.
330
334
  if not any(current_dir == el[0] for el in all_possible_owners[owner]):
331
335
  all_possible_owners[owner].append((current_dir, distance))
332
- if self._stop_looking(dirname):
336
+ if self._should_stop_looking(dirname):
333
337
  break
334
338
  dirname = self.os_path.dirname(dirname)
335
339
  distance += 1