summaryrefslogtreecommitdiff
path: root/dev-lang
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-12-15 17:25:28 +0000
committerV3n3RiX <venerix@redcorelinux.org>2017-12-15 17:25:28 +0000
commit6b933047f46efec1aa747570f945344254227457 (patch)
treea12a4b87b38f954c4de435272cf4b90d721df5e8 /dev-lang
parentf45955e60d4da9b7f4a1088c98042f9c06669039 (diff)
gentoo resync : 15.12.2017
Diffstat (limited to 'dev-lang')
-rw-r--r--dev-lang/Manifest.gzbin19344 -> 19351 bytes
-rw-r--r--dev-lang/crystal/Manifest6
-rw-r--r--dev-lang/crystal/crystal-0.23.1.ebuild7
-rw-r--r--dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch20
-rw-r--r--dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch9
-rw-r--r--dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch837
-rw-r--r--dev-lang/erlang/Manifest4
-rw-r--r--dev-lang/erlang/erlang-20.2.ebuild157
-rw-r--r--dev-lang/mmix/Manifest2
-rw-r--r--dev-lang/mmix/mmix-20160804.ebuild2
-rw-r--r--dev-lang/php/Manifest2
-rw-r--r--dev-lang/php/php-7.1.11.ebuild2
-rw-r--r--dev-lang/python-exec/Manifest2
-rw-r--r--dev-lang/python-exec/python-exec-2.4.5.ebuild2
-rw-r--r--dev-lang/ruby/Manifest9
-rw-r--r--dev-lang/ruby/ruby-2.2.9.ebuild245
-rw-r--r--dev-lang/ruby/ruby-2.3.6.ebuild242
-rw-r--r--dev-lang/ruby/ruby-2.4.3.ebuild243
-rw-r--r--dev-lang/swi-prolog/Manifest4
-rw-r--r--dev-lang/swi-prolog/swi-prolog-7.6.3.ebuild146
-rw-r--r--dev-lang/swi-prolog/swi-prolog-7.7.4.ebuild146
21 files changed, 1208 insertions, 879 deletions
diff --git a/dev-lang/Manifest.gz b/dev-lang/Manifest.gz
index 1384852dd966..6cf33c4b62dc 100644
--- a/dev-lang/Manifest.gz
+++ b/dev-lang/Manifest.gz
Binary files differ
diff --git a/dev-lang/crystal/Manifest b/dev-lang/crystal/Manifest
index 3579c333028b..ff2d088840d1 100644
--- a/dev-lang/crystal/Manifest
+++ b/dev-lang/crystal/Manifest
@@ -1,8 +1,6 @@
-AUX crystal-0.22.0-blocking-stdio-hack.patch 564 BLAKE2B ca388a6e18ef26d03bd0ef25f30a5424dbd814387e832a6f8a1e8f1097f180a4f3393df5c2d733259cb46f0be3e466d2496baa9b9e76eb2e4bb5968882cba513 SHA512 51df3a464efc7b34db970854577d89027177179cb4e72fdf74b6c9ae754749e30c93155bb18a5daf22db78b0f8985ec341092a95435f8de19800c33bca2f983e
-AUX crystal-0.23.0-verbose-LDFLAGS.patch 653 BLAKE2B dcbb7c4e421bc554a83363eae5a699f94023f3469bbe6f0f1d258f509c34334f01f52588711832600988e618131c42aa0eb07881759a2cbbe5521f47a0550c30 SHA512 76494f1dcd97665f787fac76f2b94ef8428259133f13b52cf21c6e5b816ab7697a96f90dad0dc658de6373c6df28b72809cce5656d4b8356a6b3eca73f23856a
-AUX crystal-0.23.1-llvm-5.patch 35030 BLAKE2B ebce677c3c13877c70c793fcdbdba01b2133fb86bb7c42a901fefa8120f7d1b47ec6eb23b9463558ed061e9bbdae7de6e214a47e57ae54f9ba905384893ae3ec SHA512 027ea2ad7d0af9736c59c770295490341509a1aec442bd1a859e33d3f783adf328edd9cd886f6645b45aab67084f41d55fac15263b2db9183aa4db93e1a528e4
DIST crystal-0.23.0-1-linux-i686.tar.gz 18498501 BLAKE2B 7a8e4e5a2b1425b6effe0a634b74b28c340c4d23c4bfccc0abac4e5d47473e10421d025e68e1fb1fa5b0ba8296108e36cd17d393fb143b8012168d595e5852f9 SHA512 8745114c4824d2859c569ed1bd1057d6d649d57b10d41d22c17627f623704eb98ec2e3ab2bf06622de624906f53e053975a6b9d852aeaafeae4f43585609de28
DIST crystal-0.23.0-1-linux-x86_64.tar.gz 18729061 BLAKE2B bfca07702b2f7c7d6b11aac864475316cabe86bdba90b1819ecd5cb45769b2b7fd9fb4c9f80e46301785209cc5b35fe39bf689163b9376a32b24f8a685a6281b SHA512 6a4e427b4ab3c3be6efcfaee5c1a19eff04eaf00db949d1e1ba8f29c3277affe96a7aba4273d93fd05251453d5b5b937aa792bc448ff2f6d6aa7f2b17d175f75
+DIST crystal-0.23.1-patchset.tar.bz2 7268 BLAKE2B 135990ac9f1a225f169dbc5bb6034d2194d9fc917954764564d68afec09af703382743965a801c9ce54a5866af60847b4c4fc0b9daf2cf5ea99052fbeb771b2a SHA512 68896fc5d1772eeb3dd263f1615fc8031a63d0f3eebca1feb35165adf14a610157302541c84cbc9031a3070fd5566ffe88ad03a8c523f55980520e5614b00b89
DIST crystal-0.23.1.tar.gz 1646650 BLAKE2B 3105a683e61835d1e514d5d403b00d3dfae01100a9862d6346c45201c5fb6cba879255469652463719998e976afc495ee9fd4f14f829a709f832cd323cfc2b3b SHA512 06ee0d45cc79cc343d04c346e9cd47b6e4ebc79bf21833662f268f9604f7d2080f7696824e1959de341539f801ae8f898fe1d7b18e4c75378d4eb191878668d5
-EBUILD crystal-0.23.1.ebuild 2266 BLAKE2B d3de0f98716d45216aa2d86be41077f042f3bf1e0de558d7ca606841ab0f0b0778b8beeafc02aa7ecdc6751169a4f98a8e97773c3859a56715095436c5cf0e85 SHA512 0b49b6ef3b8956101792acb7fe3f34c841e1e158280edf45e7dc4c48ebe67a89d158adec7b751ab7b773e58b7ba472d28245f25cb343ca488c26491b19a30143
+EBUILD crystal-0.23.1.ebuild 2362 BLAKE2B 2f704cebf99c97743ebe6dca1ec0f3bb81634842ef4e6415957efa7d4074b8b6764fe999592e6bb15c6ca528df63b001b06662c5e90860386e0e28c09673ab48 SHA512 cd9e414e5b81a23a93aec49a1f9021e6ee07792ed09281f9bd1ff91aa26bf94a2d8709e0379d46b9a3ec7207f77a945048a15bce024a685f9aa8698b697485da
MISC metadata.xml 1217 BLAKE2B 88f4d14814fe23df2d80ff0db254175504df5fe44a592484d99c71171c1ae64b333c8c6cec3ebf3c1d3fe6baac3c6961ff27eee6ea7f629d74363cb7f64b280f SHA512 ab6182218a9b597cb7d2ed45eb6204fe30b1567e288e897ca1e2fe78433da260a24f1f79b988fe7d8ace37c7f6c0da7ad4789bc79e15775be44b645d485738bd
diff --git a/dev-lang/crystal/crystal-0.23.1.ebuild b/dev-lang/crystal/crystal-0.23.1.ebuild
index 08967bd554f6..41f26d88e363 100644
--- a/dev-lang/crystal/crystal-0.23.1.ebuild
+++ b/dev-lang/crystal/crystal-0.23.1.ebuild
@@ -12,6 +12,7 @@ BV_X86=${BV}-linux-i686
DESCRIPTION="The Crystal Programming Language"
HOMEPAGE="https://crystal-lang.org"
SRC_URI="https://github.com/crystal-lang/crystal/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://dev.gentoo.org/~mgorny/dist/${P}-patchset.tar.bz2
amd64? ( https://github.com/crystal-lang/crystal/releases/download/${PV}/crystal-${BV_AMD64}.tar.gz )
x86? ( https://github.com/crystal-lang/crystal/releases/download/${PV}/crystal-${BV_X86}.tar.gz )"
@@ -37,14 +38,14 @@ RDEPEND="${DEPEND}
"
PATCHES=(
- "${FILESDIR}"/${PN}-0.23.0-verbose-LDFLAGS.patch
- "${FILESDIR}"/${PN}-0.23.1-llvm-5.patch
+ "${WORKDIR}"/${P}-patchset/${PN}-0.23.0-verbose-LDFLAGS.patch
+ "${WORKDIR}"/${P}-patchset/${PN}-0.23.1-llvm-5.patch
)
src_prepare() {
default
- use blocking-stdio-hack && eapply "${FILESDIR}"/"${PN}"-0.22.0-blocking-stdio-hack.patch
+ use blocking-stdio-hack && eapply "${WORKDIR}"/${P}-patchset/${PN}-0.22.0-blocking-stdio-hack.patch
}
src_compile() {
diff --git a/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch b/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch
deleted file mode 100644
index 07b7dba7be65..000000000000
--- a/dev-lang/crystal/files/crystal-0.22.0-blocking-stdio-hack.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Workaround tty corruption in crystal.
-
-Patch restores blocking mode of file desriptors
-in exchange of potential runtime deadlocks
-when dealing with stdio.
-
-Reported-by: Renich Bon Ciric
-Bug: https://github.com/crystal-lang/crystal/issues/2065
-Bug: https://bugs.gentoo.org/616256
-diff --git a/src/compiler/crystal/stdio.cr b/src/compiler/crystal/stdio.cr
-new file mode 100644
-index 000000000..e65f65089
---- /dev/null
-+++ b/src/compiler/crystal/stdio.cr
-@@ -0,0 +1,5 @@
-+module Crystal
-+ STDIN.blocking = true
-+ STDOUT.blocking=true
-+ STDERR.blocking = true
-+end
diff --git a/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch b/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch
deleted file mode 100644
index 35eace15dae0..000000000000
--- a/dev-lang/crystal/files/crystal-0.23.0-verbose-LDFLAGS.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff --git a/Makefile b/Makefile
-index eff69e5..5c0c024 100644
---- a/Makefile
-+++ b/Makefile
-@@ -28,3 +28,3 @@ SOURCES := $(shell find src -name '*.cr')
- SPEC_SOURCES := $(shell find spec -name '*.cr')
--FLAGS := $(if $(release),--release )$(if $(stats),--stats )$(if $(progress),--progress )$(if $(threads),--threads $(threads) )$(if $(debug),-d )
-+FLAGS := $(if $(release),--release )$(if $(stats),--stats )$(if $(progress),--progress )$(if $(threads),--threads $(threads) )$(if $(debug),-d )$(if $(verbose),--verbose )$(if $(LDFLAGS),--link-flags="$(LDFLAGS)" )
- SPEC_FLAGS := $(if $(verbose),-v )$(if $(junit_output),--junit_output $(junit_output) )
diff --git a/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch b/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch
deleted file mode 100644
index bbfd922149eb..000000000000
--- a/dev-lang/crystal/files/crystal-0.23.1-llvm-5.patch
+++ /dev/null
@@ -1,837 +0,0 @@
-https://bugs.gentoo.org/630634
-diff --git a/.gitignore b/.gitignore
-index 9a883edfd..5f852d930 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -12,5 +12,6 @@ all_spec
- /tmp
- /doc/
- /src/llvm/ext/llvm_ext.o
-+/src/llvm/ext/llvm_ext.dwo
- /src/ext/*.o
- /src/ext/libcrystal.a
-diff --git a/Makefile b/Makefile
-index a5dc0d7e3..14a21bb86 100644
---- a/Makefile
-+++ b/Makefile
-@@ -37,8 +37,6 @@ LLVM_CONFIG_FINDER := \
- (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" in 3.9*) command -v llvm-config;; *) false;; esac)) || \
- command -v llvm-config-3.8 || command -v llvm-config38 || \
- (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" in 3.8*) command -v llvm-config;; *) false;; esac)) || \
-- command -v llvm-config-3.6 || command -v llvm-config36 || \
-- command -v llvm-config-3.5 || command -v llvm-config35 || \
- command -v llvm-config
- LLVM_CONFIG := $(shell $(LLVM_CONFIG_FINDER))
- LLVM_EXT_DIR = src/llvm/ext
-diff --git a/src/compiler/crystal/compiler.cr b/src/compiler/crystal/compiler.cr
-index a2bed9a95..afc7976e3 100644
---- a/src/compiler/crystal/compiler.cr
-+++ b/src/compiler/crystal/compiler.cr
-@@ -447,9 +447,6 @@ module Crystal
-
- protected def optimize(llvm_mod)
- fun_pass_manager = llvm_mod.new_function_pass_manager
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- fun_pass_manager.add_target_data target_machine.data_layout
-- {% end %}
- pass_manager_builder.populate fun_pass_manager
- fun_pass_manager.run llvm_mod
- module_pass_manager.run llvm_mod
-@@ -460,9 +457,6 @@ module Crystal
- private def module_pass_manager
- @module_pass_manager ||= begin
- mod_pass_manager = LLVM::ModulePassManager.new
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- mod_pass_manager.add_target_data target_machine.data_layout
-- {% end %}
- pass_manager_builder.populate mod_pass_manager
- mod_pass_manager
- end
-@@ -554,54 +548,29 @@ module Crystal
- can_reuse_previous_compilation =
- !compiler.emit && !@bc_flags_changed && File.exists?(bc_name) && File.exists?(object_name)
-
-- {% if LibLLVM::IS_35 %}
-- # In LLVM 3.5 we can't write a bitcode to memory,
-- # so instead we write it to another file
-- bc_name_new = self.bc_name_new
-- llvm_mod.write_bitcode_to_file(bc_name_new)
--
-- if can_reuse_previous_compilation
-- if FileUtils.cmp(bc_name, bc_name_new)
-- # If the user cancelled a previous compilation it might be that
-- # the .o file is empty
-- if File.size(object_name) > 0
-- File.delete bc_name_new
-- must_compile = false
-- end
-- end
-- end
-+ memory_buffer = llvm_mod.write_bitcode_to_memory_buffer
-
-- if must_compile
-- # Create/overwrite the .bc file (for next compilations)
-- File.rename(bc_name_new, bc_name)
-- compiler.optimize llvm_mod if compiler.release?
-- compiler.target_machine.emit_obj_to_file llvm_mod, object_name
-- end
-- {% else %}
-- memory_buffer = llvm_mod.write_bitcode_to_memory_buffer
--
-- if can_reuse_previous_compilation
-- memory_io = IO::Memory.new(memory_buffer.to_slice)
-- changed = File.open(bc_name) { |bc_file| !FileUtils.cmp(bc_file, memory_io) }
--
-- # If the user cancelled a previous compilation
-- # it might be that the .o file is empty
-- if !changed && File.size(object_name) > 0
-- must_compile = false
-- memory_buffer.dispose
-- memory_buffer = nil
-- else
-- # We need to compile, so we'll write the memory buffer to file
-- end
-- end
-+ if can_reuse_previous_compilation
-+ memory_io = IO::Memory.new(memory_buffer.to_slice)
-+ changed = File.open(bc_name) { |bc_file| !FileUtils.cmp(bc_file, memory_io) }
-
-- # If there's a memory buffer, it means we must create a .o from it
-- if memory_buffer
-- # Create the .bc file (for next compilations)
-- File.write(bc_name, memory_buffer.to_slice)
-+ # If the user cancelled a previous compilation
-+ # it might be that the .o file is empty
-+ if !changed && File.size(object_name) > 0
-+ must_compile = false
- memory_buffer.dispose
-+ memory_buffer = nil
-+ else
-+ # We need to compile, so we'll write the memory buffer to file
- end
-- {% end %}
-+ end
-+
-+ # If there's a memory buffer, it means we must create a .o from it
-+ if memory_buffer
-+ # Create the .bc file (for next compilations)
-+ File.write(bc_name, memory_buffer.to_slice)
-+ memory_buffer.dispose
-+ end
-
- if must_compile
- compiler.optimize llvm_mod if compiler.release?
-diff --git a/src/llvm.cr b/src/llvm.cr
-index 44a03c272..f9b31cf4b 100644
---- a/src/llvm.cr
-+++ b/src/llvm.cr
-@@ -94,11 +94,5 @@ module LLVM
- string
- end
-
-- {% if LibLLVM::IS_35 %}
-- DEBUG_METADATA_VERSION = 1
-- {% elsif LibLLVM::IS_36 %}
-- DEBUG_METADATA_VERSION = 2
-- {% else %}
-- DEBUG_METADATA_VERSION = 3
-- {% end %}
-+ DEBUG_METADATA_VERSION = 3
- end
-diff --git a/src/llvm/context.cr b/src/llvm/context.cr
-index 8485eedf1..7d66a4365 100644
---- a/src/llvm/context.cr
-+++ b/src/llvm/context.cr
-@@ -9,9 +9,9 @@ class LLVM::Context
- end
-
- def new_module(name : String) : Module
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- Module.new(LibLLVM.module_create_with_name_in_context(name, self), name, self)
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- Module.new(LibLLVM.module_create_with_name_in_context(name, self), self)
- {% end %}
- end
-@@ -104,9 +104,9 @@ class LLVM::Context
- if ret != 0 && msg
- raise LLVM.string_and_dispose(msg)
- end
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- Module.new(mod, "unknown", self)
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- Module.new(mod, self)
- {% end %}
- end
-diff --git a/src/llvm/di_builder.cr b/src/llvm/di_builder.cr
-index b8c0fd628..79571d2c0 100644
---- a/src/llvm/di_builder.cr
-+++ b/src/llvm/di_builder.cr
-@@ -31,16 +31,8 @@ struct LLVM::DIBuilder
-
- def create_function(scope, name, linkage_name, file, line, composite_type, is_local_to_unit, is_definition,
- scope_line, flags, is_optimized, func)
-- {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
-- LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, file, line, composite_type,
-- is_local_to_unit ? 1 : 0,
-- is_definition ? 1 : 0,
-- scope_line, flags,
-- is_optimized ? 1 : 0, func)
-- {% else %}
-- LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, file, line, composite_type,
-- is_local_to_unit, is_definition, scope_line, flags, is_optimized, func)
-- {% end %}
-+ LibLLVMExt.di_builder_create_function(self, scope, name, linkage_name, file, line, composite_type,
-+ is_local_to_unit, is_definition, scope_line, flags, is_optimized, func)
- end
-
- def create_auto_variable(scope, name, file, line, type, align_in_bits)
-@@ -87,19 +79,11 @@ struct LLVM::DIBuilder
- end
-
- def create_replaceable_composite_type(scope, name, file, line, context : Context)
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- LibLLVMExt.temporary_md_node(context, nil, 0).as(LibLLVMExt::Metadata)
-- {% else %}
-- LibLLVMExt.di_builder_create_replaceable_composite_type(self, scope, name, file, line)
-- {% end %}
-+ LibLLVMExt.di_builder_create_replaceable_composite_type(self, scope, name, file, line)
- end
-
- def replace_temporary(from, to)
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- LibLLVMExt.metadata_replace_all_uses_with(from, to)
-- {% else %}
-- LibLLVMExt.di_builder_replace_temporary(self, from, to)
-- {% end %}
-+ LibLLVMExt.di_builder_replace_temporary(self, from, to)
- end
-
- def end
-diff --git a/src/llvm/ext/llvm_ext.cc b/src/llvm/ext/llvm_ext.cc
-index d13446160..3dbdd4220 100644
---- a/src/llvm/ext/llvm_ext.cc
-+++ b/src/llvm/ext/llvm_ext.cc
-@@ -18,35 +18,22 @@ using namespace llvm;
- #define LLVM_VERSION_LE(major, minor) \
- (LLVM_VERSION_MAJOR < (major) || LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR <= (minor))
-
-+#if LLVM_VERSION_LE(4, 0)
- typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
- DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DIBuilder, LLVMDIBuilderRef)
-
--#if LLVM_VERSION_EQ(3, 5)
--typedef LLVMValueRef LLVMMetadataRef;
--typedef Value Metadata;
--#define DIBuilderRef LLVMDIBuilderRef
--
--#else /* LLVM != 3.5 */
- typedef struct LLVMOpaqueMetadata *LLVMMetadataRef;
- DEFINE_ISA_CONVERSION_FUNCTIONS(Metadata, LLVMMetadataRef)
- inline Metadata **unwrap(LLVMMetadataRef *Vals) {
- return reinterpret_cast<Metadata **>(Vals);
- }
--#endif /* LLVM == 3.5 */
--
--#if LLVM_VERSION_LE(3, 6)
--template <typename T> T unwrapDIptr(LLVMMetadataRef v) {
-- return v ? T(unwrap<MDNode>(v)) : T();
--}
--#define DIBuilderRef LLVMDIBuilderRef
-+#endif
-
--#else /* LLVM > 3.6 */
- typedef DIBuilder *DIBuilderRef;
- #define DIArray DINodeArray
- template <typename T> T *unwrapDIptr(LLVMMetadataRef v) {
- return (T *)(v ? unwrap<MDNode>(v) : NULL);
- }
--#endif /* LLVM <= 3.6 */
-
- #if LLVM_VERSION_LE(3, 6)
- #define OperandBundleDef void
-@@ -66,13 +53,7 @@ void LLVMDIBuilderFinalize(LLVMDIBuilderRef dref) { unwrap(dref)->finalize(); }
-
- LLVMMetadataRef LLVMDIBuilderCreateFile(DIBuilderRef Dref, const char *File,
- const char *Dir) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIFile F = D->createFile(File, Dir);
-- return wrap(F);
--#else
- return wrap(Dref->createFile(File, Dir));
--#endif
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(DIBuilderRef Dref, unsigned Lang,
-@@ -82,20 +63,13 @@ LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(DIBuilderRef Dref, unsigned Lang,
- int Optimized,
- const char *Flags,
- unsigned RuntimeVersion) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DICompileUnit CU = D->createCompileUnit(Lang, File, Dir, Producer, Optimized,
-- Flags, RuntimeVersion);
-- return wrap(CU);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
- return wrap(Dref->createCompileUnit(Lang, File, Dir, Producer, Optimized,
- Flags, RuntimeVersion));
--# else
-+#else
- DIFile *F = Dref->createFile(File, Dir);
- return wrap(Dref->createCompileUnit(Lang, F, Producer, Optimized,
- Flags, RuntimeVersion));
--# endif
- #endif
- }
-
-@@ -111,19 +85,11 @@ LLVMMetadataRef LLVMDIBuilderCreateFunction(
- #endif
- bool IsOptimized,
- LLVMValueRef Func) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DISubprogram Sub = D->createFunction(
-- unwrapDI<DIDescriptor>(Scope), Name, LinkageName, unwrapDI<DIFile>(File),
-- Line, unwrapDI<DICompositeType>(CompositeType), IsLocalToUnit,
-- IsDefinition, ScopeLine, Flags, IsOptimized, unwrap<Function>(Func));
--#else
- DISubprogram *Sub = Dref->createFunction(
- unwrapDI<DIScope>(Scope), Name, LinkageName, unwrapDI<DIFile>(File), Line,
- unwrapDI<DISubroutineType>(CompositeType), IsLocalToUnit, IsDefinition,
- ScopeLine, Flags, IsOptimized);
- unwrap<Function>(Func)->setSubprogram(Sub);
--#endif
- return wrap(Sub);
- }
-
-@@ -132,18 +98,8 @@ LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(DIBuilderRef Dref,
- LLVMMetadataRef File,
- unsigned Line,
- unsigned Column) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
-- DILexicalBlock LB = D->createLexicalBlock(unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Column, 0);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
-- DILexicalBlock LB = D->createLexicalBlock(unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line, Column);
--# endif
-- return wrap(LB);
--#else /* LLVM > 3.6 */
- return wrap(Dref->createLexicalBlock(unwrapDI<DIDescriptor>(Scope),
- unwrapDI<DIFile>(File), Line, Column));
--#endif /* LLVM <= 3.6 */
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateBasicType(DIBuilderRef Dref,
-@@ -151,71 +107,34 @@ LLVMMetadataRef LLVMDIBuilderCreateBasicType(DIBuilderRef Dref,
- uint64_t SizeInBits,
- uint64_t AlignInBits,
- unsigned Encoding) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIBasicType T = D->createBasicType(Name, SizeInBits, AlignInBits, Encoding);
-- return wrap(T);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
- return wrap(Dref->createBasicType(Name, SizeInBits, AlignInBits, Encoding));
--# else
-+#else
- return wrap(Dref->createBasicType(Name, SizeInBits, Encoding));
--# endif
- #endif
- }
-
- LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(DIBuilderRef Dref,
- LLVMMetadataRef *Data,
- unsigned Length) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
-- Value **DataValue = unwrap(Data);
-- ArrayRef<Value *> Elements(DataValue, Length);
-- DIArray A = D->getOrCreateArray(Elements);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
-- Metadata **DataValue = unwrap(Data);
-- ArrayRef<Metadata *> Elements(DataValue, Length);
-- DITypeArray A = D->getOrCreateTypeArray(Elements);
--# endif
-- return wrap(A);
--#else /* LLVM > 3.6 */
- Metadata **DataValue = unwrap(Data);
- return wrap(
- Dref->getOrCreateTypeArray(ArrayRef<Metadata *>(DataValue, Length))
- .get());
--#endif /* LLVM <= 3.6 */
- }
-
- LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(DIBuilderRef Dref,
- LLVMMetadataRef *Data,
- unsigned Length) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- ArrayRef<Metadata *> elements(unwrap(Data), Length);
-- DIArray a = D->getOrCreateArray(elements);
--
-- return wrap(a);
--#else
- Metadata **DataValue = unwrap(Data);
- return wrap(
- Dref->getOrCreateArray(ArrayRef<Metadata *>(DataValue, Length)).get());
--#endif
- }
-
- LLVMMetadataRef
- LLVMDIBuilderCreateSubroutineType(DIBuilderRef Dref, LLVMMetadataRef File,
- LLVMMetadataRef ParameterTypes) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
--# if LLVM_VERSION_EQ(3, 5)
-- DICompositeType CT = D->createSubroutineType(unwrapDI<DIFile>(File), unwrapDI<DIArray>(ParameterTypes));
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
-- DICompositeType CT = D->createSubroutineType(unwrapDI<DIFile>(File), unwrapDI<DITypeArray>(ParameterTypes));
--# endif
--#else /* LLVM > 3.6 */
- DISubroutineType *CT = Dref->createSubroutineType(DITypeRefArray(unwrap<MDTuple>(ParameterTypes)));
--#endif /* LLVM <= 3.6 */
- return wrap(CT);
- }
-
-@@ -229,21 +148,14 @@ LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
- DINode::DIFlags Flags,
- #endif
- uint32_t AlignInBits) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIVariable V = D->createLocalVariable(
-- llvm::dwarf::DW_TAG_auto_variable, unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-- unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, 0);
--#else
--# if LLVM_VERSION_LE(3, 9)
-+#if LLVM_VERSION_LE(3, 9)
- DILocalVariable *V = Dref->createAutoVariable(
- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
- unwrapDI<DIType>(Ty), AlwaysPreserve, Flags);
--# else
-+#else
- DILocalVariable *V = Dref->createAutoVariable(
- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
- unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, AlignInBits);
--# endif
- #endif
- return wrap(V);
- }
-@@ -258,18 +170,10 @@ LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
- DINode::DIFlags Flags
- #endif
- ) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIVariable V = D->createLocalVariable(
-- llvm::dwarf::DW_TAG_arg_variable, unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-- unwrapDI<DIType>(Ty), AlwaysPreserve, Flags, ArgNo);
-- return wrap(V);
--#else
- DILocalVariable *V = Dref->createParameterVariable
- (unwrapDI<DIDescriptor>(Scope), Name, ArgNo, unwrapDI<DIFile>(File), Line,
- unwrapDI<DIType>(Ty), AlwaysPreserve, Flags);
- return wrap(V);
--#endif
- }
-
- LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref,
-@@ -278,46 +182,17 @@ LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref,
- LLVMMetadataRef Expr,
- LLVMValueRef DL,
- LLVMBasicBlockRef Block) {
--#if LLVM_VERSION_EQ(3, 5)
-- DIBuilder *D = unwrap(Dref);
-- Instruction *Instr =
-- D->insertDeclare(unwrap(Storage), unwrapDI<DIVariable>(VarInfo),
-- unwrap(Block));
-- Instr->setDebugLoc(DebugLoc::getFromDILocation(cast<MDNode>(DL)));
--#endif
--
--#if LLVM_VERSION_EQ(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- Instruction *Instr =
-- D->insertDeclare(unwrap(Storage), unwrapDI<DIVariable>(VarInfo),
-- unwrapDI<DIExpression>(Expr), unwrap(Block));
-- Instr->setDebugLoc(DebugLoc::getFromDILocation(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())));
--#endif
--
--#if LLVM_VERSION_GE(3, 7)
- Instruction *Instr =
- Dref->insertDeclare(unwrap(Storage), unwrap<DILocalVariable>(VarInfo),
- unwrapDI<DIExpression>(Expr),
- DebugLoc(cast<MDNode>(unwrap<MetadataAsValue>(DL)->getMetadata())),
- unwrap(Block));
--#endif
--
- return wrap(Instr);
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateExpression(DIBuilderRef Dref, int64_t *Addr,
- size_t Length) {
--#if LLVM_VERSION_LE(3, 6)
--# if LLVM_VERSION_EQ(3, 5)
-- return nullptr;
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
-- DIBuilder *D = unwrap(Dref);
-- DIExpression Expr = D->createExpression(ArrayRef<int64_t>(Addr, Length));
-- return wrap(Expr);
--# endif
--#else /* LLVM > 3.6 */
- return wrap(Dref->createExpression(ArrayRef<int64_t>(Addr, Length)));
--#endif
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
-@@ -325,30 +200,16 @@ LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
- LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
- uint64_t AlignInBits, LLVMMetadataRef Elements,
- LLVMMetadataRef UnderlyingType) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DICompositeType enumType = D->createEnumerationType(
-- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
-- SizeInBits, AlignInBits, unwrapDI<DIArray>(Elements),
-- unwrapDI<DIType>(UnderlyingType));
--#else
- DICompositeType *enumType = Dref->createEnumerationType(
- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), LineNumber,
- SizeInBits, AlignInBits, DINodeArray(unwrapDI<MDTuple>(Elements)),
- unwrapDI<DIType>(UnderlyingType));
--#endif
- return wrap(enumType);
- }
-
- LLVMMetadataRef LLVMDIBuilderCreateEnumerator(DIBuilderRef Dref,
- const char *Name, int64_t Value) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIEnumerator e = D->createEnumerator(Name, Value);
-- return wrap(e);
--#else
- DIEnumerator *e = Dref->createEnumerator(Name, Value);
--#endif
- return wrap(e);
- }
-
-@@ -367,22 +228,13 @@ LLVMDIBuilderCreateStructType(DIBuilderRef Dref,
- #endif
- LLVMMetadataRef DerivedFrom,
- LLVMMetadataRef Elements) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DICompositeType CT = D->createStructType(
-- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-- SizeInBits, AlignInBits, Flags, unwrapDI<DIType>(DerivedFrom),
-- unwrapDI<DIArray>(Elements));
--#else
- DICompositeType *CT = Dref->createStructType(
- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
- SizeInBits, AlignInBits, Flags, unwrapDI<DIType>(DerivedFrom),
- DINodeArray(unwrapDI<MDTuple>(Elements)));
--#endif
- return wrap(CT);
- }
-
--#if LLVM_VERSION_GE(3, 8)
- LLVMMetadataRef
- LLVMDIBuilderCreateReplaceableCompositeType(DIBuilderRef Dref,
- LLVMMetadataRef Scope,
-@@ -409,7 +261,6 @@ LLVMDIBuilderReplaceTemporary(DIBuilderRef Dref,
- llvm::TempMDNode fwd_decl(Node);
- Dref->replaceTemporary(std::move(fwd_decl), Type);
- }
--#endif
-
- LLVMMetadataRef
- LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, LLVMMetadataRef Scope,
-@@ -422,16 +273,9 @@ LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, LLVMMetadataRef Scope,
- DINode::DIFlags Flags,
- #endif
- LLVMMetadataRef Ty) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIDerivedType DT = D->createMemberType(
-- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
-- SizeInBits, AlignInBits, OffsetInBits, Flags, unwrapDI<DIType>(Ty));
--#else
- DIDerivedType *DT = Dref->createMemberType(
- unwrapDI<DIDescriptor>(Scope), Name, unwrapDI<DIFile>(File), Line,
- SizeInBits, AlignInBits, OffsetInBits, Flags, unwrapDI<DIType>(Ty));
--#endif
- return wrap(DT);
- }
-
-@@ -440,39 +284,24 @@ LLVMMetadataRef LLVMDIBuilderCreatePointerType(DIBuilderRef Dref,
- uint64_t SizeInBits,
- uint64_t AlignInBits,
- const char *Name) {
--#if LLVM_VERSION_LE(3, 6)
-- DIBuilder *D = unwrap(Dref);
-- DIDerivedType T = D->createPointerType(unwrapDI<DIType>(PointeeType),
-- SizeInBits, AlignInBits, Name);
--#else
- DIDerivedType *T = Dref->createPointerType(unwrapDI<DIType>(PointeeType),
-- SizeInBits, AlignInBits, Name);
-+ SizeInBits, AlignInBits,
-+#if LLVM_VERSION_GE(5, 0)
-+ None,
- #endif
-+ Name);
- return wrap(T);
- }
-
- LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef C, LLVMMetadataRef *MDs,
- unsigned Count) {
--#if LLVM_VERSION_LE(3, 6)
-- return wrap(MDNode::getTemporary(*unwrap(C),
-- ArrayRef<Metadata *>(unwrap(MDs), Count)));
--#else
- return wrap(MDTuple::getTemporary(*unwrap(C),
- ArrayRef<Metadata *>(unwrap(MDs), Count))
- .release());
--#endif
- }
-
- void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New) {
--#if LLVM_VERSION_LE(3, 6)
--# if LLVM_VERSION_EQ(3, 5)
- auto *Node = unwrap<MDNode>(MD);
--# else /* LLVM <= 3.6 && LLVM != 3.5 */
-- auto *Node = unwrap<MDNodeFwdDecl>(MD);
--# endif
--#else /* LLVM > 3.6 */
-- auto *Node = unwrap<MDNode>(MD);
--#endif
- Node->replaceAllUsesWith(unwrap<MDNode>(New));
- MDNode::deleteTemporary(Node);
- }
-diff --git a/src/llvm/function_pass_manager.cr b/src/llvm/function_pass_manager.cr
-index 979cb9c97..834d72a20 100644
---- a/src/llvm/function_pass_manager.cr
-+++ b/src/llvm/function_pass_manager.cr
-@@ -2,12 +2,6 @@ class LLVM::FunctionPassManager
- def initialize(@unwrap : LibLLVM::PassManagerRef)
- end
-
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- def add_target_data(target_data)
-- LibLLVM.add_target_data target_data, self
-- end
-- {% end %}
--
- def run(mod : Module)
- changed = false
- run do |runner|
-diff --git a/src/llvm/lib_llvm.cr b/src/llvm/lib_llvm.cr
-index e2c7a9445..5a0b67cdd 100644
---- a/src/llvm/lib_llvm.cr
-+++ b/src/llvm/lib_llvm.cr
-@@ -6,8 +6,6 @@ lib LibLLVM
- (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" in 3.9*) command -v llvm-config;; *) false;; esac)) || \
- command -v llvm-config-3.8 || command -v llvm-config38 || \
- (command -v llvm-config > /dev/null && (case "$(llvm-config --version)" in 3.8*) command -v llvm-config;; *) false;; esac)) || \
-- command -v llvm-config-3.6 || command -v llvm-config36 || \
-- command -v llvm-config-3.5 || command -v llvm-config35 || \
- command -v llvm-config
- `.chomp.stringify
- }}
-@@ -32,8 +30,6 @@ end
- IS_40 = {{LibLLVM::VERSION.starts_with?("4.0")}}
- IS_39 = {{LibLLVM::VERSION.starts_with?("3.9")}}
- IS_38 = {{LibLLVM::VERSION.starts_with?("3.8")}}
-- IS_36 = {{LibLLVM::VERSION.starts_with?("3.6")}}
-- IS_35 = {{LibLLVM::VERSION.starts_with?("3.5")}}
- end
- {% end %}
-
-@@ -283,9 +279,7 @@ lib LibLLVM
- fun set_alignment = LLVMSetAlignment(value : ValueRef, bytes : UInt32)
- fun get_return_type = LLVMGetReturnType(TypeRef) : TypeRef
-
-- {% unless LibLLVM::IS_35 %}
-- fun write_bitcode_to_memory_buffer = LLVMWriteBitcodeToMemoryBuffer(mod : ModuleRef) : MemoryBufferRef
-- {% end %}
-+ fun write_bitcode_to_memory_buffer = LLVMWriteBitcodeToMemoryBuffer(mod : ModuleRef) : MemoryBufferRef
-
- fun dispose_memory_buffer = LLVMDisposeMemoryBuffer(buf : MemoryBufferRef) : Void
- fun get_buffer_start = LLVMGetBufferStart(buf : MemoryBufferRef) : UInt8*
-@@ -293,26 +287,22 @@ lib LibLLVM
-
- fun write_bitcode_to_fd = LLVMWriteBitcodeToFD(mod : ModuleRef, fd : LibC::Int, should_close : LibC::Int, unbuffered : LibC::Int) : LibC::Int
-
-- {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
-- fun add_target_data = LLVMAddTargetData(td : TargetDataRef, pm : PassManagerRef)
-- {% end %}
--
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- fun copy_string_rep_of_target_data = LLVMCopyStringRepOfTargetData(data : TargetDataRef) : UInt8*
- fun get_target_machine_data = LLVMGetTargetMachineData(t : TargetMachineRef) : TargetDataRef
- fun set_data_layout = LLVMSetDataLayout(mod : ModuleRef, data : UInt8*)
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- fun create_target_data_layout = LLVMCreateTargetDataLayout(t : TargetMachineRef) : TargetDataRef
- fun set_module_data_layout = LLVMSetModuleDataLayout(mod : ModuleRef, data : TargetDataRef)
- {% end %}
-
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- fun add_attribute = LLVMAddAttribute(arg : ValueRef, attr : LLVM::Attribute)
- fun add_instr_attribute = LLVMAddInstrAttribute(instr : ValueRef, index : UInt32, attr : LLVM::Attribute)
- fun add_function_attr = LLVMAddFunctionAttr(fn : ValueRef, pa : LLVM::Attribute)
- fun get_function_attr = LLVMGetFunctionAttr(fn : ValueRef) : LLVM::Attribute
- fun get_attribute = LLVMGetAttribute(arg : ValueRef) : LLVM::Attribute
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- type AttributeRef = Void*
- alias AttributeIndex = UInt
-
-diff --git a/src/llvm/lib_llvm_ext.cr b/src/llvm/lib_llvm_ext.cr
-index 84c65cccb..953567eb8 100644
---- a/src/llvm/lib_llvm_ext.cr
-+++ b/src/llvm/lib_llvm_ext.cr
-@@ -13,19 +13,11 @@ lib LibLLVMExt
- fun create_di_builder = LLVMNewDIBuilder(LibLLVM::ModuleRef) : DIBuilder
- fun di_builder_finalize = LLVMDIBuilderFinalize(DIBuilder)
-
-- {% if LibLLVM::IS_36 || LibLLVM::IS_35 %}
-- fun di_builder_create_function = LLVMDIBuilderCreateFunction(
-- builder : DIBuilder, scope : Metadata, name : Char*,
-- linkage_name : Char*, file : Metadata, line : UInt,
-- composite_type : Metadata, is_local_to_unit : Int, is_definition : Int,
-- scope_line : UInt, flags : LLVM::DIFlags, is_optimized : Int, func : LibLLVM::ValueRef) : Metadata
-- {% else %}
-- fun di_builder_create_function = LLVMDIBuilderCreateFunction(
-- builder : DIBuilder, scope : Metadata, name : Char*,
-- linkage_name : Char*, file : Metadata, line : UInt,
-- composite_type : Metadata, is_local_to_unit : Bool, is_definition : Bool,
-- scope_line : UInt, flags : LLVM::DIFlags, is_optimized : Bool, func : LibLLVM::ValueRef) : Metadata
-- {% end %}
-+ fun di_builder_create_function = LLVMDIBuilderCreateFunction(
-+ builder : DIBuilder, scope : Metadata, name : Char*,
-+ linkage_name : Char*, file : Metadata, line : UInt,
-+ composite_type : Metadata, is_local_to_unit : Bool, is_definition : Bool,
-+ scope_line : UInt, flags : LLVM::DIFlags, is_optimized : Bool, func : LibLLVM::ValueRef) : Metadata
-
- fun di_builder_create_file = LLVMDIBuilderCreateFile(builder : DIBuilder, file : Char*, dir : Char*) : Metadata
- fun di_builder_create_compile_unit = LLVMDIBuilderCreateCompileUnit(builder : DIBuilder,
-@@ -94,17 +86,12 @@ lib LibLLVMExt
- align_in_bits : UInt64,
- name : Char*) : Metadata
-
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- fun temporary_md_node = LLVMTemporaryMDNode(context : LibLLVM::ContextRef, mds : Metadata*, count : UInt) : Metadata
-- fun metadata_replace_all_uses_with = LLVMMetadataReplaceAllUsesWith(Metadata, Metadata)
-- {% else %}
-- fun di_builder_create_replaceable_composite_type = LLVMDIBuilderCreateReplaceableCompositeType(builder : DIBuilder,
-- scope : Metadata,
-- name : Char*,
-- file : Metadata,
-- line : UInt) : Metadata
-- fun di_builder_replace_temporary = LLVMDIBuilderReplaceTemporary(builder : DIBuilder, from : Metadata, to : Metadata)
-- {% end %}
-+ fun di_builder_create_replaceable_composite_type = LLVMDIBuilderCreateReplaceableCompositeType(builder : DIBuilder,
-+ scope : Metadata,
-+ name : Char*,
-+ file : Metadata,
-+ line : UInt) : Metadata
-+ fun di_builder_replace_temporary = LLVMDIBuilderReplaceTemporary(builder : DIBuilder, from : Metadata, to : Metadata)
-
- fun set_current_debug_location = LLVMSetCurrentDebugLocation2(LibLLVM::BuilderRef, Int, Int, Metadata, Metadata)
-
-diff --git a/src/llvm/module.cr b/src/llvm/module.cr
-index cb71e3b21..c15a56e77 100644
---- a/src/llvm/module.cr
-+++ b/src/llvm/module.cr
-@@ -6,7 +6,7 @@ class LLVM::Module
-
- getter context : Context
-
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- def initialize(@unwrap : LibLLVM::ModuleRef, @name : String, @context : Context)
- @owned = false
- end
-@@ -14,7 +14,7 @@ class LLVM::Module
- def name : String
- @name
- end
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- def initialize(@unwrap : LibLLVM::ModuleRef, @context : Context)
- @owned = false
- end
-@@ -34,9 +34,9 @@ class LLVM::Module
- end
-
- def data_layout=(data : TargetData)
-- {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ {% if LibLLVM::IS_38 %}
- LibLLVM.set_data_layout(self, data.to_data_layout_string)
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- LibLLVM.set_module_data_layout(self, data)
- {% end %}
- end
-@@ -57,11 +57,9 @@ class LLVM::Module
- LibLLVM.write_bitcode_to_file self, filename
- end
-
-- {% unless LibLLVM::IS_35 %}
-- def write_bitcode_to_memory_buffer
-- MemoryBuffer.new(LibLLVM.write_bitcode_to_memory_buffer self)
-- end
-- {% end %}
-+ def write_bitcode_to_memory_buffer
-+ MemoryBuffer.new(LibLLVM.write_bitcode_to_memory_buffer self)
-+ end
-
- def write_bitcode_to_fd(fd : Int, should_close = false, buffered = false)
- LibLLVM.write_bitcode_to_fd(self, fd, should_close ? 1 : 0, buffered ? 1 : 0)
-diff --git a/src/llvm/module_pass_manager.cr b/src/llvm/module_pass_manager.cr
-index 10bfa60bd..519227809 100644
---- a/src/llvm/module_pass_manager.cr
-+++ b/src/llvm/module_pass_manager.cr
-@@ -3,12 +3,6 @@ class LLVM::ModulePassManager
- @unwrap = LibLLVM.pass_manager_create
- end
-
-- {% if LibLLVM::IS_35 || LibLLVM::IS_36 %}
-- def add_target_data(target_data)
-- LibLLVM.add_target_data target_data, self
-- end
-- {% end %}
--
- def run(mod)
- LibLLVM.run_pass_manager(self, mod) != 0
- end
-diff --git a/src/llvm/target_machine.cr b/src/llvm/target_machine.cr
-index e4bb081e9..42e44abe2 100644
---- a/src/llvm/target_machine.cr
-+++ b/src/llvm/target_machine.cr
-@@ -9,9 +9,9 @@ class LLVM::TargetMachine
-
- def data_layout
- @layout ||= begin
-- layout = {% if LibLLVM::IS_38 || LibLLVM::IS_36 || LibLLVM::IS_35 %}
-+ layout = {% if LibLLVM::IS_38 %}
- LibLLVM.get_target_machine_data(self)
-- {% else %}
-+ {% else %} # LLVM >= 3.9
- LibLLVM.create_target_data_layout(self)
- {% end %}
- layout ? TargetData.new(layout) : raise "Missing layout for #{self}"
---
-2.14.1
-
diff --git a/dev-lang/erlang/Manifest b/dev-lang/erlang/Manifest
index 134baeb5dcae..5d1c3fc0b735 100644
--- a/dev-lang/erlang/Manifest
+++ b/dev-lang/erlang/Manifest
@@ -7,19 +7,23 @@ DIST otp_doc_html_19.1.tar.gz 34624316 BLAKE2B e3a5edfe1645d58e4cbd6537c77519071
DIST otp_doc_html_19.3.tar.gz 35818689 BLAKE2B 30118276fbd817b803ef20700fe2e71a8457645d00f8949b6d3175d92cb5c84d306e4de9899e2f5e0c562d8040dc22db35e1a0f2e314cf1a783794573b3ece59 SHA512 a70d2c470fa1dc0594b20af73ba36ccb7702b4192960e6fc0296738175215a43450f9bf558637f7f5e40757f7a15dcf4f1ae8a88515e211cd3c0fae45c5e1858
DIST otp_doc_html_20.0.tar.gz 33948386 BLAKE2B 1b71457631692edeb9ed6c8d5011667caf2d949822592f35c47944cb3b913d079dd93e6573f96fda8cfd7750257cb1f964a24da436fdd05ac7c40b63486d2aee SHA512 a183943a3a2636489cfdf3e7ede8dc4233db84a271b4b8bd655b57b4abac597b797f035d77087be72e823638898d202e08c53decb565fc10f2e444dcc6da8628
DIST otp_doc_html_20.1.tar.gz 33059931 BLAKE2B 9fd7c5ba3048e506e469ca7c8dfc39fb9c77135ca9bcb7eb4ab8edb72d3d0e0b19970c967d934c99819e65d969d5fe4c2d04406e04c9d0c1a37a3623a6eda083 SHA512 c2eb6cb63f71727ada79ea14a1b8f0b7291bc1d3cdb43bf8978b7b8948d466b9492571d3a45adc96de0eebf46eee213d27c0502ee4d9963ec7c5c0d976f257d9
+DIST otp_doc_html_20.2.tar.gz 33570484 BLAKE2B c47244a601ae780e5304aedbafbc84d514cb21852760c51384b197d8d37602d51448b7123f6205da9afd2c5d2158f518a122dd4d550ca2ff22d3425eb31b6cf7 SHA512 b481930066737cf0ae2496aa9bc0c865da46bd3985fe5ebcf51eb9383539a57ec364e1eed9d3916ba0953d837d0d5d37cfc129a995d4e2a9656846e75cda9397
DIST otp_doc_man_18.3.tar.gz 1395166 BLAKE2B 47b7149472be5e6e4e3ed5c059abad43e70d65b4ce1dd6c5788eff9e1223c6468cf7691a5304cbba37ff8bed5ac4424b3f043c7a9f6a3485fc6305fbe3dc1fdf SHA512 d45d72d7ee7492e081dd5fac1a4d1cea93fe5f5287900be13c92e1c1802f7ec77573eeb4d271497154b9e0723c393700f35982ceedbe29be6cb759a0ebe83325
DIST otp_doc_man_19.1.tar.gz 1405580 BLAKE2B 93b79b88f81a00d7cbb934dbac811c6ea0ec59413e073fe613038eab71087908ed4e4bcbb6c8ed2f0c5bdd03ab4a570f20c4460f233c040ae0c4238e1cfa097a SHA512 4ee35feeff70419ff5500e00dc17e34fdea8be21342d41cf1e255b84a1826b51057046be543ee1052153ae8c8cd215f4720cecae7d9fe1576cbd681dcf4b2334
DIST otp_doc_man_19.3.tar.gz 1410781 BLAKE2B 78293aa498c2651be27d83f13e14007f25a1816b4dae499f463249f774256eddde3a4e31c435a30edd04fb6f41cee965c968b338de77330c3320f3df6087be92 SHA512 675a0d2d5972660a60de17c832e630f646f942d23815427eb0dec3a5ca1c44ed8fe35a9c30f8b608dedfd10f6fb1e47e958ea6e32e296b6f6809b1844b4da9a1
DIST otp_doc_man_20.0.tar.gz 1430939 BLAKE2B c8fb2fa8a790a9e975cc9fdd6c8a9ce5b85eff30edc465b76ddb38cac4997f759e5e7234dafe42cc60fc265f3e3d31e245a10e96ac368348880dac73742e361d SHA512 8f3c9b39c5574c239fe4f8d220884667d9d8b8231e923da8caebedc2cfd4db61a3b71a45788c3d63ae4cecc11884df9143e164c544356145977010f31c388e99
DIST otp_doc_man_20.1.tar.gz 1334036 BLAKE2B 544da078ff1501f280759e0f9fadc5bd351c3d9e1a48039c1a2a12b4c4ad4dccada0d6575a1f168631441967e1d74b4f738bc49602b9ba7317656b09c763c572 SHA512 d64cb7e78f1cbc86eccfa338ebe211b4e67ada842d780cf73dac7aadab8209a845de305644b758ed23d939688146012cd5172e005fee207307d6e24c7b7d2345
+DIST otp_doc_man_20.2.tar.gz 1337652 BLAKE2B 416e83c696e30981eabad1f5a7c89abfd0b9d48ff04c9bd86b13dc96302acc9f2b9a73906a2976888ce35c6bfb38b3c006a1e0a041dd1bd5e75908e53bb920c3 SHA512 a67bb975b613c74c4e2418406b6472764ac69dfb9f8a6f64c79c680b1f87edea719431c140b006f776b0088885d958a6f2718267cebaf73ed506eaff721400f4
DIST otp_src_18.3.tar.gz 68292101 BLAKE2B f8f1326ec81695a353bc8f5d2f967e59140a65ac2e1f942c1baf8a1d955c6b8fb7795b9108156ef38e182cbfd1e05b35ff1cbbdbb36f14f90032ad44118c6ef8 SHA512 f4a69bb14743d9f913d7060cfb6426f7c54693d07ed439506ede5160a0ba5a79a81cf08a56aaa02c68b3377cd22fed66a0fbeb216378330d7ad5c6348ed82014
DIST otp_src_19.1.tar.gz 68103074 BLAKE2B 48e06ce5998929a8ca9804e51f07a4153e7fb1c8b1b4b1b60132e255c29c475534ce018a7902ed29b696b783a21daa73d1778435aada1a77064ab46e915af87d SHA512 bd1c243393c867c91768367613aedb40d56889add149390c81f22e022e76b716d6e9a4d5db7e6477ceb1216c26c18c962abdfd8215a87420758f5ef2063b9714
DIST otp_src_19.3.tar.gz 68510871 BLAKE2B fc37c493f5fa3533aaa29f545ff751f5851b58d8952f6f21ef50fec433d661a1e3300139b30a41d9c1f16b3eeaf5d98450bf0a2408e7910712d9d98f3af19237 SHA512 6920eab6e1681a76ab44bdd0eeb9b012e601191f91ca06edf1f63ba2e261c555d6f8dddf7025b2e9c3c6459bd63ff78659010ec33967fb1952840fb451ec2de6
DIST otp_src_20.0.tar.gz 87346046 BLAKE2B bface127f95c1c1e6b16451541f4414beaf7cd618938b4f60e3594550cc7313775aab1508186ae1dcc8f07a4c59a5f35a6ba8d6ead794d3c33a52dd42f999e69 SHA512 f73ea74fd149392c72925ea163eafe62ed4470405c61d1c7e557c4f3c94546b4385b073d5d53017f1f5422bdf203ea346fa3d672f49bca4cceec26c51de68951
DIST otp_src_20.1.tar.gz 87342296 BLAKE2B 21f93369bc4fe082e3cdc6849463cb638ac8c53b6dc038da6c5e973d1250bd6ccf61474af3d8e35044d849db3b834588c0423aa6aaac0c3a7f0c1442f15576cc SHA512 76b5fcfcdd501636ae8b8392e563d03ca351fce055fca3c92354fa7fe78e150701fcfbc607e09afcc13ca04d5cbba33b15ef03b77e1f4af766dd0e6b152df7a2
+DIST otp_src_20.2.tar.gz 87136848 BLAKE2B f83e652320b67b72cf42be3c23a9251806096fea4e255f73c8170bcb61ea1e008983f1da1c9dc7b46b76e1fd0d96f94097f5d629eb28c08eb424bb1e7a1cee28 SHA512 6c2cbef9fa67f4aa9d0c22bedf87f39b0067994614663afee88c57bb7789eec45cb1970dcbd930d163a27293b8d24b20a90cf6ed30ff1a14492a9ccdd5b59a65
EBUILD erlang-18.3.ebuild 4587 BLAKE2B 58e0ac86aa7bba8cddb0a12423e902de3c3756cfa1bb13348315ec2d022e55b6635f700dde91adfc35324a6ecfba4b680119dd6e4bd475b9089a6d4461be9672 SHA512 e66b473b6bb3b9274f6610ad30fd47b03337a805ec00afbdc5f0620fb74bc39e0a1650ea719d67ea07ffd6532beb94f6bff980570546e0f625158220876400dc
EBUILD erlang-19.1.ebuild 4482 BLAKE2B 36a4249649473f50cce66f542c98dbefee41a56d57bd6327f911e6137d5d9bd5fc0656e3f5770f804ae425d428739530be8395a078cc6d930e6c4df2e44edc90 SHA512 26067ee69b78c63a40800b87fcd41f74f1b5a04fdc9e1103b2953f1c721195ec6dfb992474d442193c0673c548ed76a3e88938cc3f93bdbee9e26403164e5e60
EBUILD erlang-19.3.ebuild 4538 BLAKE2B cd6f780cd2674c710e12d9ecc2c82881fe729ba54369401af69306a79eeebba4f7c06a6d78af3d44925f118a3f46a89bcecdfaa3dee92ec990791dcf565c5062 SHA512 fd62d9ec729574fa29267bb846ccaa46d1f4e08852b1111eefba5fc89d2d77c9fe7be00f75f7a1d2f74bbc353b436ab313211aaa7c6ce3e9099eaa4ee275f4aa
EBUILD erlang-20.0.ebuild 4538 BLAKE2B cd6f780cd2674c710e12d9ecc2c82881fe729ba54369401af69306a79eeebba4f7c06a6d78af3d44925f118a3f46a89bcecdfaa3dee92ec990791dcf565c5062 SHA512 fd62d9ec729574fa29267bb846ccaa46d1f4e08852b1111eefba5fc89d2d77c9fe7be00f75f7a1d2f74bbc353b436ab313211aaa7c6ce3e9099eaa4ee275f4aa
EBUILD erlang-20.1.ebuild 4538 BLAKE2B cd6f780cd2674c710e12d9ecc2c82881fe729ba54369401af69306a79eeebba4f7c06a6d78af3d44925f118a3f46a89bcecdfaa3dee92ec990791dcf565c5062 SHA512 fd62d9ec729574fa29267bb846ccaa46d1f4e08852b1111eefba5fc89d2d77c9fe7be00f75f7a1d2f74bbc353b436ab313211aaa7c6ce3e9099eaa4ee275f4aa
+EBUILD erlang-20.2.ebuild 4538 BLAKE2B cd6f780cd2674c710e12d9ecc2c82881fe729ba54369401af69306a79eeebba4f7c06a6d78af3d44925f118a3f46a89bcecdfaa3dee92ec990791dcf565c5062 SHA512 fd62d9ec729574fa29267bb846ccaa46d1f4e08852b1111eefba5fc89d2d77c9fe7be00f75f7a1d2f74bbc353b436ab313211aaa7c6ce3e9099eaa4ee275f4aa
MISC metadata.xml 758 BLAKE2B 7e4e56065658b2d734f95fe9283fd448630e7f5638ddc0a81fc496b08660e03b159268c7a1fe775b008c3adfa2f8ee1b1fdabcc2b002c8b5cf99b56539360596 SHA512 b430d16cc736f7a1e8ab9b08c3e79885fe860bce973908a22c5835291582431507746bb5ec3ffc7fe219380e04c5b9b2ac2602997b413548b66785c90c0b71fd
diff --git a/dev-lang/erlang/erlang-20.2.ebuild b/dev-lang/erlang/erlang-20.2.ebuild
new file mode 100644
index 000000000000..68a6119c6dcd
--- /dev/null
+++ b/dev-lang/erlang/erlang-20.2.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+WX_GTK_VER="3.0"
+
+inherit autotools elisp-common eutils java-pkg-opt-2 multilib systemd versionator wxwidgets
+
+# NOTE: If you need symlinks for binaries please tell maintainers or
+# open up a bug to let it be created.
+
+DESCRIPTION="Erlang programming language, runtime environment and libraries (OTP)"
+HOMEPAGE="http://www.erlang.org/"
+SRC_URI="http://www.erlang.org/download/otp_src_${PV}.tar.gz
+ http://erlang.org/download/otp_doc_man_${PV}.tar.gz
+ doc? ( http://erlang.org/download/otp_doc_html_${PV}.tar.gz )"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris"
+
+IUSE="compat-ethread dirty-schedulers doc emacs hipe java kpoll libressl odbc smp sctp ssl systemd tk wxwidgets"
+REQUIRED_USE="dirty-schedulers? ( smp )" #621610
+
+RDEPEND="
+ ssl? (
+ !libressl? ( >=dev-libs/openssl-0.9.7d:0 )
+ libressl? ( dev-libs/libressl )
+ )
+ emacs? ( virtual/emacs )
+ java? ( >=virtual/jdk-1.2:* )
+ odbc? ( dev-db/unixODBC )
+ systemd? ( sys-apps/systemd )"
+DEPEND="${RDEPEND}
+ wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER}[X,opengl] virtual/glu )
+ sctp? ( net-misc/lksctp-tools )
+ tk? ( dev-lang/tk )"
+
+S="${WORKDIR}/otp_src_${PV}"
+
+SITEFILE=50${PN}-gentoo.el
+
+src_prepare() {
+ epatch "${FILESDIR}"/18.2.1-wx3.0.patch
+
+ use odbc || sed -i 's: odbc : :' lib/Makefile
+
+ # bug 263129, don't ignore LDFLAGS, reported upstream
+ sed -e 's:LDFLAGS = \$(DED_LDFLAGS):LDFLAGS += \$(DED_LDFLAGS):' -i "${S}"/lib/megaco/src/flex/Makefile.in
+
+ # don't ignore LDFLAGS, reported upstream
+ sed -e 's:LDFLAGS = \$(ODBC_LIB) \$(EI_LDFLAGS):LDFLAGS += \$(ODBC_LIB) \$(EI_LDFLAGS):' -i "${S}"/lib/odbc/c_src/Makefile.in
+
+ if ! use wxwidgets; then
+ sed -i 's: wx : :' lib/Makefile
+ rm -rf lib/wx
+ fi
+
+ # Nasty workaround, reported upstream
+ cp "${S}"/lib/configure.in.src "${S}"/lib/configure.in
+
+ # bug 383697
+ sed -i '1i#define OF(x) x' erts/emulator/drivers/common/gzio.c
+
+ cd erts && mv configure.in configure.ac && eautoreconf
+}
+
+src_configure() {
+ use wxwidgets && need-wxwidgets unicode
+ use java || export JAVAC=false
+
+ econf \
+ --enable-threads \
+ $(use_enable sctp) \
+ $(use_enable systemd) \
+ $(use_enable hipe) \
+ $(use_with ssl ssl "${EPREFIX}"/usr) \
+ $(use_enable ssl dynamic-ssl-lib) \
+ $(use_enable kpoll kernel-poll) \
+ $(use_enable smp smp-support) \
+ $(use compat-ethread && echo "--enable-ethread-pre-pentium4-compatibility") \
+ $(use x64-macos && echo "--enable-darwin-64bit") \
+ $(use_enable dirty-schedulers)
+}
+
+src_compile() {
+ use java || export JAVAC=false
+ emake
+
+ if use emacs ; then
+ pushd lib/tools/emacs
+ elisp-compile *.el
+ popd
+ fi
+}
+
+extract_version() {
+ sed -n -e "/^$2 = \(.*\)$/s::\1:p" "${S}/$1/vsn.mk"
+}
+
+src_install() {
+ local ERL_LIBDIR=/usr/$(get_libdir)/erlang
+ local ERL_INTERFACE_VER=$(extract_version lib/erl_interface EI_VSN)
+ local ERL_ERTS_VER=$(extract_version erts VSN)
+
+ emake INSTALL_PREFIX="${D}" install
+ dodoc AUTHORS README.md
+
+ dosym "${ERL_LIBDIR}/bin/erl" /usr/bin/erl
+ dosym "${ERL_LIBDIR}/bin/erlc" /usr/bin/erlc
+ dosym "${ERL_LIBDIR}/bin/escript" /usr/bin/escript
+ dosym \
+ "${ERL_LIBDIR}/lib/erl_interface-${ERL_INTERFACE_VER}/bin/erl_call" \
+ /usr/bin/erl_call
+ dosym "${ERL_LIBDIR}/erts-${ERL_ERTS_VER}/bin/beam" /usr/bin/beam
+ use smp && dosym "${ERL_LIBDIR}/erts-${ERL_ERTS_VER}/bin/beam.smp" /usr/bin/beam.smp
+
+ ## Clean up the no longer needed files
+ rm "${ED}/${ERL_LIBDIR}/Install"
+
+ for i in "${WORKDIR}"/man/man* ; do
+ dodir "${ERL_LIBDIR}/${i##${WORKDIR}}"
+ done
+ for file in "${WORKDIR}"/man/man*/*.[1-9]; do
+ # doman sucks so we can't use it
+ cp ${file} "${ED}/${ERL_LIBDIR}"/man/man${file##*.}/
+ done
+ # extend MANPATH, so the normal man command can find it
+ # see bug 189639
+ dodir /etc/env.d/
+ echo "MANPATH=\"${EPREFIX}${ERL_LIBDIR}/man\"" > "${ED}/etc/env.d/90erlang"
+
+ if use doc ; then
+ dohtml -A README,erl,hrl,c,h,kwc,info -r \
+ "${WORKDIR}"/doc "${WORKDIR}"/lib "${WORKDIR}"/erts-*
+ fi
+
+ if use emacs ; then
+ pushd "${S}"
+ elisp-install erlang lib/tools/emacs/*.{el,elc}
+ sed -e "s:/usr/share:${EPREFIX}/usr/share:g" \
+ "${FILESDIR}"/${SITEFILE} > "${T}"/${SITEFILE}
+ elisp-site-file-install "${T}"/${SITEFILE}
+ popd
+ fi
+
+ newinitd "${FILESDIR}"/epmd.init epmd
+ systemd_dounit "${FILESDIR}"/epmd.service
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/dev-lang/mmix/Manifest b/dev-lang/mmix/Manifest
index a2f098199459..eed9789c779a 100644
--- a/dev-lang/mmix/Manifest
+++ b/dev-lang/mmix/Manifest
@@ -3,5 +3,5 @@ AUX mmix-20131017-format-security.patch 2256 BLAKE2B 2481c33c024d84af03b289ec9f2
DIST mmix-20131017.tgz 308016 BLAKE2B 195c4945c61584842af08af891dc2e26672194aef66ff71ba6dfa18bab4e7349de013aa1c3ae195d9d6a69ee4ebc61403acf558a06af86393d5b053920ebad55 SHA512 e816b1ee9205b9f4a2e25ff183c48736ea66e63721a49f0b574850c5872ae85a6e847d802a01b5aa120ac969638d5d05e9b3135512d9362a4d672564f1228922
DIST mmix-20160804.tgz 308410 BLAKE2B 8bbde51921fe23f016e35bd51346e6445d530815e5e87bff44cf17e081c6b8e55dd6bd24f1ce1621851d2eac309fa44d71aa33d93d3ddfce5213c6643181d38c SHA512 35c518227a4ee40d0aa3be02eda2ab8b2a27696fa789f5007a978419d07b3deebb7f391895e63e3556aeb38dc1ded3bddf2b860125ebf8f7848375e90dc7af75
EBUILD mmix-20131017.ebuild 933 BLAKE2B 4319f0caa71a1c5b7d4e2acbc664e0283a2ca8c1b6b5b17e6102d76a78f77892eced9caecf37f0d83340237772aa5b251e62d5867eedbce90a7ce4158f32e435 SHA512 c3c990a9ecc6a897209cf87dfd8b4f5258ecef9409b8608de617b9be680060adeb072f20915a0c35cf782581d3c723f1625a2ba7537d8331808eb365d97c5c8e
-EBUILD mmix-20160804.ebuild 913 BLAKE2B 3de2f37285e2924f9f3f72797a815b7d20fa1dd757ad7db4d882d414a771ef4833aee12977c7aad034513dbaad2bb8b40aff8847c1cf425a7e2048a065cc244c SHA512 eee2daf767941a8b197437a3068c72e48c5e2c4219d0c893f602fa5468f2eca8196ee4f7c1c7c5d0d8cd2dbc2a329ef36e992cc8397f8c2da134e045cc2f1cc9
+EBUILD mmix-20160804.ebuild 912 BLAKE2B 9e4440cfe85ecba2bfa15b9eb28b27c5d88da05b14035ccaba6f981eba2ac2bd34e090ec3052828e7ddea25c33f8daf1f2298805b0d13ce37075d8a3b0105f54 SHA512 8ff1fde7db3608204581350c95fd49addb04c8e7a142f76ce1d8edfb14518ede39147b86c46002c47541c555bb1c7f8bd3c5ec63253b8a270ea793b52df26def
MISC metadata.xml 247 BLAKE2B 9d65f58a46596a4c23d009a2d776c25c5a9dd76ac91ec6f6f548f5f786e43f0be694628bc528dc24d2fcb5efcf7cf95643aea633f12eda3d482d2d03a952d388 SHA512 44f366af35524b7fc87b2eb6c7241918d2afc9b30f1a28289d803ed0125e9099588a2bd99a75e34e3c70fde30765050e62ef5b47975e2a1860dd7a560709459d
diff --git a/dev-lang/mmix/mmix-20160804.ebuild b/dev-lang/mmix/mmix-20160804.ebuild
index 97aa95e066ac..7d46b4c0ca80 100644
--- a/dev-lang/mmix/mmix-20160804.ebuild
+++ b/dev-lang/mmix/mmix-20160804.ebuild
@@ -15,7 +15,7 @@ RDEPEND=""
SLOT="0"
LICENSE="${PN}"
-KEYWORDS="~amd64 ~x86"
+KEYWORDS="~amd64 x86"
IUSE="doc"
S="${WORKDIR}"
diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
index 65aa461351b1..c38534de24c8 100644
--- a/dev-lang/php/Manifest
+++ b/dev-lang/php/Manifest
@@ -11,7 +11,7 @@ DIST php-7.2.0.tar.xz 12014940 BLAKE2B e34c5bfb076e62afc54c8e35e0e35491b803ec753
EBUILD php-5.6.32.ebuild 22500 BLAKE2B f1e8c507532244ed46c8d995cf847034ebb61abd52a52502c4897d2880e24d62ccf7e6fd843b3ddd1fb225ded90a4edb7f9e728a9313f28ad6b3072ab0eb6950 SHA512 b93ca82892cf15eac9c7d890b96974ea1d00cc224290cd4fe38e85c324231c77033c04667473fc787c173c83fee81d435339a70c155c63f253f28a2dbb7c4bdc
EBUILD php-7.0.25.ebuild 21560 BLAKE2B 4898540287e3dd350526f9f13c6e066795dc3ab18ebc5e3278998d897919745efc76a1ee43ee8bddadbb3f570bc1b6779dec6ac055240379ef45c8f70ec61ec3 SHA512 38d1f2d063044db2f4500e99a323f54d992413db26b99926f4d0338190fd481964e1a1573e9ebf06ea315b66d3d1207cd620fcd487745e81739e03c34afe6230
EBUILD php-7.0.26.ebuild 21569 BLAKE2B 18f434e838abeb4a288c6585ce0c31e2ffe3319e780c8bc1b6e3ee8bfb8779a2db9a4dbf1775e6be8c08e7c36a513a56a298ddce773857568b4fc904cc40e30c SHA512 73e213711ad2c1aceed3656978f4ab185197bf1632462b2737154701342e12d67534da445f48192c617c3f94ad7cfb465101a2550541a09a65bab2d7e7706373
-EBUILD php-7.1.11.ebuild 21445 BLAKE2B d960fc446b5248613653f1fca2691875553360006215ee1351c3e927cb3b24e514db2cedc78f6674178883befe749cf8d43d04827a6385161ca2b90be2511417 SHA512 97a647ba4accbd63d544fab04ccedd82f4444cfaba030aec317ab4e921ef61549a0dfbd1a2a036ba2080584b8464ad9e298c414737723443cd94b1c65cf5623a
+EBUILD php-7.1.11.ebuild 21444 BLAKE2B f50b54de700d2efaec8dc706265f3c1e89693c889d97846b192d2164518bdc8615d393fb9bab03cce01d374c6bc03fa7a0b9fddad3b3cfd17353b95e1b003649 SHA512 1dc34c3e4abddadb8c9e2034745170b0556181d78cae16bb15bb6030722571c31eef51aee133f953be41e07fb69f079bbacb650c12d099a97409005a2a7dd45b
EBUILD php-7.1.12.ebuild 21450 BLAKE2B 1b577b45db7242cf4b296452adc5e1d0f1bdea6b1d3c20d20eddb39b0a714487e0d029a88e310971ece6cd2b85b5df6458470db8d7ffa8cd124f59bc9e08d080 SHA512 c9a1438f5f997bacd9058c564ca07aaa072fa4171fb48787cd3cac144607628589e136d9978548c03753deec7b17ed8e11603536feeb88891fcbe91cb731c117
EBUILD php-7.2.0.ebuild 21979 BLAKE2B 880f02d3aabce191172a4a908ceb9ffafd8a66303c7af09a2f8fbf7837a351b195ad605795c50d8cf3004305d175ed7072b617b36371751269aa131a623ae869 SHA512 c6eef90b55c49b2bb66a9874528c8b5eab8835383ad2df4181d7cd67112cec28647d183bd5f3a630041096afc35597fd31271ae570dd170439fbad08524a05b7
MISC metadata.xml 2439 BLAKE2B 7f3cb5f5eab3664c48b951bbf2cdb03b2ce5d119008bbb41dd2c59a34fffbac8c8911738b4988e7e58bf36a520f6c35f46e9383e6845747380109a2f2f3011a6 SHA512 5d0221b77317e021231a2c1ae1dc407dca0e7ad144f5648d9d1abf98434689d375b04c9c45795e38517ca3c3d6077acbe4ff79f3551b20adaeb06325e363ebee
diff --git a/dev-lang/php/php-7.1.11.ebuild b/dev-lang/php/php-7.1.11.ebuild
index bb637b175ff6..8d69f1d464e5 100644
--- a/dev-lang/php/php-7.1.11.ebuild
+++ b/dev-lang/php/php-7.1.11.ebuild
@@ -18,7 +18,7 @@ LICENSE="PHP-3.01
unicode? ( BSD-2 LGPL-2.1 )"
SLOT="$(get_version_component_range 1-2)"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
# We can build the following SAPIs in the given order
SAPIS="embed cli cgi fpm apache2 phpdbg"
diff --git a/dev-lang/python-exec/Manifest b/dev-lang/python-exec/Manifest
index bb535edc6648..930e046ebc54 100644
--- a/dev-lang/python-exec/Manifest
+++ b/dev-lang/python-exec/Manifest
@@ -1,6 +1,6 @@
DIST python-exec-2.4.4.tar.bz2 86945 BLAKE2B 3ee2be57711c45e5821ba4cc54e76e4341056221a34277ced8ab5ebffc4d6af63fbe515f73bd84a1a7a82047a008b72fd2935e61b09b0b852624329b3be22e37 SHA512 26b76960430dc3b2b79aab5e8a72498144d4e78bed5291fe9361afe081f0e8d70049a74ec29384cb0fc199f76c23499324d2eddcaea521ef33d88e61b1b674f9
DIST python-exec-2.4.5.tar.bz2 87137 BLAKE2B 2434bee0bcc64a78a83254d6b6f733ef0748d8209ff70654fc57ac50563d4f32be64705a3c56eefef4e173a238b272d00bef4929982a729a097b82a3a2b0b5b1 SHA512 8c1a520c565afa775cad0e8b88248b688814664e588f683fc2b2c039ee0494b168ebd3cd1042b8b7fe2583f287cf55b22ea0585bfb43efe2f8450d809cde0b21
EBUILD python-exec-2.4.4.ebuild 4284 BLAKE2B 3bdf94faed29610cf221c63d18c39cf5318eed8cdd7bc70aba28b5116cfc9628e22a5fc90ae48b8a166367270965bfe0b9fe2f6c6ded504fb6775b838ef5c29f SHA512 9f7072a4f9b504ebc6cbabf3c18ad06df8c01ae1e8d09139661d339b4f35bc0b3616407a2cdc5266a1c85ccf8abb83c8a8d44ccb0c5c28ad0865df4e15afbfcf
-EBUILD python-exec-2.4.5.ebuild 4448 BLAKE2B 19ae4ef0da744ee9d20d8b12a1c86463972f991e6f765b16f4c3fcbd34a2e3cb812b738749abd3d2c935f8e0e0fcfbc243d9aca0a048da82b56d97235fdc275e SHA512 081a149c6ed38b88b56f966b95721047706bd2c53201f87d315940fe321e07a7ab05831c58b3a6f752bd51b652515b7a8835e76b0376eb92ed0cd4c30b22cc51
+EBUILD python-exec-2.4.5.ebuild 4447 BLAKE2B dc2afc5da722fe9317b217051247cac675071a7c8bfa7d0b01b6900e9b47e6e17671ab74499238af9460274131e42681a76b960d665adddbb33c649a8b46c6c1 SHA512 4c2756397c52f614533c6867455394d6ddcd30cabcd0797297b7ba38fadcd32600b4e52fd832fc9c2eec4926df067f3eb0fe87eb823409da51cbed1537737633
EBUILD python-exec-9999.ebuild 4606 BLAKE2B 33a7427ce4f9ae368211b9cd8fce04d004377dfae2e4683591bc4aa3d05c2d78f419e985aaede52412d280819110ce8a5312f316e18fd2e818f65fa9b754d184 SHA512 c68c4cc31b5f4f634ef6adb6e97c487f71600fd5c8e2d6d60a01f025351b9c231835a57221aea6b287f0e8e00669b7af958a0cd4e435459827e204cd312b6acd
MISC metadata.xml 589 BLAKE2B 7f9fa9750915db8b546b52a560a7fd8d9a63c4f310e423ebdc0508fe9b14363001b30f3c3db26f6d05eec8a44176d62a9335153dff2d55a41a31d3b428cc9ca6 SHA512 2ac0223af0a2cf95d2b18ef415eadb325af0094e4ec361a414b0d68b203dc1c937d3d680af96bdad1e8a48cb5786683bdbbd451f47a0f3a777c075e1690ccf7a
diff --git a/dev-lang/python-exec/python-exec-2.4.5.ebuild b/dev-lang/python-exec/python-exec-2.4.5.ebuild
index 773c3edba86c..c82d96a9504e 100644
--- a/dev-lang/python-exec/python-exec-2.4.5.ebuild
+++ b/dev-lang/python-exec/python-exec-2.4.5.ebuild
@@ -17,7 +17,7 @@ SRC_URI="https://github.com/mgorny/${PN}/releases/download/${P}/${P}.tar.bz2"
LICENSE="BSD-2"
SLOT="2"
-KEYWORDS="alpha ~amd64 ~arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+KEYWORDS="alpha amd64 ~arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE=""
# eselect-python because of /usr/bin/python* collisions and new config
diff --git a/dev-lang/ruby/Manifest b/dev-lang/ruby/Manifest
index 722534b916ae..b6204a069a4c 100644
--- a/dev-lang/ruby/Manifest
+++ b/dev-lang/ruby/Manifest
@@ -1,10 +1,19 @@
DIST ruby-2.2.8.tar.xz 10520648 BLAKE2B 96c483786b1a7e0b1483c337a13fe7e07e740bb21b507b518e142dc9ac8cf19ba00c094b4357db4305c645d370d776269145b699ad11429aa56a0de78abfbf83 SHA512 e21004bee537f0c706f4ac9526507b414ddb6a8d721e8fad8d7fe88992a4f048eb5eb79f8d8b8af2a8b331dcfa74b560490218a1acb3532c2cdb4fb4909da3c9
+DIST ruby-2.2.9.tar.xz 10511456 BLAKE2B aeb631c47def96e8dd19e4f7281ef95833d9d0cde0912ffccd341032d2be22d6eebf259b0926f248298a5a290fd4d99b7ec38e29b805c9d77d4f3f4481fc0edb SHA512 c4ef84cd00f72f60d6c168f0726d9d7e9573549c2bbae83893e1a9d5e64fc7938f4c9d50a47147b28b37cbf36263f95e10a810c0797bad941775a48d75a8c933
DIST ruby-2.3.5.tar.xz 11437868 BLAKE2B db50d7b36b6a8fa5b0b030f56d5d7bfc3c43e21d7255e9db73fed4d42cda1f161457c0f478e865766e2b7ef703335aa5b6bdf0bbc23c26a1cdb0163b75528de0 SHA512 c55e3b71241f505b6bbad78b3bd40235064faae3443ca14b77b6356556caed6a0d055dc2e2cd7ebdb5290ab908e06d2b7d68f72469af5017eda4b29664b0d889
+DIST ruby-2.3.6.tar.xz 11445628 BLAKE2B 052f09fef806581824b14196abecde7def7c4ebc922c8af75281fe26ec2a7a2a325d1702a382b29e91b302064ab55972b63430248813b24b591fe74b7bc18e30 SHA512 a09c8715097d16190ee17ee39e7a74438cefc9013add350217b7e3fb4d60aa9dcb30595adf832b0d67a5c45b1fe9d4effb767c995af2759420859f8d763c693a
DIST ruby-2.4.2.tar.xz 10046412 BLAKE2B 33af07ee102367fe811dd3248edc72238bddfc3332f64280b6b36497c7de70bce939127c1efcc965072451ddd60ede98c855fc1fd24be9b12eedc58a21faad5a SHA512 c1d42272fb0d94b693452e703b0ea4942bf59cbd4b08ba83bf039f54be97ebc88511632413da0164970b4cf97bc302bccb88aab48edfa8fa147498e7ee741595
+DIST ruby-2.4.3.tar.xz 10040072 BLAKE2B 87ad9700312a104a60b079f4ef95804d2a9e01109e9fef6e83e593464f1d2c5077af54cbbaff6e0d25a925d05f513cade6c76f05960d9bcc1817bdee51ad4a0f SHA512 8bcf60c994a96787da5d743c66f5609a5a6d834d6d61243cdea7fd059197c3b10da43c99e5649be85e2f2329eedcbb1dd76e89ce3ac586be9056348f7449ed09
DIST ruby-patches-2.2.8.tar.bz2 5764 BLAKE2B f50729480a4231db51de7981acb04dafa09d5fde592cf4a824a6fefe8ae3189ab9e82857e7ca41f1bb32dff1c4057ac37badf971c1b8f2981189e13d42dd38d2 SHA512 296387ec7f2ff82ad55f147d8f9568de544403d286ad24bb60aca916215d7ff6e1d6aca5a31c00a1999504989cda2bbd3260cae96c18ba73f9ffdcfd6b2695bd
+DIST ruby-patches-2.2.9.tar.bz2 5764 BLAKE2B f50729480a4231db51de7981acb04dafa09d5fde592cf4a824a6fefe8ae3189ab9e82857e7ca41f1bb32dff1c4057ac37badf971c1b8f2981189e13d42dd38d2 SHA512 296387ec7f2ff82ad55f147d8f9568de544403d286ad24bb60aca916215d7ff6e1d6aca5a31c00a1999504989cda2bbd3260cae96c18ba73f9ffdcfd6b2695bd
DIST ruby-patches-2.3.5.tar.bz2 3593 BLAKE2B 48aba5d68ad7b648065a3580cb7160470ad308659fa11249afab1efe6482edf3805087f4054762717a89b61da4fd7a50c84ab8e76ba00052fd95d937655dcdba SHA512 eacb7f6787b36c7d848453b29152190a164ebc6882ab509eeb6584e49af4b66a665c4baff4ecf75e5831ae54d47dbc651d6f048918f3327500c429f1f419ed94
+DIST ruby-patches-2.3.6.tar.bz2 3030 BLAKE2B 7c1e80ff0569a03672f53820c665933056b46bcf791c9132cb9f358f72df693749f02da65ca7469c3dd0f652d7dc7bfaa03dccd4eb900562361876023fb65b42 SHA512 54cc3f2bfd1967b8558736e5a5240b886a56b22defca5813f45b1f4dca9af169b4d59d60b327ec8411e824970ac6da1cec53cfc31833403742e9d6941e5a78f1
DIST ruby-patches-2.4.2.tar.bz2 3443 BLAKE2B d90cfb496ad8701fccb061fd314a7f2394b251c921f270f17c8335f617e71dacc8e4a2df4e76842b67eb34627e5f5291d8a2723f6dfed53a36ace3abad95a179 SHA512 fb8349c67c72caf10ec12c4b5410194b4df24345446c2e3b6c6176d00727bfe803f4a905ef094a2d52315b6f4c3ce74fb8fbaa2fdf5efe46e6ccb24bf8418b17
+DIST ruby-patches-2.4.3.tar.bz2 2898 BLAKE2B e46502dbb0aa25c3d71693a6c04b433bd4de60f194cdd283517c4b08da190356885d9bca4a6765402088185fa8ec681156e8e8eecf0703a2c1ea7bb81adc0bf9 SHA512 d767d43c7df737469247e42e1c4205b8c6850c8f335a2869c884f145c037e9bab10492cc7cd2903f5c33e232cdc5bbdabb3e8da837c7bf420b9d58d1d33149ed
EBUILD ruby-2.2.8.ebuild 6914 BLAKE2B 7c2786f023183c10e863890e9fac82228985d67bdde66546df59079c8a5c7b053b02e909ea5f6c0efc86df37c1d5ba000caa0a1c49cb260ed41291764f556aaa SHA512 2b5ab88539f49a91f4876598a910bfd80eb1789e738aa5c25489e12d9f7acefece189681c4600dd378da79049ae3712b0e90e2ec414163ef99333e54a0b5da68
+EBUILD ruby-2.2.9.ebuild 6923 BLAKE2B 77b3134671dcd0510757eb071d5daf0c85e4ad2bfe6abeb693fcfaf3e8418de91f811a59912aa63ed5d0d4aca0f21162188c66115e6b0d56ba0fc22d655b98e1 SHA512 1c0201e8fdde8eb8eaf564749a0dbc6faac440e7d01d5e4dac877549de5e20979c6d4ab8c9e6cf26a6151f80cab5313b40af5f7443e7ca330896ecbdf9c63acb
EBUILD ruby-2.3.5.ebuild 6877 BLAKE2B 5d55fe0c3bd56afed1c040fba22f7ead461ef5c55edb43bf1d7a435db24921434f1a2a7d48f473d2bdc3d56f714ffbc3c0c3de24855f1b8aee10b0e3266b89f0 SHA512 059ec424075082c9809a0951dec55e38b9861124632b10167ed696081ed2402c14a7575dfb9a62152529957f768f69f6bf6424d70a85e5b6d3374884ea86d1fc
+EBUILD ruby-2.3.6.ebuild 6877 BLAKE2B 5d55fe0c3bd56afed1c040fba22f7ead461ef5c55edb43bf1d7a435db24921434f1a2a7d48f473d2bdc3d56f714ffbc3c0c3de24855f1b8aee10b0e3266b89f0 SHA512 059ec424075082c9809a0951dec55e38b9861124632b10167ed696081ed2402c14a7575dfb9a62152529957f768f69f6bf6424d70a85e5b6d3374884ea86d1fc
EBUILD ruby-2.4.2.ebuild 6978 BLAKE2B 0262a40a78def3c9a83931573282cd2da8aa3ebeff7cdd8d36c3064a75cac1ef2d4196c0e7dc814d3f33473af17bc343ed77ecb7e807aa1848d826dcc0a1b6d1 SHA512 c6f48c8357e5248046ec8e811d6e96c57c073d5494cefded64baf1b5c177bc9e7a4a5e545b3ca5e977bd648066b568b1f5c9df59387540f2a145159e75f09795
+EBUILD ruby-2.4.3.ebuild 6978 BLAKE2B 0262a40a78def3c9a83931573282cd2da8aa3ebeff7cdd8d36c3064a75cac1ef2d4196c0e7dc814d3f33473af17bc343ed77ecb7e807aa1848d826dcc0a1b6d1 SHA512 c6f48c8357e5248046ec8e811d6e96c57c073d5494cefded64baf1b5c177bc9e7a4a5e545b3ca5e977bd648066b568b1f5c9df59387540f2a145159e75f09795
MISC metadata.xml 911 BLAKE2B 7596a3d7a53742635e3262a0deac45eb6c37e51b473dde2b5da78742baba1ecab42a4a3e2f992cfa8f3765472df896ccff2e2936ba5dedba1aad05c2ab47d9dc SHA512 c5d9f15742132625061303ed71206e937933b402e183edbe0f37ee73ac7ba47b3f7ad54cbf12d1db3900a1f833ea2432790a10a02ba7e1e0c4bf128a716b9d72
diff --git a/dev-lang/ruby/ruby-2.2.9.ebuild b/dev-lang/ruby/ruby-2.2.9.ebuild
new file mode 100644
index 000000000000..bde37ba6f666
--- /dev/null
+++ b/dev-lang/ruby/ruby-2.2.9.ebuild
@@ -0,0 +1,245 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+#PATCHSET=1
+
+inherit autotools eutils flag-o-matic multilib versionator
+
+MY_P="${PN}-$(get_version_component_range 1-3)"
+S=${WORKDIR}/${MY_P}
+
+SLOT=$(get_version_component_range 1-2)
+MY_SUFFIX=$(delete_version_separator 1 ${SLOT})
+RUBYVERSION=2.2.0
+
+if [[ -n ${PATCHSET} ]]; then
+ if [[ ${PVR} == ${PV} ]]; then
+ PATCHSET="${PV}-r0.${PATCHSET}"
+ else
+ PATCHSET="${PVR}.${PATCHSET}"
+ fi
+else
+ PATCHSET="${PVR}"
+fi
+
+DESCRIPTION="An object-oriented scripting language"
+HOMEPAGE="http://www.ruby-lang.org/"
+SRC_URI="mirror://ruby/2.2/${MY_P}.tar.xz
+ https://dev.gentoo.org/~flameeyes/ruby-team/${PN}-patches-${PATCHSET}.tar.bz2"
+
+LICENSE="|| ( Ruby-BSD BSD-2 )"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc libressl +rdoc rubytests socks5 ssl tk xemacs ncurses +readline"
+
+RDEPEND="
+ berkdb? ( sys-libs/db:= )
+ gdbm? ( sys-libs/gdbm )
+ jemalloc? ( dev-libs/jemalloc )
+ ssl? (
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl )
+ )
+ socks5? ( >=net-proxy/dante-1.1.13 )
+ tk? (
+ dev-lang/tcl:0=[threads]
+ dev-lang/tk:0=[threads]
+ )
+ ncurses? ( sys-libs/ncurses:0= )
+ readline? ( sys-libs/readline:0= )
+ dev-libs/libyaml
+ virtual/libffi
+ sys-libs/zlib
+ >=app-eselect/eselect-ruby-20141227
+ !<dev-ruby/rdoc-3.9.4
+ !<dev-ruby/rubygems-1.8.10-r1"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+ >=dev-ruby/minitest-5.4.3[ruby_targets_ruby22]
+ >=dev-ruby/power_assert-0.2.2[ruby_targets_ruby22]
+ >=dev-ruby/test-unit-3.0.8[ruby_targets_ruby22]
+"
+
+PDEPEND="
+ ${BUNDLED_GEMS}
+ virtual/rubygems[ruby_targets_ruby22]
+ >=dev-ruby/json-1.8.1[ruby_targets_ruby22]
+ >=dev-ruby/rake-0.9.6[ruby_targets_ruby22]
+ rdoc? ( >=dev-ruby/rdoc-4.0.1[ruby_targets_ruby22] )
+ xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+ EPATCH_FORCE="yes" EPATCH_SUFFIX="patch" \
+ epatch "${WORKDIR}/patches"
+
+ # We can no longer unbundle all of rake because rubygems now depends
+ # on this. We leave the actual rake code around to bootstrap
+ # rubygems, but remove the bits that would cause a file collision.
+ einfo "Unbundling gems..."
+ cd "$S"
+ rm -rf \
+ {bin,lib}/rake lib/rake.rb man/rake.1 \
+ bin/gem || die "removal failed"
+ # Remove bundled gems that we will install via PDEPEND, bug
+ # 539700. Use explicit version numbers to ensure rm fails when they
+ # change so we can update dependencies accordingly.
+ rm gems/{minitest-5.4.3,power_assert-0.2.2,test-unit-3.0.8}.gem || die
+
+ # Fix a hardcoded lib path in configure script
+ sed -i -e "s:\(RUBY_LIB_PREFIX=\"\${prefix}/\)lib:\1$(get_libdir):" \
+ configure.in || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ local modules= myconf=
+
+ # -fomit-frame-pointer makes ruby segfault, see bug #150413.
+ filter-flags -fomit-frame-pointer
+ # In many places aliasing rules are broken; play it safe
+ # as it's risky with newer compilers to leave it as it is.
+ append-flags -fno-strict-aliasing
+ # SuperH needs this
+ use sh && append-flags -mieee
+
+ # Socks support via dante
+ if use socks5 ; then
+ # Socks support can't be disabled as long as SOCKS_SERVER is
+ # set and socks library is present, so need to unset
+ # SOCKS_SERVER in that case.
+ unset SOCKS_SERVER
+ fi
+
+ # Increase GC_MALLOC_LIMIT if set (default is 8000000)
+ if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
+ append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
+ fi
+
+ # ipv6 hack, bug 168939. Needs --enable-ipv6.
+ use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET"
+
+ # Determine which modules *not* to build depending in the USE flags.
+ if ! use readline ; then
+ modules="${modules},readline"
+ fi
+ if ! use berkdb ; then
+ modules="${modules},dbm"
+ fi
+ if ! use gdbm ; then
+ modules="${modules},gdbm"
+ fi
+ if ! use ssl ; then
+ modules="${modules},openssl"
+ fi
+ if ! use ncurses ; then
+ modules="${modules},curses"
+ fi
+ if ! use tk ; then
+ modules="${modules},tk"
+ fi
+
+ # Provide an empty LIBPATHENV because we disable rpath but we do not
+ # need LD_LIBRARY_PATH by default since that breaks USE=multitarget
+ # #564272
+ INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" econf \
+ --program-suffix=${MY_SUFFIX} \
+ --with-soname=ruby${MY_SUFFIX} \
+ --docdir=${EPREFIX}/usr/share/doc/${P} \
+ --enable-shared \
+ --enable-pthread \
+ --disable-rpath \
+ --with-out-ext="${modules}" \
+ $(use_with jemalloc jemalloc) \
+ $(use_enable socks5 socks) \
+ $(use_enable doc install-doc) \
+ --enable-ipv6 \
+ $(use_enable debug) \
+ ${myconf} \
+ --enable-option-checking=no \
+ || die "econf failed"
+}
+
+src_compile() {
+ emake V=1 EXTLDFLAGS="${LDFLAGS}" || die "emake failed"
+}
+
+src_test() {
+ emake -j1 V=1 test || die "make test failed"
+
+ elog "Ruby's make test has been run. Ruby also ships with a make check"
+ elog "that cannot be run until after ruby has been installed."
+ elog
+ if use rubytests; then
+ elog "You have enabled rubytests, so they will be installed to"
+ elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+ elog "than root, and you must place them into a writeable directory."
+ elog "Then call: "
+ elog
+ elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+ else
+ elog "Enable the rubytests USE flag to install the make check tests"
+ fi
+}
+
+src_install() {
+ # Remove the remaining bundled gems. We do this late in the process
+ # since they are used during the build to e.g. create the
+ # documentation.
+ rm -rf ext/json || die
+
+ # Ruby is involved in the install process, we don't want interference here.
+ unset RUBYOPT
+
+ local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
+
+ LD_LIBRARY_PATH="${S}:${D}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+ RUBYLIB="${S}:${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+ for d in $(find "${S}/ext" -type d) ; do
+ RUBYLIB="${RUBYLIB}:$d"
+ done
+ export LD_LIBRARY_PATH RUBYLIB
+
+ emake V=1 DESTDIR="${D}" install || die "make install failed"
+
+ # Remove installed rubygems copy
+ rm -rf "${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed"
+ rm -rf "${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed"
+ rm -rf "${D}/usr/bin/"{ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed"
+
+ if use doc; then
+ make DESTDIR="${D}" install-doc || die "make install-doc failed"
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r sample
+ fi
+
+ dodoc ChangeLog NEWS doc/NEWS* README* || die
+
+ if use rubytests; then
+ pushd test
+ insinto /usr/share/${PN}-${SLOT}/test
+ doins -r .
+ popd
+ fi
+}
+
+pkg_postinst() {
+ if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
+ eselect ruby set ruby${MY_SUFFIX}
+ fi
+
+ elog
+ elog "To switch between available Ruby profiles, execute as root:"
+ elog "\teselect ruby set ruby(21|22|...)"
+ elog
+}
+
+pkg_postrm() {
+ eselect ruby cleanup
+}
diff --git a/dev-lang/ruby/ruby-2.3.6.ebuild b/dev-lang/ruby/ruby-2.3.6.ebuild
new file mode 100644
index 000000000000..d41fd224c419
--- /dev/null
+++ b/dev-lang/ruby/ruby-2.3.6.ebuild
@@ -0,0 +1,242 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+#PATCHSET=1
+
+inherit autotools eutils flag-o-matic multilib versionator
+
+MY_P="${PN}-$(get_version_component_range 1-3)"
+S=${WORKDIR}/${MY_P}
+
+SLOT=$(get_version_component_range 1-2)
+MY_SUFFIX=$(delete_version_separator 1 ${SLOT})
+RUBYVERSION=2.3.0
+
+if [[ -n ${PATCHSET} ]]; then
+ if [[ ${PVR} == ${PV} ]]; then
+ PATCHSET="${PV}-r0.${PATCHSET}"
+ else
+ PATCHSET="${PVR}.${PATCHSET}"
+ fi
+else
+ PATCHSET="${PVR}"
+fi
+
+DESCRIPTION="An object-oriented scripting language"
+HOMEPAGE="https://www.ruby-lang.org/"
+SRC_URI="mirror://ruby/${SLOT}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~flameeyes/ruby-team/${PN}-patches-${PATCHSET}.tar.bz2"
+
+LICENSE="|| ( Ruby-BSD BSD-2 )"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc libressl +rdoc rubytests socks5 ssl tk xemacs ncurses +readline"
+
+RDEPEND="
+ berkdb? ( sys-libs/db:= )
+ gdbm? ( sys-libs/gdbm )
+ jemalloc? ( dev-libs/jemalloc )
+ ssl? (
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl )
+ )
+ socks5? ( >=net-proxy/dante-1.1.13 )
+ tk? (
+ dev-lang/tcl:0=[threads]
+ dev-lang/tk:0=[threads]
+ )
+ ncurses? ( sys-libs/ncurses:0= )
+ readline? ( sys-libs/readline:0= )
+ dev-libs/libyaml
+ virtual/libffi
+ sys-libs/zlib
+ >=app-eselect/eselect-ruby-20151229
+ !<dev-ruby/rdoc-3.9.4
+ !<dev-ruby/rubygems-1.8.10-r1"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+ >=dev-ruby/did_you_mean-1.0.0:1[ruby_targets_ruby23]
+ >=dev-ruby/minitest-5.8.3[ruby_targets_ruby23]
+ >=dev-ruby/net-telnet-0.1.1[ruby_targets_ruby23]
+ >=dev-ruby/power_assert-0.2.6[ruby_targets_ruby23]
+ >=dev-ruby/rake-10.4.2[ruby_targets_ruby23]
+ >=dev-ruby/test-unit-3.1.5[ruby_targets_ruby23]
+"
+
+PDEPEND="
+ ${BUNDLED_GEMS}
+ virtual/rubygems[ruby_targets_ruby23]
+ >=dev-ruby/json-1.8.3[ruby_targets_ruby23]
+ rdoc? ( >=dev-ruby/rdoc-4.2.1[ruby_targets_ruby23] )
+ xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+ EPATCH_FORCE="yes" EPATCH_SUFFIX="patch" \
+ epatch "${WORKDIR}/patches"
+
+ einfo "Unbundling gems..."
+ cd "$S"
+ # Remove bundled gems that we will install via PDEPEND, bug
+ # 539700. Use explicit version numbers to ensure rm fails when they
+ # change so we can update dependencies accordingly.
+ rm -f gems/{did_you_mean-1.0.0,minitest-5.8.3,net-telnet-0.1.1,power_assert-0.2.6,rake-10.4.2,test-unit-3.1.5}.gem || die
+
+ # Fix a hardcoded lib path in configure script
+ sed -i -e "s:\(RUBY_LIB_PREFIX=\"\${prefix}/\)lib:\1$(get_libdir):" \
+ configure.in || die "sed failed"
+
+ eautoreconf
+}
+
+src_configure() {
+ local modules= myconf=
+
+ # -fomit-frame-pointer makes ruby segfault, see bug #150413.
+ filter-flags -fomit-frame-pointer
+ # In many places aliasing rules are broken; play it safe
+ # as it's risky with newer compilers to leave it as it is.
+ append-flags -fno-strict-aliasing
+ # SuperH needs this
+ use sh && append-flags -mieee
+
+ # Socks support via dante
+ if use socks5 ; then
+ # Socks support can't be disabled as long as SOCKS_SERVER is
+ # set and socks library is present, so need to unset
+ # SOCKS_SERVER in that case.
+ unset SOCKS_SERVER
+ fi
+
+ # Increase GC_MALLOC_LIMIT if set (default is 8000000)
+ if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
+ append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
+ fi
+
+ # ipv6 hack, bug 168939. Needs --enable-ipv6.
+ use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET"
+
+ # Determine which modules *not* to build depending in the USE flags.
+ if ! use readline ; then
+ modules="${modules},readline"
+ fi
+ if ! use berkdb ; then
+ modules="${modules},dbm"
+ fi
+ if ! use gdbm ; then
+ modules="${modules},gdbm"
+ fi
+ if ! use ssl ; then
+ modules="${modules},openssl"
+ fi
+ if ! use ncurses ; then
+ modules="${modules},curses"
+ fi
+ if ! use tk ; then
+ modules="${modules},tk"
+ fi
+
+ # Provide an empty LIBPATHENV because we disable rpath but we do not
+ # need LD_LIBRARY_PATH by default since that breaks USE=multitarget
+ # #564272
+ INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" econf \
+ --program-suffix=${MY_SUFFIX} \
+ --with-soname=ruby${MY_SUFFIX} \
+ --docdir=${EPREFIX}/usr/share/doc/${P} \
+ --enable-shared \
+ --enable-pthread \
+ --disable-rpath \
+ --with-out-ext="${modules}" \
+ $(use_with jemalloc jemalloc) \
+ $(use_enable socks5 socks) \
+ $(use_enable doc install-doc) \
+ --enable-ipv6 \
+ $(use_enable debug) \
+ ${myconf} \
+ --enable-option-checking=no \
+ || die "econf failed"
+}
+
+src_compile() {
+ emake V=1 EXTLDFLAGS="${LDFLAGS}" || die "emake failed"
+}
+
+src_test() {
+ emake -j1 V=1 test || die "make test failed"
+
+ elog "Ruby's make test has been run. Ruby also ships with a make check"
+ elog "that cannot be run until after ruby has been installed."
+ elog
+ if use rubytests; then
+ elog "You have enabled rubytests, so they will be installed to"
+ elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+ elog "than root, and you must place them into a writeable directory."
+ elog "Then call: "
+ elog
+ elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+ else
+ elog "Enable the rubytests USE flag to install the make check tests"
+ fi
+}
+
+src_install() {
+ # Remove the remaining bundled gems. We do this late in the process
+ # since they are used during the build to e.g. create the
+ # documentation.
+ rm -rf ext/json || die
+
+ # Ruby is involved in the install process, we don't want interference here.
+ unset RUBYOPT
+
+ local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
+
+ LD_LIBRARY_PATH="${S}:${D}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+ RUBYLIB="${S}:${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+ for d in $(find "${S}/ext" -type d) ; do
+ RUBYLIB="${RUBYLIB}:$d"
+ done
+ export LD_LIBRARY_PATH RUBYLIB
+
+ emake V=1 DESTDIR="${D}" install || die "make install failed"
+
+ # Remove installed rubygems and rdoc copy
+ rm -rf "${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed"
+ rm -rf "${D}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed"
+ rm -rf "${D}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed"
+ rm -rf "${D}/usr/bin/"{ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed"
+
+ if use doc; then
+ make DESTDIR="${D}" install-doc || die "make install-doc failed"
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r sample
+ fi
+
+ dodoc ChangeLog NEWS doc/NEWS* README* || die
+
+ if use rubytests; then
+ pushd test
+ insinto /usr/share/${PN}-${SLOT}/test
+ doins -r .
+ popd
+ fi
+}
+
+pkg_postinst() {
+ if [[ ! -n $(readlink "${ROOT}"usr/bin/ruby) ]] ; then
+ eselect ruby set ruby${MY_SUFFIX}
+ fi
+
+ elog
+ elog "To switch between available Ruby profiles, execute as root:"
+ elog "\teselect ruby set ruby(22|23|...)"
+ elog
+}
+
+pkg_postrm() {
+ eselect ruby cleanup
+}
diff --git a/dev-lang/ruby/ruby-2.4.3.ebuild b/dev-lang/ruby/ruby-2.4.3.ebuild
new file mode 100644
index 000000000000..46a0abb33724
--- /dev/null
+++ b/dev-lang/ruby/ruby-2.4.3.ebuild
@@ -0,0 +1,243 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+#PATCHSET=1
+
+inherit autotools eutils flag-o-matic multilib versionator
+
+MY_P="${PN}-$(get_version_component_range 1-3)"
+S=${WORKDIR}/${MY_P}
+
+SLOT=$(get_version_component_range 1-2)
+MY_SUFFIX=$(delete_version_separator 1 ${SLOT})
+RUBYVERSION=${SLOT}.0
+
+if [[ -n ${PATCHSET} ]]; then
+ if [[ ${PVR} == ${PV} ]]; then
+ PATCHSET="${PV}-r0.${PATCHSET}"
+ else
+ PATCHSET="${PVR}.${PATCHSET}"
+ fi
+else
+ PATCHSET="${PVR}"
+fi
+
+DESCRIPTION="An object-oriented scripting language"
+HOMEPAGE="http://www.ruby-lang.org/"
+SRC_URI="mirror://ruby/${SLOT}/${MY_P}.tar.xz
+ https://dev.gentoo.org/~graaff/ruby-team/${PN}-patches-${PATCHSET}.tar.bz2"
+
+LICENSE="|| ( Ruby-BSD BSD-2 )"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd"
+IUSE="berkdb debug doc examples gdbm ipv6 jemalloc libressl +rdoc rubytests socks5 ssl static-libs tk xemacs"
+
+RDEPEND="
+ berkdb? ( sys-libs/db:= )
+ gdbm? ( sys-libs/gdbm )
+ jemalloc? ( dev-libs/jemalloc )
+ ssl? (
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl )
+ )
+ socks5? ( >=net-proxy/dante-1.1.13 )
+ tk? (
+ dev-lang/tcl:0=[threads]
+ dev-lang/tk:0=[threads]
+ )
+ dev-libs/libyaml
+ virtual/libffi
+ sys-libs/zlib
+ >=app-eselect/eselect-ruby-20161226
+ !<dev-ruby/rdoc-3.9.4
+ !<dev-ruby/rubygems-1.8.10-r1"
+
+DEPEND="${RDEPEND}"
+
+BUNDLED_GEMS="
+ >=dev-ruby/did_you_mean-1.1.0:2.4[ruby_targets_ruby24]
+ >=dev-ruby/minitest-5.10.1[ruby_targets_ruby24]
+ >=dev-ruby/net-telnet-0.1.1[ruby_targets_ruby24]
+ >=dev-ruby/power_assert-0.4.1[ruby_targets_ruby24]
+ >=dev-ruby/rake-12.0.0[ruby_targets_ruby24]
+ >=dev-ruby/test-unit-3.2.3[ruby_targets_ruby24]
+ >=dev-ruby/xmlrpc-0.2.1[ruby_targets_ruby24]
+"
+
+PDEPEND="
+ ${BUNDLED_GEMS}
+ virtual/rubygems[ruby_targets_ruby24]
+ >=dev-ruby/json-2.0.2[ruby_targets_ruby24]
+ rdoc? ( >=dev-ruby/rdoc-5.1.0[ruby_targets_ruby24] )
+ xemacs? ( app-xemacs/ruby-modes )"
+
+src_prepare() {
+ EPATCH_FORCE="yes" EPATCH_SUFFIX="patch" \
+ epatch "${WORKDIR}/patches"
+
+ einfo "Unbundling gems..."
+ cd "$S"
+ # Remove bundled gems that we will install via PDEPEND, bug
+ # 539700. Use explicit version numbers to ensure rm fails when they
+ # change so we can update dependencies accordingly.
+ rm -f gems/{did_you_mean-1.1.0,minitest-5.10.1,net-telnet-0.1.1,power_assert-0.4.1,rake-12.0.0,test-unit-3.2.3,xmlrpc-0.2.1}.gem || die
+
+ einfo "Removing bundled libraries..."
+ rm -fr ext/fiddle/libffi-3.2.1 || die
+
+ # Fix a hardcoded lib path in configure script
+ sed -i -e "s:\(RUBY_LIB_PREFIX=\"\${prefix}/\)lib:\1$(get_libdir):" \
+ configure.in || die "sed failed"
+
+ eapply_user
+
+ eautoreconf
+}
+
+src_configure() {
+ local modules= myconf=
+
+ # -fomit-frame-pointer makes ruby segfault, see bug #150413.
+ filter-flags -fomit-frame-pointer
+ # In many places aliasing rules are broken; play it safe
+ # as it's risky with newer compilers to leave it as it is.
+ append-flags -fno-strict-aliasing
+ # SuperH needs this
+ use sh && append-flags -mieee
+
+ # Socks support via dante
+ if use socks5 ; then
+ # Socks support can't be disabled as long as SOCKS_SERVER is
+ # set and socks library is present, so need to unset
+ # SOCKS_SERVER in that case.
+ unset SOCKS_SERVER
+ fi
+
+ # Increase GC_MALLOC_LIMIT if set (default is 8000000)
+ if [ -n "${RUBY_GC_MALLOC_LIMIT}" ] ; then
+ append-flags "-DGC_MALLOC_LIMIT=${RUBY_GC_MALLOC_LIMIT}"
+ fi
+
+ # ipv6 hack, bug 168939. Needs --enable-ipv6.
+ use ipv6 || myconf="${myconf} --with-lookup-order-hack=INET"
+
+ # Determine which modules *not* to build depending in the USE flags.
+ if ! use berkdb ; then
+ modules="${modules},dbm"
+ fi
+ if ! use gdbm ; then
+ modules="${modules},gdbm"
+ fi
+ if ! use ssl ; then
+ modules="${modules},openssl"
+ fi
+ if ! use tk ; then
+ modules="${modules},tk"
+ fi
+
+ # Provide an empty LIBPATHENV because we disable rpath but we do not
+ # need LD_LIBRARY_PATH by default since that breaks USE=multitarget
+ # #564272
+ INSTALL="${EPREFIX}/usr/bin/install -c" LIBPATHENV="" econf \
+ --program-suffix=${MY_SUFFIX} \
+ --with-soname=ruby${MY_SUFFIX} \
+ --docdir=${EPREFIX}/usr/share/doc/${P} \
+ --enable-shared \
+ --enable-pthread \
+ --disable-rpath \
+ --with-out-ext="${modules}" \
+ $(use_with jemalloc jemalloc) \
+ $(use_enable socks5 socks) \
+ $(use_enable doc install-doc) \
+ --enable-ipv6 \
+ $(use_enable static-libs static) \
+ $(use_enable static-libs install-static-library) \
+ $(use_with static-libs static-linked-ext) \
+ $(use_enable debug) \
+ ${myconf} \
+ --enable-option-checking=no \
+ || die "econf failed"
+}
+
+src_compile() {
+ emake V=1 EXTLDFLAGS="${LDFLAGS}" || die "emake failed"
+}
+
+src_test() {
+ emake -j1 V=1 test || die "make test failed"
+
+ elog "Ruby's make test has been run. Ruby also ships with a make check"
+ elog "that cannot be run until after ruby has been installed."
+ elog
+ if use rubytests; then
+ elog "You have enabled rubytests, so they will be installed to"
+ elog "/usr/share/${PN}-${SLOT}/test. To run them you must be a user other"
+ elog "than root, and you must place them into a writeable directory."
+ elog "Then call: "
+ elog
+ elog "ruby${MY_SUFFIX} -C /location/of/tests runner.rb"
+ else
+ elog "Enable the rubytests USE flag to install the make check tests"
+ fi
+}
+
+src_install() {
+ # Remove the remaining bundled gems. We do this late in the process
+ # since they are used during the build to e.g. create the
+ # documentation.
+ rm -rf ext/json || die
+
+ # Ruby is involved in the install process, we don't want interference here.
+ unset RUBYOPT
+
+ local MINIRUBY=$(echo -e 'include Makefile\ngetminiruby:\n\t@echo $(MINIRUBY)'|make -f - getminiruby)
+
+ LD_LIBRARY_PATH="${S}:${ED}/usr/$(get_libdir)${LD_LIBRARY_PATH+:}${LD_LIBRARY_PATH}"
+ RUBYLIB="${S}:${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"
+ for d in $(find "${S}/ext" -type d) ; do
+ RUBYLIB="${RUBYLIB}:$d"
+ done
+ export LD_LIBRARY_PATH RUBYLIB
+
+ emake V=1 DESTDIR="${D}" install || die "make install failed"
+
+ # Remove installed rubygems and rdoc copy
+ rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}/rubygems" || die "rm rubygems failed"
+ rm -rf "${ED}/usr/bin/"gem"${MY_SUFFIX}" || die "rm rdoc bins failed"
+ rm -rf "${ED}/usr/$(get_libdir)/ruby/${RUBYVERSION}"/rdoc* || die "rm rdoc failed"
+ rm -rf "${ED}/usr/bin/"{ri,rdoc}"${MY_SUFFIX}" || die "rm rdoc bins failed"
+
+ if use doc; then
+ make DESTDIR="${D}" install-doc || die "make install-doc failed"
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r sample
+ fi
+
+ dodoc ChangeLog NEWS doc/NEWS* README* || die
+
+ if use rubytests; then
+ pushd test
+ insinto /usr/share/${PN}-${SLOT}/test
+ doins -r .
+ popd
+ fi
+}
+
+pkg_postinst() {
+ if [[ ! -n $(readlink "${EROOT}"usr/bin/ruby) ]] ; then
+ eselect ruby set ruby${MY_SUFFIX}
+ fi
+
+ elog
+ elog "To switch between available Ruby profiles, execute as root:"
+ elog "\teselect ruby set ruby(23|24|...)"
+ elog
+}
+
+pkg_postrm() {
+ eselect ruby cleanup
+}
diff --git a/dev-lang/swi-prolog/Manifest b/dev-lang/swi-prolog/Manifest
index deab2c751993..a2cf61b279b4 100644
--- a/dev-lang/swi-prolog/Manifest
+++ b/dev-lang/swi-prolog/Manifest
@@ -12,8 +12,10 @@ DIST swipl-7.5.15.tar.gz 16757246 BLAKE2B 5dcff6bb764cd73b24fc40122bbb1f22c57186
DIST swipl-7.6.0.tar.gz 16763479 BLAKE2B 6262f213a918bea1f2ea250df791db4b0675b084ed8b78b4164a31a4a028bb86dd64154dc77aa4f111f2fb43ba645044c232e7213c7d3d00cff4892d20cdfce1 SHA512 4c9a857bcb612361e8248a39616e07fe36d8b68e1099e00917320a0177b454bc13f89f32fee1d961a1facd46bef3814f717dbaf12ab4f00ca8ea313242feb8bf
DIST swipl-7.6.1.tar.gz 16764536 BLAKE2B a493b103d9d6206db5a6c895ec1ff6237a122dd611a79803218a46e5611812fcdcf794b887018d4f7bea4d03315581234f99e8cb1a57d11ca502454666b418c4 SHA512 60b6f37b7449941b31ea1ca20372dadcd27585611c8040bb9155fd0c2e3802c554039135e3a084ed56ff9b20842ee607dcaa425afe55421bba00ee1c6cd169a4
DIST swipl-7.6.2.tar.gz 16765119 BLAKE2B 242d093d7525aa9beeab28ca5cd10080490a93ecc18b62ff945b9d59266aa8bc31a66065b1742b76f336ee5af33994a3c41b0009665f2e29d83efa03fc5d3041 SHA512 9d93cdf44bbb9628cee42eae562ee945202ed0d454f9e433247a0b9b49eee070d3a76f7ceff002c4d13d15720e40e6860adc19581906b8b8ecaac3094192ab5a
+DIST swipl-7.6.3.tar.gz 16772590 BLAKE2B 644be801e290ec9d949a9b7462256a35e11cf9afd62d0b62c315e3620a3943809f58698a23f279454e00299f7b7f7b91e8d9694a139e8c424cb2f83a4efc7a52 SHA512 d84af1a565935af9934c6b75192bb2dd87388ee8fe793ade35d5549a95ec5eb83da6b10508766e795f88393fededea4ec7a3a0c2f0f685d96ab615e171d7d1f4
DIST swipl-7.7.2.tar.gz 16775518 BLAKE2B e29ffedfe0ca8c7f4e467fb506d8c17deadaecf867f3ab01dbce777d6b79186ab03ab81e416f0000d0ae423be6d29a3f8dc2492f82e59e9d2f8ad94617a152a8 SHA512 4db5fa3d44061e21fa6811d9b84b42cdc99d9fca4000c6d66fd37017be3bb138f2278a4685feb6698c8ecab643b865b5a015699889eb04aeabf233c5dfa106d7
DIST swipl-7.7.3.tar.gz 16779027 BLAKE2B f533eec9d75dd46b5cbe68b185d503d49aff96effa397648e61cf813bf0caa7bf50549d72301ec20b14fc42d25abd2cb566fe1b2b8b51a7e1c8e957db15fa084 SHA512 231bbbd12c7df4c0fd130ccda370cb8144b2e605895787aa83ff127f3ffa0c9bf016cca0c146ff8c3a42d9f0b32e4d7619f2f0eebbe37ec9e980c45c8ccffdc4
+DIST swipl-7.7.4.tar.gz 16787657 BLAKE2B fc9842170b9d9f60cf2e9ba52f64c9d074aaf64c463f287c3bd16009962099371492470392b7e68f60ec90e352ede7977c5a63919ec8e938e20892d1d43c8a78 SHA512 e12598a8193e112ec077a577b9a4e3129ae8dda27e1654dc135fdb68fd6d35bb2cb97d6e0f4f22c49813482fd3caed0f884c2433c87e1c51d21ad439164df01b
EBUILD swi-prolog-6.6.6.ebuild 2799 BLAKE2B 47c0d56dae0ce19be9efd09122ef8e6e3655abd3459cd25a9a0cf4734fbb132b8725c79775942da8cb2c5eb40bc35f4c0b5a39064a5e41387d4480379fd71435 SHA512 1d30fcb84653a0cdf7cf4f5a78898d5fb29f939095d19a21324a9587ee6ca98543ae16d564ff8880cdf99c6d5a091c2f0e5dc79074ceadc5a7cd3fe340609d22
EBUILD swi-prolog-7.2.3-r1.ebuild 3170 BLAKE2B ca7604653a23dbc9158e96e54684482fd1c82e6bea8f9753e73c91d46df95a105d70114c0aae8c86e8b9ef45debf97116755b4fc48ecdae95680045ae60035ba SHA512 fe35661ef51094ddf0aff61659f33de5be0252216b94f45e658215146dd53379881f7077c20ace1ef67b70ad9d7128ccd26e122392a1100ab8db195c9324867a
EBUILD swi-prolog-7.4.1.ebuild 3337 BLAKE2B 6ec047c27c5f76f8cf1fe29e6c8f45d051f1b7d565217af160a022d0b3b45ecd4c18506348ec2d1d19d498953185b22941814a05559b7fa20b3666f48ede932c SHA512 d3b2fb20a92a39d5b4927cc4e2056a1ba3c66978467050817e84cfe46d795989d7d64721bb3b64a8b632dfa359e308d60db7b2c83efc2298c8318ef6314f08e9
@@ -24,6 +26,8 @@ EBUILD swi-prolog-7.5.15.ebuild 3452 BLAKE2B 5496dbba5d067db9369099788c8faa8f5f1
EBUILD swi-prolog-7.6.0.ebuild 3392 BLAKE2B 77fca0aec35200f39f2dd60fccd13c9d6fbe78f14c03c0f57a5d42e9b280285b497e612d364352eb763850b38bc7af626172e76752211f195f2fa54f5d8157e9 SHA512 486bc74f0e77862452cf7bc63687cb1ba1395b9d10a2bb50dcb6334ad986d09153595a325703dc9413a2b22675aa838c66c94b5fe4ca582e1418701a31da002a
EBUILD swi-prolog-7.6.1.ebuild 3392 BLAKE2B 77fca0aec35200f39f2dd60fccd13c9d6fbe78f14c03c0f57a5d42e9b280285b497e612d364352eb763850b38bc7af626172e76752211f195f2fa54f5d8157e9 SHA512 486bc74f0e77862452cf7bc63687cb1ba1395b9d10a2bb50dcb6334ad986d09153595a325703dc9413a2b22675aa838c66c94b5fe4ca582e1418701a31da002a
EBUILD swi-prolog-7.6.2.ebuild 3392 BLAKE2B 77fca0aec35200f39f2dd60fccd13c9d6fbe78f14c03c0f57a5d42e9b280285b497e612d364352eb763850b38bc7af626172e76752211f195f2fa54f5d8157e9 SHA512 486bc74f0e77862452cf7bc63687cb1ba1395b9d10a2bb50dcb6334ad986d09153595a325703dc9413a2b22675aa838c66c94b5fe4ca582e1418701a31da002a
+EBUILD swi-prolog-7.6.3.ebuild 3392 BLAKE2B 77fca0aec35200f39f2dd60fccd13c9d6fbe78f14c03c0f57a5d42e9b280285b497e612d364352eb763850b38bc7af626172e76752211f195f2fa54f5d8157e9 SHA512 486bc74f0e77862452cf7bc63687cb1ba1395b9d10a2bb50dcb6334ad986d09153595a325703dc9413a2b22675aa838c66c94b5fe4ca582e1418701a31da002a
EBUILD swi-prolog-7.7.2.ebuild 3391 BLAKE2B 835abf471153da13183829a571d1e89b7aeedb4124c6442e5501a40ff0cce77d7efec22d9b272532172268c792378bf74696677da31d864fd33da4a58d24fc5f SHA512 43ae2aa636d09515efb8e25455b4ece4f3b5657a9d4deb651579843791014c04785c5279293f7fa04df39ba87d1e7b4eda786f4e455389cfed111c984a13dbc9
EBUILD swi-prolog-7.7.3.ebuild 3391 BLAKE2B 835abf471153da13183829a571d1e89b7aeedb4124c6442e5501a40ff0cce77d7efec22d9b272532172268c792378bf74696677da31d864fd33da4a58d24fc5f SHA512 43ae2aa636d09515efb8e25455b4ece4f3b5657a9d4deb651579843791014c04785c5279293f7fa04df39ba87d1e7b4eda786f4e455389cfed111c984a13dbc9
+EBUILD swi-prolog-7.7.4.ebuild 3391 BLAKE2B 835abf471153da13183829a571d1e89b7aeedb4124c6442e5501a40ff0cce77d7efec22d9b272532172268c792378bf74696677da31d864fd33da4a58d24fc5f SHA512 43ae2aa636d09515efb8e25455b4ece4f3b5657a9d4deb651579843791014c04785c5279293f7fa04df39ba87d1e7b4eda786f4e455389cfed111c984a13dbc9
MISC metadata.xml 367 BLAKE2B 07c7ff161f07b547325566650cd882c90dbe98ac5afc0015d68bc0338cebd678ac82c3a45edd3e4f7e613d5d493324899dc8e3b4ca448f447744f439e60458fd SHA512 bacbb17fc3518d3bf845d097d17dba772a745fd7343ab6e8c751a417a540c8c003f29b86c66374bee538d7a5d96ab95e67b1c619d47f80d0e332482daabee74a
diff --git a/dev-lang/swi-prolog/swi-prolog-7.6.3.ebuild b/dev-lang/swi-prolog/swi-prolog-7.6.3.ebuild
new file mode 100644
index 000000000000..ac17db45d196
--- /dev/null
+++ b/dev-lang/swi-prolog/swi-prolog-7.6.3.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils flag-o-matic java-pkg-opt-2 multilib
+
+PATCHSET_VER="0"
+
+DESCRIPTION="free, small, and standard compliant Prolog compiler"
+HOMEPAGE="http://www.swi-prolog.org/"
+SRC_URI="http://www.swi-prolog.org/download/stable/src/swipl-${PV}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="archive berkdb debug doc +gmp hardened java +libedit libressl minimal odbc pcre readline ssl static-libs test uuid zlib X"
+
+RDEPEND="sys-libs/ncurses:=
+ archive? ( app-arch/libarchive )
+ berkdb? ( >=sys-libs/db-4:= )
+ zlib? ( sys-libs/zlib )
+ odbc? ( dev-db/unixODBC )
+ pcre? ( dev-libs/libpcre )
+ readline? ( sys-libs/readline:= )
+ libedit? ( dev-libs/libedit )
+ gmp? ( dev-libs/gmp:0 )
+ ssl? (
+ !libressl? ( dev-libs/openssl:0 )
+ libressl? ( dev-libs/libressl )
+ )
+ java? ( >=virtual/jdk-1.7:= )
+ uuid? ( dev-libs/ossp-uuid )
+ X? (
+ virtual/jpeg:0
+ x11-libs/libX11
+ x11-libs/libXft
+ x11-libs/libXpm
+ x11-libs/libXt
+ x11-libs/libICE
+ x11-libs/libSM )"
+
+DEPEND="${RDEPEND}
+ X? ( x11-proto/xproto )
+ java? ( test? ( =dev-java/junit-3.8* ) )"
+
+S="${WORKDIR}/swipl-${PV}"
+
+src_prepare() {
+ EPATCH_FORCE=yes
+ EPATCH_SUFFIX=patch
+ if [[ -d "${WORKDIR}"/${PV} ]] ; then
+ epatch "${WORKDIR}"/${PV}
+ fi
+
+ if ! use uuid; then
+ mv packages/clib/uuid.pl packages/clib/uuid.pl.unused || die
+ fi
+
+ # OSX/Intel ld doesn't like an archive without table of contents
+ sed -i -e 's/-cru/-scru/' packages/nlp/libstemmer_c/Makefile.pl || die
+}
+
+src_configure() {
+ append-flags -fno-strict-aliasing
+ use ppc && append-flags -mno-altivec
+ use hardened && append-flags -fno-unit-at-a-time
+ use debug && append-flags -DO_DEBUG
+
+ # ARCH is used in the configure script to figure out host and target
+ # specific stuff
+ export ARCH=${CHOST}
+
+ export CC_FOR_BUILD=$(tc-getBUILD_CC)
+
+ cd "${S}"/src || die
+ econf \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ $(use_enable gmp) \
+ $(use_enable static-libs static) \
+ --enable-shared \
+ --enable-custom-flags COFLAGS="${CFLAGS}"
+
+ if ! use minimal ; then
+ local jpltestconf
+ if use java && use test ; then
+ jpltestconf="--with-junit=$(java-config --classpath junit)"
+ fi
+
+ cd "${S}/packages" || die
+ econf \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ $(use_with archive) \
+ $(use_with berkdb bdb ) \
+ $(use_with java jpl) \
+ ${jpltestconf} \
+ $(use_with libedit) \
+ $(use_with pcre) \
+ $(use_with odbc) \
+ $(use_with readline) \
+ $(use_with ssl) \
+ $(use_with X xpce) \
+ $(use_with zlib) \
+ COFLAGS='"${CFLAGS}"'
+ fi
+}
+
+src_compile() {
+ cd "${S}"/src || die
+ emake
+
+ if ! use minimal ; then
+ cd "${S}/packages" || die
+ emake
+ ./report-failed || die "Cannot report failed packages"
+ fi
+}
+
+src_test() {
+ cd "${S}/src" || die
+ emake check
+
+ if ! use minimal ; then
+ unset DISPLAY
+ cd "${S}/packages" || die
+ emake \
+ USE_PUBLIC_NETWORK_TESTS=false \
+ USE_ODBC_TESTS=false \
+ check
+ ./report-failed || die
+ fi
+}
+
+src_install() {
+ emake -C src DESTDIR="${D}" install
+
+ if ! use minimal ; then
+ emake -C packages DESTDIR="${D}" install
+ if use doc ; then
+ emake -C packages DESTDIR="${D}" html-install
+ fi
+ ./packages/report-failed || die "Cannot report failed packages"
+ fi
+
+ dodoc ReleaseNotes/relnotes-5.10 INSTALL README.md VERSION
+}
diff --git a/dev-lang/swi-prolog/swi-prolog-7.7.4.ebuild b/dev-lang/swi-prolog/swi-prolog-7.7.4.ebuild
new file mode 100644
index 000000000000..7aba5bdec8ae
--- /dev/null
+++ b/dev-lang/swi-prolog/swi-prolog-7.7.4.ebuild
@@ -0,0 +1,146 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils flag-o-matic java-pkg-opt-2 multilib
+
+PATCHSET_VER="0"
+
+DESCRIPTION="free, small, and standard compliant Prolog compiler"
+HOMEPAGE="http://www.swi-prolog.org/"
+SRC_URI="http://www.swi-prolog.org/download/devel/src/swipl-${PV}.tar.gz"
+
+LICENSE="BSD-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="archive berkdb debug doc +gmp hardened java +libedit libressl minimal odbc pcre readline ssl static-libs test uuid zlib X"
+
+RDEPEND="sys-libs/ncurses:=
+ archive? ( app-arch/libarchive )
+ berkdb? ( >=sys-libs/db-4:= )
+ zlib? ( sys-libs/zlib )
+ odbc? ( dev-db/unixODBC )
+ pcre? ( dev-libs/libpcre )
+ readline? ( sys-libs/readline:= )
+ libedit? ( dev-libs/libedit )
+ gmp? ( dev-libs/gmp:0 )
+ ssl? (
+ !libressl? ( dev-libs/openssl:0 )
+ libressl? ( dev-libs/libressl )
+ )
+ java? ( >=virtual/jdk-1.7:= )
+ uuid? ( dev-libs/ossp-uuid )
+ X? (
+ virtual/jpeg:0
+ x11-libs/libX11
+ x11-libs/libXft
+ x11-libs/libXpm
+ x11-libs/libXt
+ x11-libs/libICE
+ x11-libs/libSM )"
+
+DEPEND="${RDEPEND}
+ X? ( x11-proto/xproto )
+ java? ( test? ( =dev-java/junit-3.8* ) )"
+
+S="${WORKDIR}/swipl-${PV}"
+
+src_prepare() {
+ EPATCH_FORCE=yes
+ EPATCH_SUFFIX=patch
+ if [[ -d "${WORKDIR}"/${PV} ]] ; then
+ epatch "${WORKDIR}"/${PV}
+ fi
+
+ if ! use uuid; then
+ mv packages/clib/uuid.pl packages/clib/uuid.pl.unused || die
+ fi
+
+ # OSX/Intel ld doesn't like an archive without table of contents
+ sed -i -e 's/-cru/-scru/' packages/nlp/libstemmer_c/Makefile.pl || die
+}
+
+src_configure() {
+ append-flags -fno-strict-aliasing
+ use ppc && append-flags -mno-altivec
+ use hardened && append-flags -fno-unit-at-a-time
+ use debug && append-flags -DO_DEBUG
+
+ # ARCH is used in the configure script to figure out host and target
+ # specific stuff
+ export ARCH=${CHOST}
+
+ export CC_FOR_BUILD=$(tc-getBUILD_CC)
+
+ cd "${S}"/src || die
+ econf \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ $(use_enable gmp) \
+ $(use_enable static-libs static) \
+ --enable-shared \
+ --enable-custom-flags COFLAGS="${CFLAGS}"
+
+ if ! use minimal ; then
+ local jpltestconf
+ if use java && use test ; then
+ jpltestconf="--with-junit=$(java-config --classpath junit)"
+ fi
+
+ cd "${S}/packages" || die
+ econf \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ $(use_with archive) \
+ $(use_with berkdb bdb ) \
+ $(use_with java jpl) \
+ ${jpltestconf} \
+ $(use_with libedit) \
+ $(use_with pcre) \
+ $(use_with odbc) \
+ $(use_with readline) \
+ $(use_with ssl) \
+ $(use_with X xpce) \
+ $(use_with zlib) \
+ COFLAGS='"${CFLAGS}"'
+ fi
+}
+
+src_compile() {
+ cd "${S}"/src || die
+ emake
+
+ if ! use minimal ; then
+ cd "${S}/packages" || die
+ emake
+ ./report-failed || die "Cannot report failed packages"
+ fi
+}
+
+src_test() {
+ cd "${S}/src" || die
+ emake check
+
+ if ! use minimal ; then
+ unset DISPLAY
+ cd "${S}/packages" || die
+ emake \
+ USE_PUBLIC_NETWORK_TESTS=false \
+ USE_ODBC_TESTS=false \
+ check
+ ./report-failed || die
+ fi
+}
+
+src_install() {
+ emake -C src DESTDIR="${D}" install
+
+ if ! use minimal ; then
+ emake -C packages DESTDIR="${D}" install
+ if use doc ; then
+ emake -C packages DESTDIR="${D}" html-install
+ fi
+ ./packages/report-failed || die "Cannot report failed packages"
+ fi
+
+ dodoc ReleaseNotes/relnotes-5.10 INSTALL README.md VERSION
+}