diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index e6403c6..8b4115b 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -9,19 +9,18 @@ url='https://github.com/socketry/falcon' license=(MIT) depends=(ruby-async ruby-async-container ruby-async-http ruby-async-http ruby-async-http-cache ruby-async-io ruby-build-environment ruby-localhost ruby-process-metrics ruby-protocol-rack - ruby-samovar) + ruby-rackup ruby-samovar) checkdepends=(ruby-async-process ruby-async-rspec ruby-async-websocket ruby-bake ruby-covered ruby-rspec ruby-bake-test ruby-bake-test-external ruby-puma) options=(!emptydirs) source=(https://github.com/socketry/falcon/archive/v$pkgver/$pkgname-$pkgver.tar.gz - https://github.com/socketry/falcon/commit/e93d153d53faf42710d7a2890425b6b77e188914.patch) + ruby-falcon-0.42.3-ruby-rack-3.patch) sha256sums=('d43ce8a64d0c95e5d783738142374b11586e51cbe6aea0da3cb6d4be47e2c7d5' - '3238b59daf1c7c62a59c0f86188e73745252be962098d7cb67655ca083577113') + 'adb97691f4820748aceddce49dfaf5b674825fa991c2f4d9d101423e6d4a31bd') prepare() { cd falcon-$pkgver - # Revert for openssl < 3.0 support - patch -Rp1 -i ../e93d153d53faf42710d7a2890425b6b77e188914.patch + patch -Np1 -i ../ruby-falcon-0.42.3-ruby-rack-3.patch sed -r -e 's|~>|>=|g' -e '/signing_key/d' -i falcon.gemspec sed -i '/bake-gem/d;/bake-modernize/d;/bake-github-pages/d;/utopia-project/d;/ruby-prof/d' gems.rb } diff --git a/trunk/ruby-falcon-0.42.3-ruby-rack-3.patch b/trunk/ruby-falcon-0.42.3-ruby-rack-3.patch new file mode 100644 index 0000000..ab4249b --- /dev/null +++ b/trunk/ruby-falcon-0.42.3-ruby-rack-3.patch @@ -0,0 +1,178 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Williams +Date: Mon, 31 Oct 2022 13:28:47 +1300 +Subject: [PATCH 1/2] Update for compatibility rackup gem. (#193) + +(cherry picked from commit a0e70287ba5168545cab00b980c01a1a6fa0f5ac) + + Conflicts: + examples/streaming/gems.rb +--- + config/external.yaml | 2 +- + gems.rb | 2 ++ + spec/rack/handler/falcon_spec.rb | 6 +++--- + spec/rack/handler/shared_examples.rb | 3 ++- + 4 files changed, 8 insertions(+), 5 deletions(-) + +diff --git a/config/external.yaml b/config/external.yaml +index 9689e0e..4e7db75 100644 +--- a/config/external.yaml ++++ b/config/external.yaml +@@ -1,3 +1,3 @@ + async-websocket: + url: https://github.com/socketry/async-websocket.git +- command: bundle exec rspec ++ command: bundle exec sus +diff --git a/gems.rb b/gems.rb +index 871938f..5686201 100644 +--- a/gems.rb ++++ b/gems.rb +@@ -27,4 +27,6 @@ group :test do + gem 'puma' + gem 'bake-test' + gem 'bake-test-external' ++ ++ gem "rackup" + end +diff --git a/spec/rack/handler/falcon_spec.rb b/spec/rack/handler/falcon_spec.rb +index 2e245f4..a33d1b5 100644 +--- a/spec/rack/handler/falcon_spec.rb ++++ b/spec/rack/handler/falcon_spec.rb +@@ -23,13 +23,13 @@ + require_relative 'shared_examples' + require 'rack/handler/falcon' + +-RSpec.describe Rack::Handler::Falcon do +- it_behaves_like Rack::Handler, 'falcon' ++RSpec.describe Rackup::Handler::Falcon do ++ it_behaves_like Rackup::Handler, 'falcon' + + let(:app) {lambda {|env| [200, {}, ["Hello World"]]}} + + it "can start and stop server" do +- Rack::Handler::Falcon.run(app) do |server| ++ Rackup::Handler::Falcon.run(app) do |server| + server.stop + end + end +diff --git a/spec/rack/handler/shared_examples.rb b/spec/rack/handler/shared_examples.rb +index 8ae741b..9baeac8 100644 +--- a/spec/rack/handler/shared_examples.rb ++++ b/spec/rack/handler/shared_examples.rb +@@ -24,8 +24,9 @@ require 'falcon/server' + require 'async/http/endpoint' + require 'async/http/client' + require 'async/process' ++require 'rackup/handler' + +-RSpec.shared_examples_for Rack::Handler do |server_name| ++RSpec.shared_examples_for Rackup::Handler do |server_name| + include_context Async::RSpec::Reactor + + let(:config_path) {File.join(__dir__, "config.ru")} +-- +2.39.2 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Williams +Date: Fri, 27 Jan 2023 14:31:33 -0800 +Subject: [PATCH 2/2] Compatibility with rackup gem. (#201) + +Prevents "Rack::Handler is deprecated and replaced by Rackup::Handler" warning. + +(cherry picked from commit a0df3a03252408c9f323b5e189b204435b01af82) +--- + lib/rackup/handler/falcon.rb | 80 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 80 insertions(+) + create mode 100644 lib/rackup/handler/falcon.rb + +diff --git a/lib/rackup/handler/falcon.rb b/lib/rackup/handler/falcon.rb +new file mode 100644 +index 0000000..5b855fa +--- /dev/null ++++ b/lib/rackup/handler/falcon.rb +@@ -0,0 +1,80 @@ ++# frozen_string_literal: true ++ ++require 'rackup/handler' ++ ++require_relative '../../falcon' ++ ++require 'kernel/sync' ++require 'async/io/host_endpoint' ++require 'async/io/notification' ++ ++module Rackup ++ module Handler ++ # The falcon adaptor for the `rackup` executable. ++ class Falcon ++ # The default scheme. ++ SCHEME = "http" ++ ++ # Generate an endpoint for the given `rackup` options. ++ # @returns [Async::IO::Endpoint] ++ def self.endpoint_for(**options) ++ host = options[:Host] || 'localhost' ++ port = Integer(options[:Port] || 9292) ++ ++ return Async::IO::Endpoint.tcp(host, port) ++ end ++ ++ # Run the specified app using the given options: ++ # @parameter app [Object] The rack middleware. ++ def self.run(app, **options) ++ app = ::Protocol::Rack::Adapter.new(app) ++ ++ Sync do |task| ++ endpoint = endpoint_for(**options) ++ server = ::Falcon::Server.new(app, endpoint, protocol: Async::HTTP::Protocol::HTTP1, scheme: SCHEME) ++ ++ server_task = task.async do ++ server.run.each(&:wait) ++ end ++ ++ wrapper = self.new(server, task) ++ ++ yield wrapper if block_given? ++ ++ server_task.wait ++ ensure ++ server_task.stop ++ wrapper.close ++ end ++ end ++ ++ def initialize(server, task) ++ @server = server ++ @task = task ++ ++ @notification = Async::IO::Notification.new ++ ++ @waiter = @task.async(transient: true) do ++ @notification.wait ++ ++ @task&.stop ++ @task = nil ++ end ++ end ++ ++ def stop ++ @notification&.signal ++ end ++ ++ def close ++ @notification&.close ++ @notification = nil ++ ++ @waiter&.stop ++ @waiter = nil ++ end ++ end ++ ++ register :falcon, Falcon ++ end ++end +-- +2.39.2 +