Skip to content

Commit bc4249b

Browse files
committed
Revert "Auto detect Java major version"
This reverts commit de2c4e1. [resolves #123]
1 parent 757f096 commit bc4249b

13 files changed

Lines changed: 18 additions & 295 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 & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,15 @@
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'
22-
require 'zip'
2321

2422
module JavaBuildpack
2523
module Jre
2624

2725
# Encapsulates the detect, compile, and release functionality for selecting an OpenJDK-like JRE.
2826
class OpenJDKLike < JavaBuildpack::Component::VersionedDependencyComponent
29-
include Find
3027

3128
# Creates an instance
3229
#
@@ -36,20 +33,15 @@ def initialize(context)
3633
@component_name = self.class.to_s.space_case
3734
@configuration = context[:configuration]
3835
@droplet = context[:droplet]
39-
@logger = JavaBuildpack::Logging::LoggerFactory.instance.get_logger OpenJDKLike
4036

4137
@droplet.java_home.root = @droplet.sandbox
4238
end
4339

4440
# (see JavaBuildpack::Component::BaseComponent#detect)
4541
def detect
46-
version = detect_compiled?(@configuration[KEY_VERSION]) ? compiled_version(@application.root) : VERSION_8
47-
configuration = { KEY_REPOSITORY_ROOT => @configuration[KEY_REPOSITORY_ROOT],
48-
KEY_VERSION => @configuration[KEY_VERSION][version] }
49-
50-
@version, @uri = JavaBuildpack::Repository::ConfiguredItem.find_item(@component_name, configuration)
42+
@version, @uri = JavaBuildpack::Repository::ConfiguredItem.find_item(@component_name,
43+
@configuration)
5144
@droplet.java_home.version = @version
52-
5345
super
5446
end
5547

@@ -61,96 +53,30 @@ def compile
6153

6254
# (see JavaBuildpack::Component::BaseComponent#release)
6355
def release
64-
version = detect_compiled?(@configuration[KEY_VERSION]) ? compiled_version(@application.root) : VERSION_8
65-
6656
@droplet.java_opts
6757
.add_system_property('java.io.tmpdir', '$TMPDIR')
6858
.add_option('-XX:OnOutOfMemoryError', killjava)
69-
.concat memory(version)
59+
.concat memory
7060
end
7161

7262
private
7363

74-
CAFEBABE = 'cafebabe'.freeze
75-
76-
KEY_DETECT_COMPILED_VERSION = 'detect_compiled'.freeze
77-
7864
KEY_MEMORY_HEURISTICS = 'memory_heuristics'.freeze
7965

8066
KEY_MEMORY_SIZES = 'memory_sizes'.freeze
8167

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

12170
def killjava
12271
@droplet.sandbox + 'bin/killjava.sh'
12372
end
12473

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

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

15682
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)