truex-skylight 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +277 -0
- data/CLA.md +9 -0
- data/CONTRIBUTING.md +1 -0
- data/LICENSE.md +79 -0
- data/README.md +4 -0
- data/bin/skylight +3 -0
- data/ext/extconf.rb +186 -0
- data/ext/libskylight.yml +6 -0
- data/ext/skylight_memprof.c +115 -0
- data/ext/skylight_native.c +416 -0
- data/ext/skylight_native.h +20 -0
- data/lib/skylight.rb +2 -0
- data/lib/skylight/api.rb +79 -0
- data/lib/skylight/cli.rb +146 -0
- data/lib/skylight/compat.rb +47 -0
- data/lib/skylight/config.rb +498 -0
- data/lib/skylight/core.rb +122 -0
- data/lib/skylight/data/cacert.pem +3894 -0
- data/lib/skylight/formatters/http.rb +17 -0
- data/lib/skylight/gc.rb +107 -0
- data/lib/skylight/helpers.rb +137 -0
- data/lib/skylight/instrumenter.rb +290 -0
- data/lib/skylight/middleware.rb +75 -0
- data/lib/skylight/native.rb +69 -0
- data/lib/skylight/normalizers.rb +133 -0
- data/lib/skylight/normalizers/action_controller/process_action.rb +35 -0
- data/lib/skylight/normalizers/action_controller/send_file.rb +76 -0
- data/lib/skylight/normalizers/action_view/render_collection.rb +18 -0
- data/lib/skylight/normalizers/action_view/render_partial.rb +18 -0
- data/lib/skylight/normalizers/action_view/render_template.rb +18 -0
- data/lib/skylight/normalizers/active_record/sql.rb +79 -0
- data/lib/skylight/normalizers/active_support/cache.rb +50 -0
- data/lib/skylight/normalizers/active_support/cache_clear.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_decrement.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_delete.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_exist.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_fetch_hit.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_generate.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_increment.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_read.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_read_multi.rb +16 -0
- data/lib/skylight/normalizers/active_support/cache_write.rb +16 -0
- data/lib/skylight/normalizers/default.rb +21 -0
- data/lib/skylight/normalizers/moped/query.rb +141 -0
- data/lib/skylight/probes.rb +91 -0
- data/lib/skylight/probes/excon.rb +25 -0
- data/lib/skylight/probes/excon/middleware.rb +65 -0
- data/lib/skylight/probes/net_http.rb +44 -0
- data/lib/skylight/probes/redis.rb +30 -0
- data/lib/skylight/probes/sequel.rb +30 -0
- data/lib/skylight/probes/sinatra.rb +74 -0
- data/lib/skylight/probes/tilt.rb +27 -0
- data/lib/skylight/railtie.rb +122 -0
- data/lib/skylight/sinatra.rb +4 -0
- data/lib/skylight/subscriber.rb +92 -0
- data/lib/skylight/trace.rb +191 -0
- data/lib/skylight/util.rb +16 -0
- data/lib/skylight/util/allocation_free.rb +17 -0
- data/lib/skylight/util/clock.rb +53 -0
- data/lib/skylight/util/gzip.rb +15 -0
- data/lib/skylight/util/hostname.rb +17 -0
- data/lib/skylight/util/http.rb +218 -0
- data/lib/skylight/util/inflector.rb +110 -0
- data/lib/skylight/util/logging.rb +87 -0
- data/lib/skylight/util/multi_io.rb +21 -0
- data/lib/skylight/util/native_ext_fetcher.rb +205 -0
- data/lib/skylight/util/platform.rb +67 -0
- data/lib/skylight/util/ssl.rb +50 -0
- data/lib/skylight/vendor/active_support/notifications.rb +207 -0
- data/lib/skylight/vendor/active_support/notifications/fanout.rb +159 -0
- data/lib/skylight/vendor/active_support/notifications/instrumenter.rb +72 -0
- data/lib/skylight/vendor/active_support/per_thread_registry.rb +52 -0
- data/lib/skylight/vendor/cli/highline.rb +1034 -0
- data/lib/skylight/vendor/cli/highline/color_scheme.rb +134 -0
- data/lib/skylight/vendor/cli/highline/compatibility.rb +16 -0
- data/lib/skylight/vendor/cli/highline/import.rb +41 -0
- data/lib/skylight/vendor/cli/highline/menu.rb +381 -0
- data/lib/skylight/vendor/cli/highline/question.rb +481 -0
- data/lib/skylight/vendor/cli/highline/simulate.rb +48 -0
- data/lib/skylight/vendor/cli/highline/string_extensions.rb +111 -0
- data/lib/skylight/vendor/cli/highline/style.rb +181 -0
- data/lib/skylight/vendor/cli/highline/system_extensions.rb +242 -0
- data/lib/skylight/vendor/cli/thor.rb +473 -0
- data/lib/skylight/vendor/cli/thor/actions.rb +318 -0
- data/lib/skylight/vendor/cli/thor/actions/create_file.rb +105 -0
- data/lib/skylight/vendor/cli/thor/actions/create_link.rb +60 -0
- data/lib/skylight/vendor/cli/thor/actions/directory.rb +119 -0
- data/lib/skylight/vendor/cli/thor/actions/empty_directory.rb +137 -0
- data/lib/skylight/vendor/cli/thor/actions/file_manipulation.rb +314 -0
- data/lib/skylight/vendor/cli/thor/actions/inject_into_file.rb +109 -0
- data/lib/skylight/vendor/cli/thor/base.rb +652 -0
- data/lib/skylight/vendor/cli/thor/command.rb +136 -0
- data/lib/skylight/vendor/cli/thor/core_ext/hash_with_indifferent_access.rb +80 -0
- data/lib/skylight/vendor/cli/thor/core_ext/io_binary_read.rb +12 -0
- data/lib/skylight/vendor/cli/thor/core_ext/ordered_hash.rb +100 -0
- data/lib/skylight/vendor/cli/thor/error.rb +28 -0
- data/lib/skylight/vendor/cli/thor/group.rb +282 -0
- data/lib/skylight/vendor/cli/thor/invocation.rb +172 -0
- data/lib/skylight/vendor/cli/thor/parser.rb +4 -0
- data/lib/skylight/vendor/cli/thor/parser/argument.rb +74 -0
- data/lib/skylight/vendor/cli/thor/parser/arguments.rb +171 -0
- data/lib/skylight/vendor/cli/thor/parser/option.rb +121 -0
- data/lib/skylight/vendor/cli/thor/parser/options.rb +218 -0
- data/lib/skylight/vendor/cli/thor/rake_compat.rb +72 -0
- data/lib/skylight/vendor/cli/thor/runner.rb +322 -0
- data/lib/skylight/vendor/cli/thor/shell.rb +88 -0
- data/lib/skylight/vendor/cli/thor/shell/basic.rb +393 -0
- data/lib/skylight/vendor/cli/thor/shell/color.rb +148 -0
- data/lib/skylight/vendor/cli/thor/shell/html.rb +127 -0
- data/lib/skylight/vendor/cli/thor/util.rb +270 -0
- data/lib/skylight/vendor/cli/thor/version.rb +3 -0
- data/lib/skylight/vendor/thread_safe.rb +126 -0
- data/lib/skylight/vendor/thread_safe/non_concurrent_cache_backend.rb +133 -0
- data/lib/skylight/vendor/thread_safe/synchronized_cache_backend.rb +76 -0
- data/lib/skylight/version.rb +4 -0
- data/lib/skylight/vm/gc.rb +70 -0
- data/lib/sql_lexer.rb +6 -0
- data/lib/sql_lexer/lexer.rb +579 -0
- data/lib/sql_lexer/string_scanner.rb +11 -0
- data/lib/sql_lexer/version.rb +3 -0
- metadata +179 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 82bfe564aa27087cb189b61b46d323223ed0c66d
|
|
4
|
+
data.tar.gz: ff1a4f08e549bb149fb0dd0e340533457b55030b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b56829c3a3bbc2642a7097207bf65f10e54c59138807fdb87ab3a7ff4b5fbb9e3db7ab13468029fc578736443175d415d07469c2ddbe9626f9a84c38a45b98e1
|
|
7
|
+
data.tar.gz: ab3ada5f9e28923a6ab879d276d59f0601d71588f8619f5dea1f79a6601263511687fdacbc8e4696328d3c805393d87e4dc7d6fe295fc3c817e8c2984e38756d
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
## 0.6.0 (January 27, 2015)
|
|
2
|
+
|
|
3
|
+
* [IMPROVEMENT] Eliminates runtime dependency on the Rails
|
|
4
|
+
constant across the entire codebase
|
|
5
|
+
* [FEATURE] Support for Sinatra applications. See http://docs.skylight.io/sinatra/
|
|
6
|
+
* [FEATURE] Support for the Sequel ORM (off by default for Rails apps)
|
|
7
|
+
* [FEATURE] Support for Tilt templates (off by default for Rails apps)
|
|
8
|
+
|
|
9
|
+
## 0.5.2 (December 15, 2014)
|
|
10
|
+
|
|
11
|
+
* [IMPROVEMENT] Support ignoring multiple heartbeat endpoints
|
|
12
|
+
* [BUGFIX] Fix compilation errors on old GCC
|
|
13
|
+
|
|
14
|
+
## 0.5.1 (December 5, 2014)
|
|
15
|
+
|
|
16
|
+
* [BUGFIX] Fix issues with working directory dissappearing
|
|
17
|
+
|
|
18
|
+
## 0.5.0 (December 4, 2014)
|
|
19
|
+
* [IMPROVEMENT] Automatically load configuration from ENV
|
|
20
|
+
* [FEATURE] Track object allocations per span
|
|
21
|
+
* [IMPROVEMENT] Fix C warnings
|
|
22
|
+
|
|
23
|
+
## 0.4.3 (November 17, 2014)
|
|
24
|
+
|
|
25
|
+
* [BUGFIX] Fix Moped integration when queries include times
|
|
26
|
+
|
|
27
|
+
## 0.4.2 (November 12, 2014)
|
|
28
|
+
|
|
29
|
+
* [BUGFIX] Fix exit status on MRI 1.9.2
|
|
30
|
+
* [BUGFIX] Strip SQL comments for better aggregation
|
|
31
|
+
|
|
32
|
+
## 0.4.1 (November 7, 2014)
|
|
33
|
+
|
|
34
|
+
* [BUGFIX] Fix downloading native agent on 32bit systems
|
|
35
|
+
* [BUGFIX] Support legacy config settings
|
|
36
|
+
* [FEATURE] Check FS permissions on instrumenter start
|
|
37
|
+
|
|
38
|
+
## 0.4.0 (November 3, 2014)
|
|
39
|
+
|
|
40
|
+
* Featherweight Agent: lowered CPU and memory overhead
|
|
41
|
+
* [IMPROVEMENT] Add support for ignoring an endpoint by name
|
|
42
|
+
|
|
43
|
+
## 0.3.20 (September 3, 2014)
|
|
44
|
+
|
|
45
|
+
* [BUGFIX] Fix app name fetching on Windows for `skylight setup`
|
|
46
|
+
|
|
47
|
+
## 0.3.19 (July 30, 2014)
|
|
48
|
+
|
|
49
|
+
* [IMPROVEMENT] HEAD requests are no longer instrumented and will not count towards usage totals.
|
|
50
|
+
* [IMPROVEMENT] Added LICENSE and CLA
|
|
51
|
+
* [IMPROVEMENT] Improve how warnings are logged to reduce overall noise and interfere less with cron jobs
|
|
52
|
+
* [BUGFIX] Fixed a case where failed app creation raised an exception instead of printing error messages
|
|
53
|
+
|
|
54
|
+
## 0.3.18 (July 17, 2014)
|
|
55
|
+
|
|
56
|
+
* [FEATURE] Redis probe (Not enabled by default. See http://docs.skylight.io/agent/#railtie)
|
|
57
|
+
* [FEATURE] Support app creation with token instead of email/password
|
|
58
|
+
* [BUGFIX] App creation now works even when Webmock is enabled
|
|
59
|
+
* [BUGFIX] Fix instrumentation for methods ending in special chars
|
|
60
|
+
* [BUGFIX] Improved SQL parsing
|
|
61
|
+
* [IMPROVEMENT] Respect collector token expiration to reduce token requests
|
|
62
|
+
|
|
63
|
+
## 0.3.17 (July 1, 2014)
|
|
64
|
+
|
|
65
|
+
* Fix warning for Cache.instrument overwrite
|
|
66
|
+
|
|
67
|
+
## 0.3.16 (July 1, 2014) [YANKED]
|
|
68
|
+
|
|
69
|
+
* Fixed ActiveSupport::Cache monkeypatch
|
|
70
|
+
|
|
71
|
+
## 0.3.15 (June 30, 2014) [YANKED]
|
|
72
|
+
|
|
73
|
+
* Basic instrumentation for ActiveSupport::Cache
|
|
74
|
+
* Fix incompatibility with old version of rack-mini-profiler
|
|
75
|
+
* Better error messages when config/skylight.yml is invalid
|
|
76
|
+
* Better error messages for non-writeable lock/sockfile path
|
|
77
|
+
|
|
78
|
+
## 0.3.14 (June 3, 2014)
|
|
79
|
+
|
|
80
|
+
* Do not build C extension if dependencies (libraries/headers) are
|
|
81
|
+
missing
|
|
82
|
+
* [RUST] Improve performance by not double copying memory when serializing
|
|
83
|
+
* Enable the Net::HTTP probe by default
|
|
84
|
+
|
|
85
|
+
## 0.3.13 (May 12, 2014)
|
|
86
|
+
|
|
87
|
+
* Load probes even when agent is disabled
|
|
88
|
+
* Check for Excon::Middlewares before installing the probe
|
|
89
|
+
* SQL error encoder should not operate in-place
|
|
90
|
+
* Fix Middleware
|
|
91
|
+
* More debug logging
|
|
92
|
+
* Log Rails version in MetricsReporter
|
|
93
|
+
* Handle missing Net::ReadTimeout in 1.9.3
|
|
94
|
+
* Include original exception information in sql_parse errors
|
|
95
|
+
* Debugging for failed application creation
|
|
96
|
+
* Make double sure that Trace started_at is an Integer
|
|
97
|
+
|
|
98
|
+
## 0.3.12 (April 17, 2014)
|
|
99
|
+
|
|
100
|
+
* Include more information in type check errors
|
|
101
|
+
* Use stdlib SecureRandom instead of ActiveSupport::SecureRandom - Fixes Rails 3.1
|
|
102
|
+
* Instrumenter#start! should fail if worker not spawned
|
|
103
|
+
* Configurable timeouts for Util::HTTP
|
|
104
|
+
* Improve proxy handling for Util::HTTP
|
|
105
|
+
* Improve HTTP error handling
|
|
106
|
+
* Refactor sql_parse errors
|
|
107
|
+
|
|
108
|
+
## 0.3.11 (April 11, 2014)
|
|
109
|
+
|
|
110
|
+
* Improved error handling and internal metrics
|
|
111
|
+
* Improved missing native agent message
|
|
112
|
+
* Improved install logging
|
|
113
|
+
* Added initial inline docs
|
|
114
|
+
* Respects HTTP_PROXY env var during installation
|
|
115
|
+
* Don't overwrite sockfile_path if set explicitly
|
|
116
|
+
|
|
117
|
+
## 0.3.10 (April 8, 2014)
|
|
118
|
+
|
|
119
|
+
* Don't raise on missing native agent path
|
|
120
|
+
|
|
121
|
+
## 0.3.9 (April 8, 2014)
|
|
122
|
+
|
|
123
|
+
* Avoid finalizing sockets in the child process
|
|
124
|
+
* Fix non-displaying warnings around native agent
|
|
125
|
+
* Remove HTTP path information from title for better grouping
|
|
126
|
+
|
|
127
|
+
## 0.3.8 (April 3, 2014)
|
|
128
|
+
|
|
129
|
+
* Update vendored highline to 1.6.21
|
|
130
|
+
* Send more information with exceptions for easier debugging
|
|
131
|
+
* Instrument and report internal agent metrics for easier debugging
|
|
132
|
+
* Fix bug with tracking request counts per endpoint
|
|
133
|
+
|
|
134
|
+
## 0.3.7 (March 31, 2014)
|
|
135
|
+
|
|
136
|
+
* Use a default event category if none passed to Skylight.instrument
|
|
137
|
+
* Fix bugs around disabling the agent
|
|
138
|
+
* Fix native extension compilation bugs
|
|
139
|
+
|
|
140
|
+
## 0.3.6 (March 27, 2014)
|
|
141
|
+
|
|
142
|
+
* Shorter token validation timeout
|
|
143
|
+
* Allow validation to be skipped
|
|
144
|
+
|
|
145
|
+
## 0.3.5 (March 26, 2014)
|
|
146
|
+
|
|
147
|
+
* Update Rust component
|
|
148
|
+
* Return true from Task#handle to avoid sutdown
|
|
149
|
+
* Fix numeric check that caused crash on some 32-bit systems
|
|
150
|
+
* Improve error message for missing Skylight ext
|
|
151
|
+
* Better config error messages
|
|
152
|
+
* Validate authentication token before starting
|
|
153
|
+
* Add proxy support
|
|
154
|
+
|
|
155
|
+
## 0.3.4 (March 13, 2014)
|
|
156
|
+
|
|
157
|
+
* Don't try to boot Skylight without native agent
|
|
158
|
+
* Make exception classes always available
|
|
159
|
+
* CLI should require railtie before loading application.rb
|
|
160
|
+
|
|
161
|
+
## 0.3.3 (March 12, 2014)
|
|
162
|
+
|
|
163
|
+
* Load the railtie even without native agent
|
|
164
|
+
|
|
165
|
+
## 0.3.2 (March 11, 2014)
|
|
166
|
+
|
|
167
|
+
* Autoload Skylight:Helpers even when native agent isn't available
|
|
168
|
+
* Fix SEGV
|
|
169
|
+
|
|
170
|
+
## 0.3.1 (March 8, 2014)
|
|
171
|
+
|
|
172
|
+
* Fix requires to allow CLI to function without native extension.
|
|
173
|
+
|
|
174
|
+
## 0.3.0 (February 28, 2014)
|
|
175
|
+
|
|
176
|
+
* Native Rust agent
|
|
177
|
+
* Send exceptions occurring during HTTP requests to the client.
|
|
178
|
+
* Warn users when skylight is potentially disabled incorrectly.
|
|
179
|
+
* Update SQL Lexer to 0.0.6
|
|
180
|
+
* Log the backtraces of unhandled exceptions
|
|
181
|
+
* Add support for disabling GC tracking
|
|
182
|
+
* Add support for disabling agent
|
|
183
|
+
|
|
184
|
+
## 0.2.7 (February 26, 2014)
|
|
185
|
+
|
|
186
|
+
* Disable annotations to reduce memory load.
|
|
187
|
+
|
|
188
|
+
## 0.2.6 (February 25, 2014)
|
|
189
|
+
|
|
190
|
+
* `inspect` even whitelisted payload props
|
|
191
|
+
* Ignore Errno::EINTR for 'ps' call
|
|
192
|
+
|
|
193
|
+
## 0.2.5 (February 21, 2014)
|
|
194
|
+
|
|
195
|
+
* Revert "Update SqlLexer to 0.0.4"
|
|
196
|
+
|
|
197
|
+
## 0.2.4 (February 20, 2014)
|
|
198
|
+
|
|
199
|
+
* Whitelist process action annotation keys.
|
|
200
|
+
* Update SqlLexer to 0.0.4
|
|
201
|
+
|
|
202
|
+
## 0.2.3 (December 20, 2013)
|
|
203
|
+
|
|
204
|
+
* Fix SQL lexing for comments, arrays, double-colon casting, and multiple queries
|
|
205
|
+
* Handle template paths from gems
|
|
206
|
+
* Status and exception reports for agent debugging
|
|
207
|
+
|
|
208
|
+
## 0.2.2 (December 10, 2013)
|
|
209
|
+
|
|
210
|
+
* Added support for Mongoid/Moped
|
|
211
|
+
* Fix probe enabling
|
|
212
|
+
* Improved error reporting
|
|
213
|
+
* Fix bug with multiple subscribers to same notification
|
|
214
|
+
|
|
215
|
+
## 0.2.1 (December 4, 2013)
|
|
216
|
+
|
|
217
|
+
* Fix bin/skylight
|
|
218
|
+
|
|
219
|
+
## 0.2.0 (December 3, 2013)
|
|
220
|
+
|
|
221
|
+
* Added Probes, initially Net::HTTP and Excon
|
|
222
|
+
* Wide-ranging memory cleanup
|
|
223
|
+
* Better resiliance to binary and encoding errors
|
|
224
|
+
* Add support for disabling
|
|
225
|
+
* De-dupe rendering instrumentation better
|
|
226
|
+
* Fix send_file event to not spew a gazillion nodes
|
|
227
|
+
* Rails 3.0 compatibility
|
|
228
|
+
* Detailed SQL annotations
|
|
229
|
+
|
|
230
|
+
## 0.1.8 (July 19, 2013)
|
|
231
|
+
|
|
232
|
+
* Update agent for new authentication scheme
|
|
233
|
+
* Change ENV variable prefix from SK_ to SKYLIGHT_
|
|
234
|
+
|
|
235
|
+
## 0.1.7 (July 11, 2013)
|
|
236
|
+
|
|
237
|
+
* Add instrument_method helper
|
|
238
|
+
* Add the ability to configure logging from railtie
|
|
239
|
+
* Tracks the current host
|
|
240
|
+
* [BUG] Handle AS::N monkey patching when there are already subscribers
|
|
241
|
+
* [BUG] Handle ruby 1.9.2 encoding bug
|
|
242
|
+
|
|
243
|
+
## 0.1.6 (June 11, 2013)
|
|
244
|
+
|
|
245
|
+
* [BUG] Fix unix domain socket write function in standalone agent
|
|
246
|
+
* Performance improvements
|
|
247
|
+
* Tolerate invalid trace building
|
|
248
|
+
* Fix Skylight on Rails 4
|
|
249
|
+
|
|
250
|
+
## 0.1.5 (May 31, 2013)
|
|
251
|
+
|
|
252
|
+
* Provide a default CA cert when one is not already present
|
|
253
|
+
* Expose Skylight.start! and Skylight.trace as APIs
|
|
254
|
+
* Expose Skylight.instrument as an API for custom instrumentation.
|
|
255
|
+
|
|
256
|
+
## 0.1.4 (May 30, 2013)
|
|
257
|
+
|
|
258
|
+
* [BUG] Fix some errors caused by floating point rounding
|
|
259
|
+
* [BUG] Handle clock skew caused by system clock changes
|
|
260
|
+
|
|
261
|
+
## 0.1.3 (May 29, 2013)
|
|
262
|
+
|
|
263
|
+
* [BUG] Require net/https and openssl
|
|
264
|
+
* [BUG] Rails' logger does not respond to #log. Use level methods
|
|
265
|
+
instead
|
|
266
|
+
|
|
267
|
+
## 0.1.2 (May 29, 2013)
|
|
268
|
+
|
|
269
|
+
* [BUG] Disable GC profiling on JRuby
|
|
270
|
+
|
|
271
|
+
## 0.1.1 (May 29, 2013)
|
|
272
|
+
|
|
273
|
+
* [BUG] GC Profiling was not getting enabled
|
|
274
|
+
|
|
275
|
+
## 0.1.0 (May 24, 2013)
|
|
276
|
+
|
|
277
|
+
* Initial release
|
data/CLA.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
FOR GOOD AND VALUABLE CONSIDERATION, receipt of which is hereby acknowledged
|
|
2
|
+
[name of assignor] ("Assignor"), located at [address of assignor], hereby
|
|
3
|
+
irrevocably transfers and assigns to Tilde, Inc., located at 517 SW 4th Ave,
|
|
4
|
+
Ste 2, Portland, OR 97204, its successors and assigns, in perpetuity, all
|
|
5
|
+
right (whether now known or hereinafter invented), title, and interest,
|
|
6
|
+
throughout the world, including any copyrights and renewals or extensions
|
|
7
|
+
thereto, in the contributions to Skylight made by Assignor.
|
|
8
|
+
|
|
9
|
+
IN WITNESS THEREOF, Assignor has duly executed this Agreement.
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Before contributing, please [sign the CLA](https://docs.google.com/spreadsheet/viewform?usp=drive_web&formkey=dHJVY1M5bzNzY0pwN2dRZjMxV0dXSkE6MA#gid=0).
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
All other components of this product, except where otherwise noted, are
|
|
2
|
+
Copyright (c) 2013-2014 Tilde, Inc.
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
Certain inventions disclosed in this file may be claimed within patents
|
|
6
|
+
owned or patent applications filed by Tilde, Inc. or third parties.
|
|
7
|
+
|
|
8
|
+
Subject to the terms of this notice, Tilde grants you a nonexclusive,
|
|
9
|
+
nontransferable license, without the right to sublicense, to (a) install and
|
|
10
|
+
execute one copy of these files on any number of workstations owned or
|
|
11
|
+
controlled by you and (b) distribute verbatim copies of these files to third
|
|
12
|
+
parties. As a condition to the foregoing grant, you must provide this notice
|
|
13
|
+
along with each copy you distribute and you must not remove, alter, or
|
|
14
|
+
obscure this notice. All other use, reproduction, modification,
|
|
15
|
+
distribution, or other exploitation of these files is strictly prohibited,
|
|
16
|
+
except as may be set forth in a separate written license agreement between
|
|
17
|
+
you and Tilde. The terms of any such license agreement will control over
|
|
18
|
+
this notice. The license stated above will be automatically terminated and
|
|
19
|
+
revoked if you exceed its scope or violate any of the terms of this notice.
|
|
20
|
+
|
|
21
|
+
This License does not grant permission to use the trade names, trademarks,
|
|
22
|
+
service marks, or product names of Tilde, except as required for reasonable
|
|
23
|
+
and customary use in describing the origin of this file and reproducing the
|
|
24
|
+
content of this notice. You may not mark or brand this file with any trade
|
|
25
|
+
name, trademarks, service marks, or product names other than the original
|
|
26
|
+
brand (if any) provided by Tilde.
|
|
27
|
+
|
|
28
|
+
Unless otherwise expressly agreed by Tilde in a separate written
|
|
29
|
+
license agreement, these files are provided AS IS, WITHOUT WARRANTY OF
|
|
30
|
+
ANY KIND, including without any implied warranties of MERCHANTABILITY,
|
|
31
|
+
FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT. As a
|
|
32
|
+
condition to your use of these files, you are solely responsible for
|
|
33
|
+
such use. Tilde will have no liability to you for direct,
|
|
34
|
+
indirect, consequential, incidental, special, or punitive damages or
|
|
35
|
+
for lost profits or data.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
Other Licenses
|
|
40
|
+
==============
|
|
41
|
+
|
|
42
|
+
ActiveSupport
|
|
43
|
+
-------------
|
|
44
|
+
|
|
45
|
+
Copyright (c) 2005-2014 David Heinemeier Hansson
|
|
46
|
+
|
|
47
|
+
Released under the MIT License.
|
|
48
|
+
|
|
49
|
+
Original source at https://github.com/rails/rails/tree/master/activesupport.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
HighLine
|
|
53
|
+
--------
|
|
54
|
+
|
|
55
|
+
Copyright (c) 2014 James Edward Gray II, Gregory Brown, et al.
|
|
56
|
+
|
|
57
|
+
Distributed under the user's choice of the GPL Version 2 or the Ruby software license.
|
|
58
|
+
|
|
59
|
+
Original source at https://github.com/JEG2/highline.
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
Thor
|
|
63
|
+
----
|
|
64
|
+
|
|
65
|
+
Copyright (c) 2008 Yehuda Katz, Eric Hodel, et al.
|
|
66
|
+
|
|
67
|
+
Released under the MIT License.
|
|
68
|
+
|
|
69
|
+
Original source at https://github.com/erikhuda/thor.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
ThreadSafe
|
|
73
|
+
----------
|
|
74
|
+
|
|
75
|
+
Copyright (c) 2014 Charles Oliver Nutter, thedarkone, et al.
|
|
76
|
+
|
|
77
|
+
Distributed under Apache License, Version 2.0, January 2004
|
|
78
|
+
|
|
79
|
+
Original source at https://github.com/ruby-concurrency/thread_safe.
|
data/README.md
ADDED
data/bin/skylight
ADDED
data/ext/extconf.rb
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
require 'rbconfig'
|
|
2
|
+
require 'mkmf'
|
|
3
|
+
require 'yaml'
|
|
4
|
+
require 'logger'
|
|
5
|
+
require 'fileutils'
|
|
6
|
+
|
|
7
|
+
$:.unshift File.expand_path("../../lib", __FILE__)
|
|
8
|
+
require 'skylight/version'
|
|
9
|
+
require 'skylight/util/multi_io'
|
|
10
|
+
require 'skylight/util/native_ext_fetcher'
|
|
11
|
+
require 'skylight/util/platform'
|
|
12
|
+
|
|
13
|
+
include Skylight::Util
|
|
14
|
+
|
|
15
|
+
SKYLIGHT_INSTALL_LOG = File.expand_path("../install.log", __FILE__)
|
|
16
|
+
SKYLIGHT_REQUIRED = ENV.key?("SKYLIGHT_REQUIRED") && ENV['SKYLIGHT_REQUIRED'] !~ /^false$/i
|
|
17
|
+
SKYLIGHT_FETCH_LIB = !ENV.key?('SKYLIGHT_FETCH_LIB') || ENV['SKYLIGHT_FETCH_LIB'] !~ /^false$/i
|
|
18
|
+
|
|
19
|
+
# Directory where skylight.h exists
|
|
20
|
+
SKYLIGHT_HDR_PATH = ENV['SKYLIGHT_HDR_PATH'] || ENV['SKYLIGHT_LIB_PATH'] || '.'
|
|
21
|
+
SKYLIGHT_LIB_PATH = ENV['SKYLIGHT_LIB_PATH'] || File.expand_path("../../lib/skylight/native/#{Platform.tuple}", __FILE__)
|
|
22
|
+
|
|
23
|
+
# Setup logger
|
|
24
|
+
LOG = Logger.new(MultiIO.new(STDOUT, File.open(SKYLIGHT_INSTALL_LOG, 'a')))
|
|
25
|
+
|
|
26
|
+
# Handles terminating in the case of a failure. If we have a bug, we do not
|
|
27
|
+
# want to break our customer's deploy, but extconf.rb requires a Makefile to be
|
|
28
|
+
# present upon a successful exit. To satisfy this requirement, we create a
|
|
29
|
+
# dummy Makefile.
|
|
30
|
+
def fail(msg, type=:error)
|
|
31
|
+
LOG.send type, msg
|
|
32
|
+
|
|
33
|
+
if SKYLIGHT_REQUIRED
|
|
34
|
+
exit 1
|
|
35
|
+
else
|
|
36
|
+
File.open("Makefile", "w") do |file|
|
|
37
|
+
file.puts "default:"
|
|
38
|
+
file.puts "install:"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
exit
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# === Setup paths
|
|
47
|
+
#
|
|
48
|
+
root = File.expand_path('../', __FILE__)
|
|
49
|
+
hdrpath = File.expand_path(SKYLIGHT_HDR_PATH)
|
|
50
|
+
libpath = File.expand_path(SKYLIGHT_LIB_PATH)
|
|
51
|
+
libskylight = File.expand_path("libskylight.#{Platform.libext}", libpath)
|
|
52
|
+
libskylight_yml = File.expand_path('libskylight.yml', root)
|
|
53
|
+
skylight_dlopen_h = File.expand_path("skylight_dlopen.h", hdrpath)
|
|
54
|
+
skylight_dlopen_c = File.expand_path("skylight_dlopen.c", hdrpath)
|
|
55
|
+
|
|
56
|
+
LOG.info "SKYLIGHT_HDR_PATH=#{hdrpath}; SKYLIGHT_LIB_PATH=#{libpath}"
|
|
57
|
+
|
|
58
|
+
LOG.info "file exists; path=#{libskylight}" if File.exists?(libskylight)
|
|
59
|
+
LOG.info "file exists; path=#{skylight_dlopen_c}" if File.exists?(skylight_dlopen_c)
|
|
60
|
+
LOG.info "file exists; path=#{skylight_dlopen_h}" if File.exists?(skylight_dlopen_h)
|
|
61
|
+
|
|
62
|
+
# If libskylight is not present, fetch it
|
|
63
|
+
if !File.exist?(libskylight) && !File.exist?(skylight_dlopen_c) && !File.exist?(skylight_dlopen_h)
|
|
64
|
+
if !SKYLIGHT_FETCH_LIB
|
|
65
|
+
fail "libskylight.#{LIBEXT} not found -- remote download disabled; aborting install"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Ensure that libskylight.yml is present and load it
|
|
69
|
+
unless File.exist?(libskylight_yml)
|
|
70
|
+
fail "`#{libskylight_yml}` does not exist"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
unless libskylight_info = YAML.load_file(libskylight_yml)
|
|
74
|
+
fail "`#{libskylight_yml}` does not contain data"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
unless version = libskylight_info["version"]
|
|
78
|
+
fail "libskylight version missing from `#{libskylight_yml}`"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
unless checksums = libskylight_info["checksums"]
|
|
82
|
+
fail "libskylight checksums missing from `#{libskylight_yml}`"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
unless checksum = checksums[Platform.tuple]
|
|
86
|
+
fail "no checksum entry for requested architecture -- " \
|
|
87
|
+
"this probably means the requested architecture is not supported; " \
|
|
88
|
+
"platform=#{Platform.tuple}; available=#{checksums.keys}", :info
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
begin
|
|
92
|
+
res = NativeExtFetcher.fetch(
|
|
93
|
+
version: version,
|
|
94
|
+
target: hdrpath,
|
|
95
|
+
checksum: checksum,
|
|
96
|
+
arch: Platform.tuple,
|
|
97
|
+
required: SKYLIGHT_REQUIRED,
|
|
98
|
+
platform: Platform.tuple,
|
|
99
|
+
logger: LOG)
|
|
100
|
+
|
|
101
|
+
unless res
|
|
102
|
+
fail "could not fetch archive -- aborting skylight native extension build"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Move skylightd & libskylight to appropriate directory
|
|
106
|
+
if hdrpath != libpath
|
|
107
|
+
# Ensure the directory is present
|
|
108
|
+
FileUtils.mkdir_p libpath
|
|
109
|
+
|
|
110
|
+
# Move
|
|
111
|
+
FileUtils.mv "#{hdrpath}/libskylight.#{Platform.libext}",
|
|
112
|
+
"#{libpath}/libskylight.#{Platform.libext}",
|
|
113
|
+
:force => true
|
|
114
|
+
|
|
115
|
+
FileUtils.mv "#{hdrpath}/skylightd",
|
|
116
|
+
"#{libpath}/skylightd",
|
|
117
|
+
:force => true
|
|
118
|
+
end
|
|
119
|
+
rescue => e
|
|
120
|
+
fail "unable to fetch native extension; msg=#{e.message}\n#{e.backtrace.join("\n")}"
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
#
|
|
125
|
+
#
|
|
126
|
+
# ===== By this point, libskylight is present =====
|
|
127
|
+
#
|
|
128
|
+
#
|
|
129
|
+
|
|
130
|
+
def find_file(file, root = nil)
|
|
131
|
+
path = File.expand_path(file, root || '.')
|
|
132
|
+
|
|
133
|
+
unless File.exist?(path)
|
|
134
|
+
fail "#{file} missing; path=#{root}"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
$VPATH << libpath
|
|
139
|
+
|
|
140
|
+
# Where the ruby binding src is
|
|
141
|
+
SRC_PATH = File.expand_path('..', __FILE__)
|
|
142
|
+
|
|
143
|
+
$srcs = Dir[File.expand_path("*.c", SRC_PATH)].map { |f| File.basename(f) }
|
|
144
|
+
|
|
145
|
+
# If the native agent support files were downloaded to a different directory,
|
|
146
|
+
# explicitly the file to the list of sources.
|
|
147
|
+
unless $srcs.include?('skylight_dlopen.c')
|
|
148
|
+
$srcs << "skylight_dlopen.c" # From libskylight dist
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Make sure that the files are present
|
|
152
|
+
find_file 'skylight_dlopen.h', hdrpath
|
|
153
|
+
find_file 'skylight_dlopen.c', hdrpath
|
|
154
|
+
find_header 'skylight_dlopen.h', hdrpath
|
|
155
|
+
have_header 'dlfcn.h' or fail "could not create Makefile; dlfcn.h missing"
|
|
156
|
+
|
|
157
|
+
# For escaping the GVL
|
|
158
|
+
unless have_func('rb_thread_call_without_gvl', 'ruby/thread.h')
|
|
159
|
+
have_func('rb_thread_blocking_region') or abort "Ruby is unexpectedly missing rb_thread_blocking_region. This should not happen."
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Some extra checks
|
|
163
|
+
# -Werror is needed for the fast thread local storage
|
|
164
|
+
$CFLAGS << " -Werror"
|
|
165
|
+
|
|
166
|
+
checking_for 'fast thread local storage' do
|
|
167
|
+
if try_compile("__thread int foo;")
|
|
168
|
+
$defs << "-DHAVE_FAST_TLS"
|
|
169
|
+
true
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# spec = nil
|
|
174
|
+
# checking_for('thread_specific', '%s') do
|
|
175
|
+
# spec = %w[__declspec(thread) __thread].find {|th|
|
|
176
|
+
# try_compile("#{th} int foo;", "", :werror => true)
|
|
177
|
+
# }
|
|
178
|
+
# spec or 'no'
|
|
179
|
+
# end
|
|
180
|
+
# $defs << "-DRB_THREAD_SPECIFIC=#{spec}" if spec
|
|
181
|
+
|
|
182
|
+
# Flag -std=c99 required for older build systems
|
|
183
|
+
$CFLAGS << " -std=c99 -pedantic -Wall -fno-strict-aliasing"
|
|
184
|
+
|
|
185
|
+
# TODO: Compute the relative path to the location
|
|
186
|
+
create_makefile 'skylight_native', File.expand_path('..', __FILE__) # or fail "could not create makefile"
|