Skip to content

Commit a8766c2

Browse files
committed
Merge branch 'cgfrost-master'
2 parents ed75d7b + b6cb39e commit a8766c2

13 files changed

Lines changed: 18 additions & 294 deletions

File tree

.idea/dictionaries/cgfrost.xml

Lines changed: 0 additions & 7 deletions
This file was deleted.

config/open_jdk_jre.yml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,16 @@
1414
# limitations under the License.
1515

1616
# Configuration for JRE repositories keyed by vendor
17-
# Pre Java 1.8, permgen was used instead of metaspace, the buildpack will consume the configuration as appropriate.
18-
# Please see the documentation for more detail.
17+
# To go back to Java 7, permgen should be used instead of metaspace. Please see the documentation for more detail.
1918
---
2019
repository_root: "{default.repository.root}/openjdk/{platform}/{architecture}"
21-
version:
22-
detect_compiled: enabled
23-
8: 1.8.0_+
24-
7: 1.7.0_+
25-
6: 1.6.0_+
20+
version: 1.8.0_+
2621
memory_sizes:
2722
metaspace: 64m..
28-
permgen: 64m..
23+
# permgen: 64m..
2924
memory_heuristics:
3025
heap: 75
3126
metaspace: 10
32-
permgen: 10
27+
# permgen: 10
3328
stack: 5
3429
native: 10

config/oracle_jre.yml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,19 @@
1414
# limitations under the License.
1515

1616
# Configuration for JRE repositories keyed by vendor
17-
# Pre Java 1.8, permgen was used instead of metaspace, the buildpack will consume the configuration as appropriate.
18-
# Please see the documentation for more detail.
17+
# Pre Java 1.8, permgen was used instead of metaspace. Please see the documentation for more detail.
1918
---
2019
# You must specify a the repository root of an Oracle JRE repository. Please see the documentation for more detail.
2120
# e.g. repository_root: "http://example.com/oracle-jre/{platform}/{architecture}"
2221

2322
repository_root: ""
24-
version:
25-
detect_compiled: enabled
26-
8: 1.8.0_+
27-
7: 1.7.0_+
28-
6: 1.6.0_+
23+
version: 1.8.0_+
2924
memory_sizes:
3025
metaspace: 64m..
31-
permgen: 64m..
26+
# permgen: 64m..
3227
memory_heuristics:
3328
heap: 75
3429
metaspace: 10
35-
permgen: 10
30+
# permgen: 10
3631
stack: 5
3732
native: 10

java-buildpack.iml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@
271271
<orderEntry type="library" scope="PROVIDED" name="addressable (v2.3.6, rbenv: 1.9.3-p551) [gem]" level="application" />
272272
<orderEntry type="library" scope="PROVIDED" name="ast (v2.0.0, rbenv: 1.9.3-p551) [gem]" level="application" />
273273
<orderEntry type="library" scope="PROVIDED" name="astrolabe (v1.3.0, rbenv: 1.9.3-p551) [gem]" level="application" />
274-
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.7.11, rbenv: 1.9.3-p551) [gem]" level="application" />
274+
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.7.8, rbenv: 1.9.3-p551) [gem]" level="application" />
275275
<orderEntry type="library" scope="PROVIDED" name="codeclimate-test-reporter (v0.4.3, rbenv: 1.9.3-p551) [gem]" level="application" />
276276
<orderEntry type="library" scope="PROVIDED" name="crack (v0.4.2, rbenv: 1.9.3-p551) [gem]" level="application" />
277277
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.2.5, rbenv: 1.9.3-p551) [gem]" level="application" />
@@ -281,13 +281,13 @@
281281
<orderEntry type="library" scope="PROVIDED" name="powerpack (v0.0.9, rbenv: 1.9.3-p551) [gem]" level="application" />
282282
<orderEntry type="library" scope="PROVIDED" name="rainbow (v2.0.0, rbenv: 1.9.3-p551) [gem]" level="application" />
283283
<orderEntry type="library" scope="PROVIDED" name="rake (v10.4.2, rbenv: 1.9.3-p551) [gem]" level="application" />
284-
<orderEntry type="library" scope="PROVIDED" name="redcarpet (v3.2.2, rbenv: 1.9.3-p551) [gem]" level="application" />
284+
<orderEntry type="library" scope="PROVIDED" name="redcarpet (v3.2.1, rbenv: 1.9.3-p551) [gem]" level="application" />
285285
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.1.0, rbenv: 1.9.3-p551) [gem]" level="application" />
286286
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.1.7, rbenv: 1.9.3-p551) [gem]" level="application" />
287287
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.1.2, rbenv: 1.9.3-p551) [gem]" level="application" />
288288
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.1.3, rbenv: 1.9.3-p551) [gem]" level="application" />
289289
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.1.2, rbenv: 1.9.3-p551) [gem]" level="application" />
290-
<orderEntry type="library" scope="PROVIDED" name="rubocop (v0.28.0, rbenv: 1.9.3-p551) [gem]" level="application" />
290+
<orderEntry type="library" scope="PROVIDED" name="rubocop (v0.27.1, rbenv: 1.9.3-p551) [gem]" level="application" />
291291
<orderEntry type="library" scope="PROVIDED" name="rubocop-rspec (v1.2.1, rbenv: 1.9.3-p551) [gem]" level="application" />
292292
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.7.0, rbenv: 1.9.3-p551) [gem]" level="application" />
293293
<orderEntry type="library" scope="PROVIDED" name="rubyzip (v1.1.6, rbenv: 1.9.3-p551) [gem]" level="application" />

lib/java_buildpack/jre/open_jdk_like.rb

Lines changed: 7 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
# limitations under the License.
1616

1717
require 'fileutils'
18-
require 'find'
1918
require 'java_buildpack/component/versioned_dependency_component'
2019
require 'java_buildpack/jre'
2120
require 'java_buildpack/jre/memory/openjdk_memory_heuristic_factory'
@@ -25,7 +24,6 @@ module Jre
2524

2625
# Encapsulates the detect, compile, and release functionality for selecting an OpenJDK-like JRE.
2726
class OpenJDKLike < JavaBuildpack::Component::VersionedDependencyComponent
28-
include Find
2927

3028
# Creates an instance
3129
#
@@ -35,20 +33,15 @@ def initialize(context)
3533
@component_name = self.class.to_s.space_case
3634
@configuration = context[:configuration]
3735
@droplet = context[:droplet]
38-
@logger = JavaBuildpack::Logging::LoggerFactory.instance.get_logger OpenJDKLike
3936

4037
@droplet.java_home.root = @droplet.sandbox
4138
end
4239

4340
# (see JavaBuildpack::Component::BaseComponent#detect)
4441
def detect
45-
version = detect_compiled?(@configuration[KEY_VERSION]) ? compiled_version(@application.root) : VERSION_8
46-
configuration = { KEY_REPOSITORY_ROOT => @configuration[KEY_REPOSITORY_ROOT],
47-
KEY_VERSION => @configuration[KEY_VERSION][version] }
48-
49-
@version, @uri = JavaBuildpack::Repository::ConfiguredItem.find_item(@component_name, configuration)
42+
@version, @uri = JavaBuildpack::Repository::ConfiguredItem.find_item(@component_name,
43+
@configuration)
5044
@droplet.java_home.version = @version
51-
5245
super
5346
end
5447

@@ -60,96 +53,30 @@ def compile
6053

6154
# (see JavaBuildpack::Component::BaseComponent#release)
6255
def release
63-
version = detect_compiled?(@configuration[KEY_VERSION]) ? compiled_version(@application.root) : VERSION_8
64-
6556
@droplet.java_opts
6657
.add_system_property('java.io.tmpdir', '$TMPDIR')
6758
.add_option('-XX:OnOutOfMemoryError', killjava)
68-
.concat memory(version)
59+
.concat memory
6960
end
7061

7162
private
7263

73-
CAFEBABE = 'cafebabe'.freeze
74-
75-
KEY_DETECT_COMPILED_VERSION = 'detect_compiled'.freeze
76-
7764
KEY_MEMORY_HEURISTICS = 'memory_heuristics'.freeze
7865

7966
KEY_MEMORY_SIZES = 'memory_sizes'.freeze
8067

81-
KEY_REPOSITORY_ROOT = 'repository_root'.freeze
82-
83-
KEY_VERSION = 'version'.freeze
84-
85-
VERSION_6 = 6.freeze
86-
87-
VERSION_7 = 7.freeze
88-
89-
VERSION_8 = 8.freeze
90-
91-
private_constant :CAFEBABE, :KEY_DETECT_COMPILED_VERSION, :KEY_MEMORY_HEURISTICS, :KEY_MEMORY_SIZES,
92-
:KEY_REPOSITORY_ROOT, :KEY_VERSION, :VERSION_6, :VERSION_7, :VERSION_8
93-
94-
def class?(path)
95-
File.extname(path) == '.class'
96-
end
97-
98-
def class_file_format(path)
99-
bits = File.open(path).read.unpack('H*')[0]
100-
@logger.debug { "Scanning #{path}: #{bits[0, 8]}/#{bits[14, 2]}" }
101-
102-
Integer(bits[14, 2]) if magic_number?(bits)
103-
end
104-
105-
def compiled_version(root)
106-
@logger.debug { 'Detecting compiled version' }
107-
108-
versions = find(root.to_path).map do |child|
109-
next if File.directory?(child) || !class?(child)
110-
class_file_format child
111-
end
112-
113-
version versions.max_by(&:to_i)
114-
end
115-
116-
def detect_compiled?(configuration)
117-
configuration[KEY_DETECT_COMPILED_VERSION] == 'enabled'
118-
end
68+
private_constant :KEY_MEMORY_HEURISTICS, :KEY_MEMORY_SIZES
11969

12070
def killjava
12171
@droplet.sandbox + 'bin/killjava.sh'
12272
end
12373

124-
def magic_number?(bits)
125-
bits[0, 8] == CAFEBABE
126-
end
127-
128-
def memory(version)
129-
sizes = @configuration[KEY_MEMORY_SIZES] ? @configuration[KEY_MEMORY_SIZES].clone : {}
130-
heuristics = @configuration[KEY_MEMORY_HEURISTICS] ? @configuration[KEY_MEMORY_HEURISTICS].clone : {}
131-
132-
if version < VERSION_8
133-
heuristics.delete 'metaspace'
134-
sizes.delete 'metaspace'
135-
else
136-
heuristics.delete 'permgen'
137-
sizes.delete 'permgen'
138-
end
139-
74+
def memory
75+
sizes = @configuration[KEY_MEMORY_SIZES] || {}
76+
heuristics = @configuration[KEY_MEMORY_HEURISTICS] || {}
14077
OpenJDKMemoryHeuristicFactory.create_memory_heuristic(sizes, heuristics, @version).resolve
14178
end
14279

143-
def version(format)
144-
if format == 32
145-
VERSION_6
146-
elsif format == 33
147-
VERSION_7
148-
else
149-
VERSION_8
150-
end
151-
end
152-
15380
end
15481

15582
end

spec/fixtures/jre_java6_application/META-INF/MANIFEST.MF

Lines changed: 0 additions & 2 deletions
This file was deleted.

spec/fixtures/jre_java7_application/META-INF/MANIFEST.MF

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)