diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..67c9d6a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +SOURCES/actioncable-5.0.1-app.tgz +SOURCES/actioncable-5.0.1-tests.tgz +SOURCES/actioncable-5.0.1.gem diff --git a/.rh-ror50-rubygem-actioncable.metadata b/.rh-ror50-rubygem-actioncable.metadata new file mode 100644 index 0000000..f4b988b --- /dev/null +++ b/.rh-ror50-rubygem-actioncable.metadata @@ -0,0 +1,3 @@ +810a0b436972e0a3fa0c34f861588080f25c7f28 SOURCES/actioncable-5.0.1-app.tgz +9d75afded1b581cc280afe28fc675557ab6d30eb SOURCES/actioncable-5.0.1-tests.tgz +51a4112d989f9658c995ac0ef93a9d8dc9e7d1ff SOURCES/actioncable-5.0.1.gem diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/recompile_js.rb b/SOURCES/recompile_js.rb new file mode 100644 index 0000000..aef6b27 --- /dev/null +++ b/SOURCES/recompile_js.rb @@ -0,0 +1,37 @@ + +require 'pathname' +require 'sprockets' +require 'coffee-script' +require 'action_cable' + +dir = File.dirname(__FILE__) + +root_path = Pathname.new(dir) +destination_path = root_path.join("lib/assets/compiled") + +puts 'Compiling Action Cable assets...' + +precompile_list = %w(action_cable.js) + +environment = Sprockets::Environment.new + +environment.gzip = false +Pathname.glob(root_path.join("app/assets/*/")) do |subdir| + environment.append_path subdir +end + +compile_path = root_path.join("tmp/sprockets") +compile_path.rmtree if compile_path.exist? +compile_path.mkpath + +manifest = Sprockets::Manifest.new(environment.index, compile_path) +manifest.compile(precompile_list) + +destination_path.rmtree if destination_path.exist? + +manifest.assets.each do |path, fingerprint_path| + destination_path.join(path).dirname.mkpath + FileUtils.cp(compile_path.join(fingerprint_path), destination_path.join(path)) +end + +puts 'Done' diff --git a/SPECS/rubygem-actioncable.spec b/SPECS/rubygem-actioncable.spec new file mode 100644 index 0000000..e58f80a --- /dev/null +++ b/SPECS/rubygem-actioncable.spec @@ -0,0 +1,163 @@ +%{?scl:%scl_package rubygem-%{gem_name}} +%{!?scl:%global pkg_name %{name}} + +# Generated from actioncable-5.0.0.rc2.gem by gem2rpm -*- rpm-spec -*- +%global gem_name actioncable + +# Disabling JS recompilation might significantly reduce the amount of +# build dependencies. +%global recompile_js 1 + +# Fallback to rh-nodejs4 rh-nodejs4-scldevel is probably not available in +# the buildroot. +%{?scl:%{!?scl_nodejs:%global scl_nodejs rh-nodejs4}} +%{?scl:%{!?scl_prefix_nodejs:%global scl_prefix_nodejs %{scl_nodejs}-}} + +Name: %{?scl_prefix}rubygem-%{gem_name} +Version: 5.0.1 +Release: 1%{?dist} +Summary: WebSocket framework for Rails +Group: Development/Languages +License: MIT +URL: http://rubyonrails.org +Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem +# git clone https://github.com/rails/rails.git && cd rails/actioncable +# git checkout v5.0.1 && tar czvf actioncable-5.0.1-tests.tgz test/ +Source1: %{gem_name}-%{version}-tests.tgz +# The source code of pregenerated JS files. +# git clone https://github.com/rails/rails.git && cd rails/actioncable +# git checkout v5.0.1 && tar czvf actioncable-5.0.1-app.tgz app/ Rakefile +Source2: %{gem_name}-%{version}-app.tgz +# Recompile with script extracted from +# https://github.com/rails/rails/blob/71d406697266fc2525706361b86aeb85183fe4c7/actioncable/Rakefile +Source3: recompile_js.rb +Requires: %{?scl_prefix_ruby}ruby(release) +Requires: %{?scl_prefix_ruby}ruby(rubygems) +Requires: %{?scl_prefix}rubygem(actionpack) = %{version} +Requires: %{?scl_prefix}rubygem(nio4r) +Requires: %{?scl_prefix}rubygem(websocket-driver) +BuildRequires: %{?scl_prefix_ruby}ruby(release) +BuildRequires: %{?scl_prefix_ruby}ruby(rubygems) +BuildRequires: %{?scl_prefix_ruby}ruby +BuildRequires: %{?scl_prefix_ruby}rubygems-devel +BuildRequires: %{?scl_prefix}rubygem(actionpack) = %{version} +BuildRequires: %{?scl_prefix}rubygem(mocha) +BuildRequires: %{?scl_prefix}rubygem(nio4r) +BuildRequires: %{?scl_prefix}rubygem(websocket-driver) +%if 0%{?recompile_js} > 0 +BuildRequires: %{?scl_prefix}rubygem(coffee-script) +BuildRequires: %{?scl_prefix}rubygem(sprockets) +BuildRequires: %{?scl_prefix_nodejs}nodejs +%endif +BuildArch: noarch +Provides: %{?scl_prefix}rubygem(%{gem_name}) = %{version} + +# Explicitly require runtime subpackage, as long as older scl-utils do not generate it +%{?scl:Requires: %{?scl_prefix}runtime} + +%description +Structure many real-time application concerns into channels over a single +WebSocket connection. + + +%package doc +Summary: Documentation for %{pkg_name} +Group: Documentation +Requires: %{?scl_prefix}%{pkg_name} = %{version}-%{release} +BuildArch: noarch + +%description doc +Documentation for %{pkg_name}. + +%prep +%{?scl:scl enable %{scl} - << \EOF} +set -e +gem unpack %{SOURCE0} + +%setup -q -D -T -n %{gem_name}-%{version} -a 2 + +gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec +%{?scl:EOF} + +%build +%if 0%{?recompile_js} > 0 +# Recompile the embedded JS file from CoffeeScript sources. +# +# This is practice suggested by packaging guidelines: +# https://fedoraproject.org/wiki/Packaging:Guidelines#Use_of_pregenerated_code + +cp -a %{SOURCE3} . + +# Remove folder to ensure JS is recompiled +rm -rf lib/assets/compiled +%{?scl:scl enable %{scl} %{scl_nodejs} - << \EOF} +RUBYOPT=-Ilib ruby recompile_js.rb +%{?scl:EOF} +%endif + +%{?scl:scl enable %{scl} - << \EOF} +set -e +# Create the gem as gem install only works on a gem file +gem build %{gem_name}.gemspec + +# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir +# by default, so that we can move it into the buildroot in %%install +%gem_install +%{?scl:EOF} + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a .%{gem_dir}/* \ + %{buildroot}%{gem_dir}/ + + +%check +pushd .%{gem_instdir} +tar xzvf %{SOURCE1} + +# We don't have Puma in Fedora yet. +sed -i '/puma/ s/^/#/' test/test_helper.rb +mv test/client_test.rb{,.disable} + +# We don't have em-hiredis in Fedora yet. +mv test/subscription_adapter/evented_redis_test.rb{,.disable} + +# TODO: Needs AR together with PostgreSQL. +mv test/subscription_adapter/postgresql_test.rb{,.disable} + +# We don't not ship redis in the SCL. +mv test/subscription_adapter/redis_test.rb{,.disable} + +%{?scl:scl enable %{scl} %{scl_nodejs} - << \EOF} +ruby -Ilib:test -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' +%{?scl:EOF} + +# TODO: Enable the test/javascript test cases. +popd + +%files +# There is no %%license macro on RHEL6. +# https://bugzilla.redhat.com/show_bug.cgi?id=1386246 +%{!?_licensedir:%global license %%doc} + +%dir %{gem_instdir} +%license %{gem_instdir}/MIT-LICENSE +%{gem_libdir} +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} +%doc %{gem_instdir}/CHANGELOG.md +%doc %{gem_instdir}/README.md + +%changelog +* Mon Jan 16 2017 Jun Aruga - 5.0.1-1 +- Update to Action Cable 5.0.1. +- Use recompile script from previous Action Cable version + +* Tue Aug 16 2016 Pavel Valena - 5.0.0.1-1 +- Update to Actioncable 5.0.0.1 + +* Thu Jun 30 2016 Vít Ondruch - 5.0.0-1 +- Initial package