sass / sassc-ruby

Use libsass with Ruby!
MIT License
367 stars 156 forks source link

Termux #187

Open azizcodes opened 4 years ago

azizcodes commented 4 years ago

My ultimate goal is running Jekyll and Rails on Termux, both of which require sassc.

I tried this from #153

gem 'sassc', '~> 2.1.0'

and this from #169 (even though I don't see that error)

You can set BUNDLE_BUILD__SASSC=--disable-march-tune-native to disable -march=native

The result of bundle install is below. Any idea why is it failing to install? Thanks!

Fetching sassc 2.1.0
Installing sassc 2.1.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.1.0/ext
/data/data/com.termux/files/usr/bin/ruby -I /data/data/com.termux/files/usr/lib/ruby/site_ruby/2.6.0 -r
./siteconf20200303-16154-5agvm3.rb extconf.rb --disable-march-tune-native
creating Makefile

current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.1.0/ext
make "DESTDIR=" clean

current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.1.0/ext
make "DESTDIR="
compiling ./libsass/src/ast.cpp
compiling ./libsass/src/ast2c.cpp
compiling ./libsass/src/ast_fwd_decl.cpp
compiling ./libsass/src/ast_sel_cmp.cpp
compiling ./libsass/src/ast_sel_unify.cpp
compiling ./libsass/src/ast_selectors.cpp
compiling ./libsass/src/ast_supports.cpp
compiling ./libsass/src/ast_values.cpp
compiling ./libsass/src/backtrace.cpp
compiling ./libsass/src/base64vlq.cpp
compiling ./libsass/src/bind.cpp
compiling ./libsass/src/c2ast.cpp
compiling ./libsass/src/c99func.c
compiling ./libsass/src/cencode.c
compiling ./libsass/src/check_nesting.cpp
compiling ./libsass/src/color_maps.cpp
compiling ./libsass/src/constants.cpp
compiling ./libsass/src/context.cpp
compiling ./libsass/src/cssize.cpp
compiling ./libsass/src/emitter.cpp
compiling ./libsass/src/environment.cpp
compiling ./libsass/src/error_handling.cpp
compiling ./libsass/src/eval.cpp
compiling ./libsass/src/expand.cpp
compiling ./libsass/src/extend.cpp
compiling ./libsass/src/file.cpp
compiling ./libsass/src/fn_colors.cpp
compiling ./libsass/src/fn_lists.cpp
compiling ./libsass/src/fn_maps.cpp
compiling ./libsass/src/fn_miscs.cpp
compiling ./libsass/src/fn_numbers.cpp
compiling ./libsass/src/fn_selectors.cpp
compiling ./libsass/src/fn_strings.cpp
compiling ./libsass/src/fn_utils.cpp
compiling ./libsass/src/inspect.cpp
compiling ./libsass/src/json.cpp
compiling ./libsass/src/lexer.cpp
compiling ./libsass/src/listize.cpp
compiling ./libsass/src/memory/SharedPtr.cpp
compiling ./libsass/src/node.cpp
compiling ./libsass/src/operators.cpp
compiling ./libsass/src/output.cpp
compiling ./libsass/src/parser.cpp
compiling ./libsass/src/plugins.cpp
compiling ./libsass/src/position.cpp
compiling ./libsass/src/prelexer.cpp
compiling ./libsass/src/remove_placeholders.cpp
compiling ./libsass/src/sass.cpp
compiling ./libsass/src/sass2scss.cpp
compiling ./libsass/src/sass_context.cpp
compiling ./libsass/src/sass_functions.cpp
compiling ./libsass/src/sass_util.cpp
compiling ./libsass/src/sass_values.cpp
compiling ./libsass/src/source_map.cpp
compiling ./libsass/src/subset_map.cpp
compiling ./libsass/src/to_value.cpp
compiling ./libsass/src/units.cpp
compiling ./libsass/src/utf8_string.cpp
compiling ./libsass/src/util.cpp
compiling ./libsass/src/util_string.cpp
compiling ./libsass/src/values.cpp
linking shared-object sassc/libsass.so
clang-9: error: unable to execute command: Segmentation fault
clang-9: error: linker command failed due to signal (use -v to see invocation)
make: *** [Makefile:262: libsass.so] Error 254

make failed, exit code 2

Gem files will remain installed in /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.1.0 for
inspection.
Results logged to
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/extensions/arm-linux-androideabi/2.6.0/sassc-2.1.0/gem_make.out

An error occurred while installing sassc (2.1.0), and Bundler cannot continue.
Make sure that `gem install sassc -v '2.1.0' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  sass-rails was resolved to 6.0.0, which depends on
    sassc-rails was resolved to 2.1.2, which depends on
      sassc

I tried installing from source too

$ bundle exec rake test --trace
** Invoke test (first_time)
** Invoke compile:libsass (first_time)
** Invoke compile:libsass:arm-linux-androideabi (first_time)
** Invoke copy:libsass:arm-linux-androideabi:2.6.5 (first_time)
** Invoke lib/sassc (first_time, not_needed)
** Invoke tmp/arm-linux-androideabi/libsass/2.6.5/libsass.so (first_time)
** Invoke tmp/arm-linux-androideabi/libsass/2.6.5 (first_time, not_needed)
** Invoke tmp/arm-linux-androideabi/libsass/2.6.5/Makefile (first_time, not_needed)
** Invoke tmp/arm-linux-androideabi/libsass/2.6.5 (not_needed)
** Invoke ext/extconf.rb (first_time, not_needed)
** Execute tmp/arm-linux-androideabi/libsass/2.6.5/libsass.so
cd tmp/arm-linux-androideabi/libsass/2.6.5
/data/data/com.termux/files/usr/bin/make
linking shared-object sassc/libsass.so
clang-9: error: unable to execute command: Segmentation fault
clang-9: error: linker command failed due to signal (use -v to see invocation)
make: *** [Makefile:262: libsass.so] Error 254
rake aborted!
Command failed with status (2): [/data/data/com.termux/files/usr/bin/make...]
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/file_utils.rb:67:in `block in create_shell_runner'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/file_utils.rb:57:in `sh'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-compiler-1.1.0/lib/rake/extensiontask.rb:166:in `block (2 levels) in define_compile_tasks'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/fileutils.rb:128:in `chdir'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/fileutils.rb:128:in `cd'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/file_utils_ext.rb:35:in `chdir'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-compiler-1.1.0/lib/rake/extensiontask.rb:165:in `block in define_compile_tasks'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:241:in `invoke_prerequisites'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/data/data/com.termux/files/usr/bin/rake:23:in `load'
/data/data/com.termux/files/usr/bin/rake:23:in `<top (required)>'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
/data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
/data/data/com.termux/files/usr/bin/bundle:23:in `load'
/data/data/com.termux/files/usr/bin/bundle:23:in `<main>'
Tasks: TOP => test => compile:libsass => compile:libsass:arm-linux-androideabi => copy:libsass:arm-linux-androideabi:2.6.5 => tmp/arm-linux-androideabi/libsass/2.6.5/libsass.so
mazli84 commented 4 years ago

I was able to install gem with this command: gem install sassc -- --disable-march-tune-native

azizcodes commented 4 years ago

Thanks for responding @mazli84. That didn't work for me, unfortunately.

$ gem install sassc -- --disable-march-tune-native
Building native extensions with: '--disable-march-tune-native'
This could take a while...
ERROR:  Error installing sassc:
        ERROR: Failed to build gem native extension.

    current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.2.1/ext
/data/data/com.termux/files/usr/bin/ruby -I /data/data/com.termux/files/usr/lib/ruby/site_ruby/2.6.0 -r ./siteconf20200311-19667-2jce3g.rb extconf.rb --disable-march-tune-native
creating Makefile

current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.2.1/ext
make "DESTDIR=" clean

current directory: /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.2.1/ext
make "DESTDIR="
compiling ./libsass/src/ast.cpp
compiling ./libsass/src/ast2c.cpp
compiling ./libsass/src/ast_fwd_decl.cpp
compiling ./libsass/src/ast_sel_cmp.cpp
compiling ./libsass/src/ast_sel_unify.cpp
compiling ./libsass/src/ast_selectors.cpp
compiling ./libsass/src/ast_supports.cpp
compiling ./libsass/src/ast_values.cpp
compiling ./libsass/src/backtrace.cpp
compiling ./libsass/src/base64vlq.cpp
compiling ./libsass/src/bind.cpp
compiling ./libsass/src/c2ast.cpp
compiling ./libsass/src/c99func.c
compiling ./libsass/src/cencode.c
compiling ./libsass/src/check_nesting.cpp
compiling ./libsass/src/color_maps.cpp
compiling ./libsass/src/constants.cpp
compiling ./libsass/src/context.cpp
compiling ./libsass/src/cssize.cpp
compiling ./libsass/src/emitter.cpp
compiling ./libsass/src/environment.cpp
compiling ./libsass/src/error_handling.cpp
compiling ./libsass/src/eval.cpp
compiling ./libsass/src/expand.cpp
compiling ./libsass/src/extend.cpp
compiling ./libsass/src/file.cpp
compiling ./libsass/src/fn_colors.cpp
compiling ./libsass/src/fn_lists.cpp
compiling ./libsass/src/fn_maps.cpp
compiling ./libsass/src/fn_miscs.cpp
compiling ./libsass/src/fn_numbers.cpp
compiling ./libsass/src/fn_selectors.cpp
compiling ./libsass/src/fn_strings.cpp
compiling ./libsass/src/fn_utils.cpp
compiling ./libsass/src/inspect.cpp
compiling ./libsass/src/json.cpp
compiling ./libsass/src/lexer.cpp
compiling ./libsass/src/listize.cpp
compiling ./libsass/src/memory/SharedPtr.cpp
compiling ./libsass/src/node.cpp
compiling ./libsass/src/operators.cpp
compiling ./libsass/src/output.cpp
compiling ./libsass/src/parser.cpp
compiling ./libsass/src/plugins.cpp
compiling ./libsass/src/position.cpp
compiling ./libsass/src/prelexer.cpp
compiling ./libsass/src/remove_placeholders.cpp
compiling ./libsass/src/sass.cpp
compiling ./libsass/src/sass2scss.cpp
compiling ./libsass/src/sass_context.cpp
compiling ./libsass/src/sass_functions.cpp
compiling ./libsass/src/sass_util.cpp
compiling ./libsass/src/sass_values.cpp
compiling ./libsass/src/source_map.cpp
compiling ./libsass/src/subset_map.cpp
compiling ./libsass/src/to_value.cpp
compiling ./libsass/src/units.cpp
compiling ./libsass/src/utf8_string.cpp
compiling ./libsass/src/util.cpp
compiling ./libsass/src/util_string.cpp
compiling ./libsass/src/values.cpp
linking shared-object sassc/libsass.so
clang-9: error: unable to execute command: Segmentation fault
clang-9: error: linker command failed due to signal (use -v to see invocation)
make: *** [Makefile:262: libsass.so] Error 254

make failed, exit code 2

Gem files will remain installed in /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/gems/sassc-2.2.1 for inspection.
Results logged to /data/data/com.termux/files/usr/lib/ruby/gems/2.6.0/extensions/arm-linux-androideabi/2.6.0/sassc-2.2.1/gem_make.out
Grimler91 commented 4 years ago

I've also run into this, I am thinking that it is a problem with the linker, as that is where the segfault happens. See https://github.com/termux/termux-packages/issues/4987

Grimler91 commented 4 years ago

When I tried now again with a fresh ruby installation I was able to install sassc without problems. @azizcodes could you try again and see if it works for you as well?