[arch-commits] Commit in crystal/repos/community-x86_64 (3 files)
Evangelos Foutras
foutrelis at archlinux.org
Mon Aug 12 15:39:16 UTC 2019
Date: Monday, August 12, 2019 @ 15:39:16
Author: foutrelis
Revision: 499026
archrelease: copy trunk to community-x86_64
Added:
crystal/repos/community-x86_64/PKGBUILD
(from rev 499025, crystal/trunk/PKGBUILD)
crystal/repos/community-x86_64/libevent-2.1.11.patch
(from rev 499025, crystal/trunk/libevent-2.1.11.patch)
Deleted:
crystal/repos/community-x86_64/PKGBUILD
-----------------------+
PKGBUILD | 147 ++++++++++++++++++++++++------------------------
libevent-2.1.11.patch | 61 +++++++++++++++++++
2 files changed, 137 insertions(+), 71 deletions(-)
Deleted: PKGBUILD
===================================================================
--- PKGBUILD 2019-08-12 15:39:11 UTC (rev 499025)
+++ PKGBUILD 2019-08-12 15:39:16 UTC (rev 499026)
@@ -1,71 +0,0 @@
-# Maintainer: Anatol Pomozov <anatol.pomozov at gmail.com>
-# Contributor: Jonne Haß <me at jhass.eu>
-
-pkgname=crystal
-pkgver=0.30.0
-pkgrel=3
-pkgdesc='The Crystal Programming Language'
-arch=(x86_64)
-url='https://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)
-sha256sums=('fc884970089e382344540676a9c5aa4f369c9a0f45d1858e079b4ce26878164a')
-
-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
-}
-
-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-x86_64/PKGBUILD (from rev 499025, crystal/trunk/PKGBUILD)
===================================================================
--- PKGBUILD (rev 0)
+++ PKGBUILD 2019-08-12 15:39:16 UTC (rev 499026)
@@ -0,0 +1,76 @@
+# Maintainer: Anatol Pomozov <anatol.pomozov at gmail.com>
+# Contributor: Jonne Haß <me at jhass.eu>
+
+pkgname=crystal
+pkgver=0.30.0
+pkgrel=4
+pkgdesc='The Crystal Programming Language'
+arch=(x86_64)
+url='https://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
+ libevent-2.1.11.patch)
+sha256sums=('fc884970089e382344540676a9c5aa4f369c9a0f45d1858e079b4ce26878164a'
+ '3917a15399078079b6b8d78f418f4dbc8dcfd94b8a39f7b083d6075b441a5adc')
+
+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/8044
+ patch -Np1 -i ../libevent-2.1.11.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-x86_64/libevent-2.1.11.patch (from rev 499025, crystal/trunk/libevent-2.1.11.patch)
===================================================================
--- libevent-2.1.11.patch (rev 0)
+++ libevent-2.1.11.patch 2019-08-12 15:39:16 UTC (rev 499026)
@@ -0,0 +1,61 @@
+From 284fb1e35abce2ecbebe41b3d6a78bf757145b9b Mon Sep 17 00:00:00 2001
+From: Juan Wajnerman <jwajnerman at manas.com.ar>
+Date: Thu, 8 Aug 2019 08:23:26 -0300
+Subject: [PATCH] Don't resume fibers directly from event loop callbacks (fixes
+ #8044). (#8058)
+
+This is required to enable compatibility with libevent 2.1.11, because
+a warning is now raised if a `fork` is executed from within the event loop (https://github.com/libevent/libevent/commit/497ef904d544ac51de43934549dbeccce8e6e8f8).
+Since most Crystal code actually runs from within the event loop (from libevent point of view)
+the solution is enqueue the fibers and resume them outside the call to `event_base_loop`.
+---
+ src/crystal/event_loop.cr | 9 +++++++--
+ src/io/evented.cr | 4 ++--
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/src/crystal/event_loop.cr b/src/crystal/event_loop.cr
+index 9d8cc2812a..a4726b16d4 100644
+--- a/src/crystal/event_loop.cr
++++ b/src/crystal/event_loop.cr
+@@ -13,12 +13,17 @@ module Crystal::EventLoop
+ end
+
+ private def self.loop_fiber
+- @@loop_fiber ||= Fiber.new { @@eb.run_loop }
++ @@loop_fiber ||= Fiber.new do
++ loop do
++ @@eb.run_once
++ Crystal::Scheduler.reschedule
++ end
++ end
+ end
+
+ def self.create_resume_event(fiber)
+ @@eb.new_event(-1, LibEvent2::EventFlags::None, fiber) do |s, flags, data|
+- data.as(Fiber).resume
++ Crystal::Scheduler.enqueue data.as(Fiber)
+ end
+ end
+
+diff --git a/src/io/evented.cr b/src/io/evented.cr
+index ae2895c571..deca61cd87 100644
+--- a/src/io/evented.cr
++++ b/src/io/evented.cr
+@@ -99,7 +99,7 @@ module IO::Evented
+ @read_timed_out = timed_out
+
+ if reader = @readers.try &.shift?
+- reader.resume
++ Crystal::Scheduler.enqueue reader
+ end
+ end
+
+@@ -108,7 +108,7 @@ module IO::Evented
+ @write_timed_out = timed_out
+
+ if writer = @writers.try &.shift?
+- writer.resume
++ Crystal::Scheduler.enqueue writer
+ end
+ end
+
More information about the arch-commits
mailing list