Libsass: Masalah mendapatkan libsass untuk dikompilasi di windows

Dibuat pada 27 Jul 2016  ·  9Komentar  ·  Sumber: sass/libsass

Saya adalah pengelola sumber terbuka Sprockets. Saya mencoba untuk mendapatkan sassc (libsass) yang didukung secara asli, inilah PR: https://github.com/rails/sprockets/pull/349 . Ternyata sassc-ruby tidak berfungsi di windows. Saya mencoba memperbaikinya tetapi sebelum saya bisa, saya tidak dapat mengkompilasinya di appveyor (PR untuk pengujian pada garpu saya https://github.com/schneems/sassc-ruby/pull/1). Inilah diskusi windows terkait: https://github.com/sass/sassc-ruby/issues/18#issuecomment -235334834 .

Itulah latar belakangnya.

Saya di sini untuk meminta bantuan dalam mendapatkan kompilasi libsass di appveyor untuk permata sassc-ruby. Ini bukan "masalah" per-katakan melainkan permintaan. Saya tidak dapat menawarkan banyak imbalan selain mendukung libsass untuk pengguna sprocket, saya juga dapat membelikan Anda pizza pengiriman (sangat serius, saya pernah melakukan ini sebelumnya). Saya butuh bantuan untuk membawa sassc-ruby ke tempat di mana ia dapat mengkompilasi libsass di appveyor.

Saya telah mencoba beberapa hal tentang masalah itu, tetapi saya kebanyakan memotret dalam gelap. Makefile saat ini tidak akan diinstal dengan nmake karena mengeluh tentang sintaks. Saya melihat appveyor.yml dari proyek ini tetapi kelihatannya cukup rumit, saya tidak sepenuhnya tahu apa yang terjadi. Saya mencoba menginstal VM windows secara lokal tetapi mengalami masalah ketika tidak memiliki mingw32-make dan perintah msbuild gagal.

> msbuild win/libsass.sln

Memberi saya:

Adakah ide tentang cara terbaik untuk bergerak maju mendapatkan libsass untuk dikompilasi untuk menguji sassc-ruby di windows? Bantuan apa pun sangat dihargai.

ps Serius tentang

Discussion - Question

Semua 9 komentar

Anda memiliki saya di pizza. Tapi serius saya senang melihat ini terjadi di sprocket. @am11 sebagai ahli Windows residen kami, apakah Anda punya ide apa yang bisa terjadi?

msbuild win/libsass.sln

Jika Anda yakin bahwa MSBuild ini di PATH sesuai dengan versi VS yang telah Anda instal (yaitu dengan menjalankan msbuild /version ), maka perintah ini cukup untuk membangun LibSass dalam konfigurasi Debug. Melewati /p:Configuration=Release ke perintah akan membangun lib bersama dalam konfigurasi Rilis. Anda juga dapat mencoba dengan menjalankan MSBuild dengan jalur absolut sesuai dengan dokumen build: https://github.com/sass/libsass/blob/master/docs/build-with-visual-studio.md#from -powershell

Jika Anda masih mengalami masalah yang sama, Google mengembalikan solusi berikut untuk kode kesalahan, 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- sistem-tidak-dapat-menemukan-file-ditentukan/

BTW, untuk kotak build lokal untuk menguji status windows dll .; jika Anda tidak ingin VS, Anda bisa menginstal Build Tools for VC untuk mengkompilasi proyek C/C++ secara ketat melalui baris perintah - sama sekali tanpa GUI yang mulia: http://landinghub.visualstudio.com/visual-cpp-build -alat

Baru sampai di komentar ini. Aku akan mencoba ini. Terima kasih banyak! Akan terus memperbarui masalah.

Juga terima kasih atas dukungan windows sejak awal. Ini adalah tanggung jawab yang besar dan beberapa kali saya harus membuat patch kompat windows membuat saya berterima kasih kepada siapa saja yang memiliki pengalaman di sana.

Sebagai catatan tambahan sepertinya makefile memiliki beberapa kode khusus jendela di dalamnya: https://github.com/sass/libsass/blob/6610e815ff77600fedf22bf10541d08d70f94218/Makefile#L26 -L42 apakah file ini berfungsi dengan nmake pada satu waktu?

Halo, mengenai catatan tambahan: Saya pikir kode itu dimaksudkan untuk dukungan MinGW/Cygwin Makefile dan @mgreter mungkin dapat mengonfirmasinya. nmake Makefile adalah entitas yang berbeda dan kemungkinan besar masih dikirimkan hanya untuk mendukung proyek-proyek kuno. MSBuild diperkenalkan sebagai sistem pembangunan "modern", oleh karena itu kami berupaya untuk mendukung format XML tersebut.

Kami mungkin dapat beralih ke CMake di beberapa titik untuk merangkum sistem pembangunan yang mendasarinya. Namun, file Makefile dan vcxproj tulisan tangan lebih disukai pada awalnya, tetapi jika itu menyebabkan upaya bagi konsumen hilir, kita harus melihat ke CMake. @mgreter telah berupaya keras di area sistem build.

Saya sedang berlibur dan menahan diri untuk pergi dekat komputer selama enam hari lagi.. tapi di sinilah kita! Saya akan mencoba mengejar perkembangan sprocket dan berkontribusi. Saya menggunakan permata ini di masa lalu dengan Rails 2x dan senang melihatnya masih berdiri tegak. Terima kasih atas upaya Anda @schneems! 👍

Hei, saya mencoba menahan diri untuk tidak memposting karena liburan (saya sangat berharap github memiliki fitur OOO atau Jangan Ganggu). Jangan khawatir tentang membalas saat pergi.

Saran Anda bagus dan berhasil, saya juga menemukan dokumen ini https://github.com/sass/libsass/blob/master/docs/build-on-windows.md (terlambat) yang mengonfirmasi ulang banyak hal yang Anda sudah memberitahuku. Saya mendapatkan build yang berfungsi dan saya yakin saya telah menautkannya dengan benar menggunakan antarmuka Ruby FFI, saya sekarang mendapatkan segfault ketika saya memanggil lib. Ini bisa menjadi masalah dengan antarmuka Ruby FFI, masalah dengan kode lem sassc-ruby, atau masalah dengan pembuatan libsass menjadi dll.

Saya tidak berpikir Anda perlu tahu apa-apa tentang Ruby, tapi mungkin Anda bisa membantu dengan yang terakhir itu. Apakah ada cara bagi saya untuk memverifikasi dll yang saya buat berfungsi atau valid?

Beri tahu saya saat Anda kembali, semoga Anda menikmati waktu istirahat.

@schneems senang mendengar semuanya menjadi lebih baik. Terima kasih telah memberikan semua informasi yang diperlukan untuk memecahkan masalah ini dalam permintaan tarik Anda - ini sangat berguna. Bisakah Anda mencoba menggunakan toolkit MinGW untuk membangun libsass alih-alih Visual Studio? Saya telah meninggalkan komentar di tempat yang tepat.

@schneems , saya baru saja menemukan dokumentasi DevKit: http://github.com/oneclick/rubyinstaller/wiki/Development-Kit dan fakta bahwa itu didasarkan pada MinGW.

Saya kemudian menginstal Ruby 2.3.0 dan DevKit di VM lokal saya, kemudian menambahkan C:\tools\ruby23\devkit\bin dan C:\tools\ruby23\devkit\mingw\bin di PATH.

Setelah itu, saya menerapkan perbedaan berikut di atas 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

Ketika saya mengeksekusi $CC="gcc" ; bundle exec rake test di PowerShell pada Windows 10 x64, itu berlalu:

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

Saya pikir skrip AppVeyor Anda tidak memerlukan perubahan apa pun. _Mungkin_ Anda perlu menambahkan CC seperti ini:

environment:
  global:
    CC: gcc
  matrix:
  ..

@schneems apakah info oleh @ am11 di atas menyelesaikan masalah Anda?

Maaf atas keterlambatannya. Saya terus ditarik dari proyek ini. Saya akan menutup ini untuk saat ini sehingga tidak menyumbat masalah Anda. Terima kasih untuk bantuannya. Saya berharap untuk kembali ke ini segera.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

luiscla27 picture luiscla27  ·  10Komentar

JohnMica picture JohnMica  ·  3Komentar

GottZ picture GottZ  ·  3Komentar

bdkjones picture bdkjones  ·  6Komentar

xzyfer picture xzyfer  ·  7Komentar