Date: Friday, September 21, 2018 @ 02:01:39 Author: foutrelis Revision: 383801
archrelease: copy trunk to community-staging-x86_64 Added: crystal/repos/community-staging-x86_64/ crystal/repos/community-staging-x86_64/PKGBUILD (from rev 383800, crystal/trunk/PKGBUILD) crystal/repos/community-staging-x86_64/llvm7.patch (from rev 383800, crystal/trunk/llvm7.patch) -------------+ PKGBUILD | 86 +++++++++++++++++ llvm7.patch | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 367 insertions(+) Copied: crystal/repos/community-staging-x86_64/PKGBUILD (from rev 383800, crystal/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2018-09-21 02:01:39 UTC (rev 383801) @@ -0,0 +1,86 @@ +# Maintainer: Anatol Pomozov <anatol.pomo...@gmail.com> +# Contributor: Jonne Haß <m...@jhass.eu> + +pkgname=crystal +pkgver=0.26.1 +pkgrel=3 +pkgdesc='The Crystal Programming Language' +arch=(x86_64) +url='http://crystal-lang.org' +license=(Apache) +depends=(gc libatomic_ops pcre libevent llvm-libs) +makedepends=(libxml2 llvm crystal) # to compile version N we need crystal compiler of N-1 version +checkdepends=(libyaml libxml2 gmp inetutils git) +optdepends=('shards: crystal language package manager' + 'libyaml: For YAML support' + 'gmp: For BigInt support' + 'libxml2: For XML support') +source=(crystal-$pkgver.tar.gz::https://github.com/crystal-lang/crystal/archive/$pkgver.tar.gz + llvm7.patch + fix_build.patch::https://github.com/crystal-lang/crystal/commit/b697de03deed7647a7bebe0e0987cb660854bdac.patch + fix_openssl_11.patch::https://github.com/crystal-lang/crystal/commit/e7524159ef48fe47df914b3c0c1716c602a8bbd8.patch) +sha256sums=('b7c755a7d0f49f572ae5c08b8b0139fcb1c6862c9479dfae74f00e2c8424fcb0' + '8c0c5e2a33d3d9d74db7c27a8a6d7e9ddb5bac7d61490372b037cead4664f18a' + '4f42a13ade130495e683261c5c200112dbb3f56c125dbada7533717393c69138' + '6ce3967052f6ac7e6f0a738782369a375310b5c2650fe1ac95e77408d268e24a') + +prepare() { + cd $pkgname-$pkgver + sed -i 's|Please install shards: https://github.com/ysbaddaden/shards|Please install shards: pacman -S shards|' src/compiler/crystal/command.cr + + # https://github.com/crystal-lang/crystal/issues/6672 + patch -p1 < ../fix_build.patch + + # https://github.com/crystal-lang/crystal/pull/6738 + patch -p1 < ../fix_openssl_11.patch + + # https://github.com/crystal-lang/crystal/issues/6754 + patch -p1 < ../llvm7.patch +} + +build() { + cd $pkgname-$pkgver + + make release=1 \ + FLAGS="--release --no-debug" \ + CRYSTAL_PATH="$srcdir/$pkgname-$pkgver/src" \ + CRYSTAL_CONFIG_VERSION="$pkgver" \ + CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal" \ + CRYSTAL_CACHE_DIR="/tmp/crystal" + make docs CRYSTAL_CACHE_DIR="/tmp/crystal" +} + +check() { + cd $pkgname-$pkgver + return # tests require too much RAM, disable it temporary + + make spec CRYSTAL_PATH="$srcdir/$pkgname-$pkgver/src" \ + CRYSTAL_CONFIG_VERSION="$pkgver" \ + CRYSTAL_CACHE_DIR="/tmp/crystal" \ + PATH=".build:$PATH" +} + +package() { + cd $pkgname-$pkgver + + # /usr/bin/crystal compiled executable + # /usr/lib/crystal/ compiler src & core libs + # /usr/share/doc/crystal/api api docs + # /usr/share/doc/crystal/samples/ samples + + install -Dm755 ".build/crystal" "$pkgdir/usr/bin/crystal" + + install -dm755 "$pkgdir/usr/lib" "$pkgdir/usr/share/man/man1" + cp -r src "$pkgdir/usr/lib/crystal" + + install -dm755 "$pkgdir/usr/share/doc/crystal" + cp -r docs "$pkgdir/usr/share/doc/crystal/api" + cp -r samples "$pkgdir/usr/share/doc/crystal/" + + install -Dm644 man/crystal.1 "$pkgdir/usr/share/man/man1/" + + install -Dm644 etc/completion.bash "$pkgdir/usr/share/bash-completion/completions/crystal" + install -Dm644 etc/completion.zsh "$pkgdir/usr/share/zsh/site-functions/_crystal" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} Copied: crystal/repos/community-staging-x86_64/llvm7.patch (from rev 383800, crystal/trunk/llvm7.patch) =================================================================== --- community-staging-x86_64/llvm7.patch (rev 0) +++ community-staging-x86_64/llvm7.patch 2018-09-21 02:01:39 UTC (rev 383801) @@ -0,0 +1,281 @@ +From 96380373229306a27eda49f5bfe67538a2589359 Mon Sep 17 00:00:00 2001 +From: Evangelos Foutras <evange...@foutrelis.com> +Date: Fri, 21 Sep 2018 04:38:46 +0300 +Subject: [PATCH] Fix building with LLVM 7 (#6754) + +Similarly to how LLVM 6 support was added in commit 249a2ed4dae7: + +- Rename functions that conflict with those added to llvm-c/DebugInfo.h + in LLVM 7 +- Pass a reference to a module to the bitcode writer (ref LLVM r325155) +--- + src/llvm/ext/llvm_ext.cc | 36 ++++++++++++++++++++---------------- + src/llvm/lib_llvm.cr | 1 + + src/llvm/lib_llvm_ext.cr | 30 +++++++++++++++--------------- + 3 files changed, 36 insertions(+), 31 deletions(-) + +diff --git a/src/llvm/ext/llvm_ext.cc b/src/llvm/ext/llvm_ext.cc +index e6c5744bf..12746f2d6 100644 +--- a/src/llvm/ext/llvm_ext.cc ++++ b/src/llvm/ext/llvm_ext.cc +@@ -86,7 +86,7 @@ LLVMMetadataRef LLVMDIBuilderCreateCompileUnit2(DIBuilderRef Dref, unsigned Lang + #endif + } + +-LLVMMetadataRef LLVMDIBuilderCreateFunction( ++LLVMMetadataRef LLVMDIBuilderCreateFunction2( + DIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name, + const char *LinkageName, LLVMMetadataRef File, unsigned Line, + LLVMMetadataRef CompositeType, bool IsLocalToUnit, bool IsDefinition, +@@ -106,7 +106,7 @@ LLVMMetadataRef LLVMDIBuilderCreateFunction( + return wrap(Sub); + } + +-LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(DIBuilderRef Dref, ++LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock2(DIBuilderRef Dref, + LLVMMetadataRef Scope, + LLVMMetadataRef File, + unsigned Line, +@@ -115,7 +115,7 @@ LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(DIBuilderRef Dref, + unwrapDI<DIFile>(File), Line, Column)); + } + +-LLVMMetadataRef LLVMDIBuilderCreateBasicType(DIBuilderRef Dref, ++LLVMMetadataRef LLVMDIBuilderCreateBasicType2(DIBuilderRef Dref, + const char *Name, + uint64_t SizeInBits, + uint64_t AlignInBits, +@@ -127,7 +127,7 @@ LLVMMetadataRef LLVMDIBuilderCreateBasicType(DIBuilderRef Dref, + #endif + } + +-LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(DIBuilderRef Dref, ++LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray2(DIBuilderRef Dref, + LLVMMetadataRef *Data, + unsigned Length) { + Metadata **DataValue = unwrap(Data); +@@ -136,7 +136,7 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(DIBuilderRef Dref, + .get()); + } + +-LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(DIBuilderRef Dref, ++LLVMMetadataRef LLVMDIBuilderGetOrCreateArray2(DIBuilderRef Dref, + LLVMMetadataRef *Data, + unsigned Length) { + Metadata **DataValue = unwrap(Data); +@@ -145,13 +145,13 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(DIBuilderRef Dref, + } + + LLVMMetadataRef +-LLVMDIBuilderCreateSubroutineType(DIBuilderRef Dref, LLVMMetadataRef File, ++LLVMDIBuilderCreateSubroutineType2(DIBuilderRef Dref, LLVMMetadataRef File, + LLVMMetadataRef ParameterTypes) { + DISubroutineType *CT = Dref->createSubroutineType(DITypeRefArray(unwrap<MDTuple>(ParameterTypes))); + return wrap(CT); + } + +-LLVMMetadataRef LLVMDIBuilderCreateAutoVariable( ++LLVMMetadataRef LLVMDIBuilderCreateAutoVariable2( + DIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name, + LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, + int AlwaysPreserve, +@@ -173,7 +173,7 @@ LLVMMetadataRef LLVMDIBuilderCreateAutoVariable( + return wrap(V); + } + +-LLVMMetadataRef LLVMDIBuilderCreateParameterVariable( ++LLVMMetadataRef LLVMDIBuilderCreateParameterVariable2( + DIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name, + unsigned ArgNo, LLVMMetadataRef File, unsigned Line, + LLVMMetadataRef Ty, int AlwaysPreserve, +@@ -189,7 +189,7 @@ LLVMMetadataRef LLVMDIBuilderCreateParameterVariable( + return wrap(V); + } + +-LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref, ++LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd2(DIBuilderRef Dref, + LLVMValueRef Storage, + LLVMMetadataRef VarInfo, + LLVMMetadataRef Expr, +@@ -203,12 +203,12 @@ LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(DIBuilderRef Dref, + return wrap(Instr); + } + +-LLVMMetadataRef LLVMDIBuilderCreateExpression(DIBuilderRef Dref, int64_t *Addr, ++LLVMMetadataRef LLVMDIBuilderCreateExpression2(DIBuilderRef Dref, int64_t *Addr, + size_t Length) { + return wrap(Dref->createExpression(ArrayRef<int64_t>(Addr, Length))); + } + +-LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( ++LLVMMetadataRef LLVMDIBuilderCreateEnumerationType2( + DIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name, + LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits, + uint64_t AlignInBits, LLVMMetadataRef Elements, +@@ -227,7 +227,7 @@ LLVMMetadataRef LLVMDIBuilderCreateEnumerator(DIBuilderRef Dref, + } + + LLVMMetadataRef +-LLVMDIBuilderCreateStructType(DIBuilderRef Dref, ++LLVMDIBuilderCreateStructType2(DIBuilderRef Dref, + LLVMMetadataRef Scope, + const char *Name, + LLVMMetadataRef File, +@@ -249,7 +249,7 @@ LLVMDIBuilderCreateStructType(DIBuilderRef Dref, + } + + LLVMMetadataRef +-LLVMDIBuilderCreateReplaceableCompositeType(DIBuilderRef Dref, ++LLVMDIBuilderCreateReplaceableCompositeType2(DIBuilderRef Dref, + LLVMMetadataRef Scope, + const char *Name, + LLVMMetadataRef File, +@@ -276,7 +276,7 @@ LLVMDIBuilderReplaceTemporary(DIBuilderRef Dref, + } + + LLVMMetadataRef +-LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, LLVMMetadataRef Scope, ++LLVMDIBuilderCreateMemberType2(DIBuilderRef Dref, LLVMMetadataRef Scope, + const char *Name, LLVMMetadataRef File, + unsigned Line, uint64_t SizeInBits, + uint64_t AlignInBits, uint64_t OffsetInBits, +@@ -292,7 +292,7 @@ LLVMDIBuilderCreateMemberType(DIBuilderRef Dref, LLVMMetadataRef Scope, + return wrap(DT); + } + +-LLVMMetadataRef LLVMDIBuilderCreatePointerType(DIBuilderRef Dref, ++LLVMMetadataRef LLVMDIBuilderCreatePointerType2(DIBuilderRef Dref, + LLVMMetadataRef PointeeType, + uint64_t SizeInBits, + uint64_t AlignInBits, +@@ -306,7 +306,7 @@ LLVMMetadataRef LLVMDIBuilderCreatePointerType(DIBuilderRef Dref, + return wrap(T); + } + +-LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef C, LLVMMetadataRef *MDs, ++LLVMMetadataRef LLVMTemporaryMDNode2(LLVMContextRef C, LLVMMetadataRef *MDs, + unsigned Count) { + return wrap(MDTuple::getTemporary(*unwrap(C), + ArrayRef<Metadata *>(unwrap(MDs), Count)) +@@ -440,8 +440,12 @@ void LLVMWriteBitcodeWithSummaryToFile(LLVMModuleRef mref, const char *File) { + if (EC) return; + + llvm::ModuleSummaryIndex moduleSummaryIndex = llvm::buildModuleSummaryIndex(*m, nullptr, nullptr); ++#if LLVM_VERSION_GE(7, 0) ++ llvm::WriteBitcodeToFile(*m, OS, true, &moduleSummaryIndex, true); ++#else + llvm::WriteBitcodeToFile(m, OS, true, &moduleSummaryIndex, true); + #endif ++#endif + } + + } +diff --git a/src/llvm/lib_llvm.cr b/src/llvm/lib_llvm.cr +index a1ff03996..07e2f1d71 100644 +--- a/src/llvm/lib_llvm.cr ++++ b/src/llvm/lib_llvm.cr +@@ -33,6 +33,7 @@ end + + {% begin %} + lib LibLLVM ++ IS_70 = {{LibLLVM::VERSION.starts_with?("7.0")}} + IS_60 = {{LibLLVM::VERSION.starts_with?("6.0")}} + IS_50 = {{LibLLVM::VERSION.starts_with?("5.0")}} + IS_40 = {{LibLLVM::VERSION.starts_with?("4.0")}} +diff --git a/src/llvm/lib_llvm_ext.cr b/src/llvm/lib_llvm_ext.cr +index 3c2998ee3..09e4a7e48 100644 +--- a/src/llvm/lib_llvm_ext.cr ++++ b/src/llvm/lib_llvm_ext.cr +@@ -13,7 +13,7 @@ lib LibLLVMExt + fun create_di_builder = LLVMNewDIBuilder(LibLLVM::ModuleRef) : DIBuilder + fun di_builder_finalize = LLVMDIBuilderFinalize(DIBuilder) + +- fun di_builder_create_function = LLVMDIBuilderCreateFunction( ++ fun di_builder_create_function = LLVMDIBuilderCreateFunction2( + builder : DIBuilder, scope : Metadata, name : Char*, + linkage_name : Char*, file : Metadata, line : UInt, + composite_type : Metadata, is_local_to_unit : Bool, is_definition : Bool, +@@ -27,19 +27,19 @@ lib LibLLVMExt + producer : Char*, + optimized : Int, flags : Char*, + runtime_version : UInt) : Metadata +- fun di_builder_create_lexical_block = LLVMDIBuilderCreateLexicalBlock(builder : DIBuilder, ++ fun di_builder_create_lexical_block = LLVMDIBuilderCreateLexicalBlock2(builder : DIBuilder, + scope : Metadata, + file : Metadata, + line : Int, + column : Int) : Metadata + +- fun di_builder_create_basic_type = LLVMDIBuilderCreateBasicType(builder : DIBuilder, ++ fun di_builder_create_basic_type = LLVMDIBuilderCreateBasicType2(builder : DIBuilder, + name : Char*, + size_in_bits : UInt64, + align_in_bits : UInt64, + encoding : UInt) : Metadata + +- fun di_builder_create_auto_variable = LLVMDIBuilderCreateAutoVariable(builder : DIBuilder, ++ fun di_builder_create_auto_variable = LLVMDIBuilderCreateAutoVariable2(builder : DIBuilder, + scope : Metadata, + name : Char*, + file : Metadata, line : UInt, +@@ -48,46 +48,46 @@ lib LibLLVMExt + flags : LLVM::DIFlags, + align_in_bits : UInt32) : Metadata + +- fun di_builder_create_parameter_variable = LLVMDIBuilderCreateParameterVariable(builder : DIBuilder, ++ fun di_builder_create_parameter_variable = LLVMDIBuilderCreateParameterVariable2(builder : DIBuilder, + scope : Metadata, + name : Char*, arg_no : UInt, + file : Metadata, line : UInt, type : Metadata, + always_preserve : Int, flags : LLVM::DIFlags) : Metadata + +- fun di_builder_insert_declare_at_end = LLVMDIBuilderInsertDeclareAtEnd(builder : DIBuilder, ++ fun di_builder_insert_declare_at_end = LLVMDIBuilderInsertDeclareAtEnd2(builder : DIBuilder, + storage : LibLLVM::ValueRef, + var_info : Metadata, + expr : Metadata, + dl : LibLLVM::ValueRef, + block : LibLLVM::BasicBlockRef) : LibLLVM::ValueRef + +- fun di_builder_create_expression = LLVMDIBuilderCreateExpression(builder : DIBuilder, ++ fun di_builder_create_expression = LLVMDIBuilderCreateExpression2(builder : DIBuilder, + addr : Int64*, length : SizeT) : Metadata + +- fun di_builder_get_or_create_array = LLVMDIBuilderGetOrCreateArray(builder : DIBuilder, data : Metadata*, length : SizeT) : Metadata ++ fun di_builder_get_or_create_array = LLVMDIBuilderGetOrCreateArray2(builder : DIBuilder, data : Metadata*, length : SizeT) : Metadata + fun di_builder_create_enumerator = LLVMDIBuilderCreateEnumerator(builder : DIBuilder, name : Char*, value : Int64) : Metadata +- fun di_builder_create_enumeration_type = LLVMDIBuilderCreateEnumerationType(builder : DIBuilder, ++ fun di_builder_create_enumeration_type = LLVMDIBuilderCreateEnumerationType2(builder : DIBuilder, + scope : Metadata, name : Char*, file : Metadata, line_number : UInt, + size_in_bits : UInt64, align_in_bits : UInt64, elements : Metadata, underlying_type : Metadata) : Metadata + +- fun di_builder_get_or_create_type_array = LLVMDIBuilderGetOrCreateTypeArray(builder : DIBuilder, data : Metadata*, length : SizeT) : Metadata +- fun di_builder_create_subroutine_type = LLVMDIBuilderCreateSubroutineType(builder : DIBuilder, file : Metadata, parameter_types : Metadata) : Metadata ++ fun di_builder_get_or_create_type_array = LLVMDIBuilderGetOrCreateTypeArray2(builder : DIBuilder, data : Metadata*, length : SizeT) : Metadata ++ fun di_builder_create_subroutine_type = LLVMDIBuilderCreateSubroutineType2(builder : DIBuilder, file : Metadata, parameter_types : Metadata) : Metadata + +- fun di_builder_create_struct_type = LLVMDIBuilderCreateStructType(builder : DIBuilder, ++ fun di_builder_create_struct_type = LLVMDIBuilderCreateStructType2(builder : DIBuilder, + scope : Metadata, name : Char*, file : Metadata, line : UInt, size_in_bits : UInt64, + align_in_bits : UInt64, flags : LLVM::DIFlags, derived_from : Metadata, element_types : Metadata) : Metadata + +- fun di_builder_create_member_type = LLVMDIBuilderCreateMemberType(builder : DIBuilder, ++ fun di_builder_create_member_type = LLVMDIBuilderCreateMemberType2(builder : DIBuilder, + scope : Metadata, name : Char*, file : Metadata, line : UInt, size_in_bits : UInt64, + align_in_bits : UInt64, offset_in_bits : UInt64, flags : LLVM::DIFlags, ty : Metadata) : Metadata + +- fun di_builder_create_pointer_type = LLVMDIBuilderCreatePointerType(builder : DIBuilder, ++ fun di_builder_create_pointer_type = LLVMDIBuilderCreatePointerType2(builder : DIBuilder, + pointee_type : Metadata, + size_in_bits : UInt64, + align_in_bits : UInt64, + name : Char*) : Metadata + +- fun di_builder_create_replaceable_composite_type = LLVMDIBuilderCreateReplaceableCompositeType(builder : DIBuilder, ++ fun di_builder_create_replaceable_composite_type = LLVMDIBuilderCreateReplaceableCompositeType2(builder : DIBuilder, + scope : Metadata, + name : Char*, + file : Metadata, +-- +2.19.0 +