Libsass: Проблемы с компиляцией libsass в Windows

Созданный на 27 июл. 2016  ·  9Комментарии  ·  Источник: sass/libsass

Я поддерживаю Sprockets с открытым исходным кодом. Я пытаюсь получить поддержку sassc (libsass) изначально, вот PR: https://github.com/rails/sprockets/pull/349. Оказывается, sassc-ruby не работает в Windows. Я пытаюсь исправить это, но прежде чем я смогу, я не могу заставить его скомпилировать на appveyor (PR для тестирования на моей вилке https://github.com/schneems/sassc-ruby/pull/1). Вот обсуждение связанных окон: https://github.com/sass/sassc-ruby/issues/18#issuecomment -235334834.

Это предыстория.

Я здесь, чтобы попросить помощи в компиляции libsass в appveyor для гема sassc-ruby. Это не «проблема», а скорее просьба. Я не могу ничего предложить взамен, кроме поддержки libsass для пользователей звездочек, я также могу купить вам пиццу с доставкой (совершенно серьезно, я делал это раньше). Мне нужна помощь в переносе sassc-ruby в место, где он может скомпилировать libsass на appveyor.

Я попробовал кое-что по этому поводу, но в основном снимаю в темноте. Текущий make-файл не будет установлен с nmake из-за жалоб на синтаксис. Я посмотрел на appveyor.yml этого проекта, но он выглядит достаточно сложным, я не совсем понимаю, что происходит. Я попытался установить локальную виртуальную машину Windows, но столкнулся с проблемой, когда на ней нет mingw32-make и команда msbuild не работает.

> msbuild win/libsass.sln

Дает мне:

Есть ли идеи о том, как лучше всего двигаться вперед, чтобы скомпилировать libsass для тестирования sassc-ruby в Windows? Любая помощь приветствуется.

ps серьезно относиться к 🍕

Discussion - Question

Все 9 Комментарий

Ты пригласил меня в пиццу. Но если серьезно, я рад видеть, как это происходит со звездочками. @ am11, как наш постоянный эксперт по Windows, есть ли у вас идеи, что может происходить?

msbuild Win / libsass.sln

Если вы уверены, что этот MSBuild в PATH соответствует версии VS, которую вы установили (т.е. запустив msbuild /version ), то этой команды достаточно для сборки LibSass в конфигурации отладки. Передача /p:Configuration=Release в команду создаст общую библиотеку в конфигурации выпуска. Вы также можете попробовать, вызвав MSBuild с абсолютным путем в соответствии с документом сборки: https://github.com/sass/libsass/blob/master/docs/build-with-visual-studio.md#from -powershell

Если проблема не исчезла, Google вернет следующий обходной путь для кода ошибки TRK0005:
https://blogs.msdn.microsoft.com/deva/2015/03/24/after-migration-vs-2013-c-project-throws-error-trk0005-failed-to-locate-cl-exe-the- система-не-может-найти-указанный-файл /

Кстати, для локального окна сборки для проверки состояния окон и т. Д .; если вам не нужен VS, вы можете просто установить Build Tools for VC для компиляции проектов C / C ++ строго через командную строку - без какого-либо великолепного графического интерфейса: http://landinghub.visualstudio.com/visual-cpp-build -инструменты

Просто перехожу к этому комментарию. Я собираюсь попробовать. Благодаря тонну! Будет держать проблему в курсе.

Также спасибо за поддержку Windows в первую очередь. Это огромная ответственность, и несколько раз, когда мне приходилось делать патчи совместимости с Windows, я благодарен всем, у кого есть опыт в этой области.

В качестве примечания, похоже, что в make-файле есть код, специфичный для окна: https://github.com/sass/libsass/blob/6610e815ff77600fedf22bf10541d08d70f94218/Makefile#L26 -L42 Работал ли этот файл с nmake когда-то?

Привет, относительно примечания: я думаю, что этот код был предназначен для поддержки MinGW / Cygwin Makefile, и @mgreter, вероятно, может это подтвердить. nmake Makefile - это другой объект, и, скорее всего, он до сих пор поставляется только для поддержки старых проектов. MSBuild был представлен как «современная» система сборки, поэтому мы приложили усилия для поддержки этого формата XML.

Возможно, в какой-то момент мы сможем переключиться на CMake, чтобы инкапсулировать базовые системы сборки. Однако изначально предпочтение было отдано рукописным файлам Makefile и vcxproj, но если они вызывают затруднения у нижестоящих потребителей, мы должны изучить CMake. @mgreter приложил немало усилий в области системы сборки.

Я нахожусь в отпуске и еще шесть дней воздерживаюсь от того, чтобы подходить к компьютерам ... но все же мы здесь! 😄 Я постараюсь наверстать упущенное и внести свой вклад в развитие звездочек. Я использовал этот драгоценный камень еще во времена Rails 2x и рад, что он все еще стоит на высоте. Спасибо за ваши усилия @schneems! 👍

Привет, я пытаюсь воздержаться от публикации из-за отпуска (я действительно хочу, чтобы в github была функция ООО или Не беспокоить). Не беспокойтесь о том, чтобы ответить, пока вас нет.

Ваш совет был отличным и сработал, также я нашел этот документ https://github.com/sass/libsass/blob/master/docs/build-on-windows.md (слишком поздно), который подтвердил многие вещи, которые вы сказал мне. У меня работает сборка, и я считаю, что правильно подключился к ней, используя интерфейс Ruby FFI, теперь у меня возникает ошибка сегментации, когда я вызываю библиотеку. Это может быть проблема с интерфейсом Ruby FFI, проблема с кодом связки sassc-ruby или проблема со сборкой libsass в dll.

Я не думаю, что вам нужно что-то знать о Ruby, но, возможно, вы могли бы помочь с последним. Есть ли у меня способ проверить, что созданная мной dll работает или действительна?

Дай мне знать, когда вернешься, надеюсь, тебе нравится отдыхать.

@schneems приятно слышать, что дела идут лучше. Благодарим за предоставление всей информации, необходимой для устранения этой проблемы, в вашем запросе на перенос - это очень полезно. Можете ли вы попробовать использовать набор инструментов MinGW для сборки libsass вместо Visual Studio? Я оставил комментарий в соответствующем месте.

@schneems , я только что нашел документацию DevKit: http://github.com/oneclick/rubyinstaller/wiki/Development-Kit и тот факт, что она основана на MinGW.

Затем я установил Ruby 2.3.0 и DevKit на свою локальную виртуальную машину, а затем добавил C:\tools\ruby23\devkit\bin и C:\tools\ruby23\devkit\mingw\bin в PATH.

После этого я применил следующую разницу поверх https://github.com/schneems/sassc-ruby/commit/85ed6730341c18b9e700a6e717be84461389fdc4 :

diff --git a/lib/sassc/native.rb b/lib/sassc/native.rb
index 261daba..b52b0c2 100644
--- a/lib/sassc/native.rb
+++ b/lib/sassc/native.rb
@@ -6,12 +6,7 @@ module SassC

     spec = Gem.loaded_specs["sassc"]
     gem_root = spec.gem_dir
-    if RUBY_PLATFORM =~ /mswin|mingw/
-      libsass_path = "#{gem_root}/ext/libsass/win/bin/libsass.dll"
-    else
-      libsass_path = "#{gem_root}/ext/libsass/lib/libsass.so"
-    end
-    ffi_lib libsass_path
+    ffi_lib "#{gem_root}/ext/libsass/lib/libsass.so"

     require_relative "native/sass_value"

diff --git a/lib/tasks/libsass.rb b/lib/tasks/libsass.rb
index 3542d8f..e439820 100644
--- a/lib/tasks/libsass.rb
+++ b/lib/tasks/libsass.rb
@@ -20,7 +20,7 @@ namespace :libsass do
     make_program = ENV['MAKE']
     make_program ||= case RUBY_PLATFORM
                      when /mswin|mingw/
-                       'msbuild /m:4 /p:Configuration=Release win/libsass.sln'
+                       'make lib/libsass.so'
                      when /(bsd|solaris)/
                        'gmake lib/libsass.so'
                      else

Когда я выполнил $CC="gcc" ; bundle exec rake test в PowerShell в Windows 10 x64, он прошел:

Run options: --seed 1950

# Running:

********************************S*************************

Fabulous run in 0.174091s, 333.1591 runs/s, 539.9475 assertions/s.

58 runs, 94 assertions, 0 failures, 0 errors, 1 skips

Я думаю, что ваш сценарий AppVeyor не нуждается в каких-либо изменениях. _Может быть_ вам нужно добавить CC следующим образом:

environment:
  global:
    CC: gcc
  matrix:
  ..

@schneems помогает ли информация от @ am11 решить вашу проблему?

Извините за задержку. Меня все время отвлекает от этого проекта. Я собираюсь закрыть это сейчас, чтобы он не засорял ваши проблемы. Спасибо за помощь. Надеюсь скоро вернуться к этому.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

nex3 picture nex3  ·  9Комментарии

GottZ picture GottZ  ·  3Комментарии

JohnMica picture JohnMica  ·  3Комментарии

ashleykolodziej picture ashleykolodziej  ·  3Комментарии

c0d3xpl0it picture c0d3xpl0it  ·  4Комментарии