From 2e5f22e8c7d80829fba75827bc17edb339ce620a Mon Sep 17 00:00:00 2001 From: Svyatoslav Kryukov Date: Sat, 28 May 2022 21:58:00 +0300 Subject: [PATCH] Build zlib as a dependency --- Rakefile | 29 +++++++++++++++++-- builders/wasm32-unknown-emscripten/Dockerfile | 2 +- builders/wasm32-unknown-wasi/Dockerfile | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Rakefile b/Rakefile index f975b7af7f..9ea25063c8 100644 --- a/Rakefile +++ b/Rakefile @@ -11,7 +11,7 @@ BUILD_SOURCES = [ }, ] -FULL_EXTS = "bigdecimal,cgi/escape,continuation,coverage,date,dbm,digest/bubblebabble,digest,digest/md5,digest/rmd160,digest/sha1,digest/sha2,etc,fcntl,fiber,gdbm,json,json/generator,json/parser,nkf,objspace,pathname,psych,racc/cparse,rbconfig/sizeof,ripper,stringio,strscan,monitor" +FULL_EXTS = "bigdecimal,cgi/escape,continuation,coverage,date,dbm,digest/bubblebabble,digest,digest/md5,digest/rmd160,digest/sha1,digest/sha2,etc,fcntl,fiber,gdbm,json,json/generator,json/parser,nkf,objspace,pathname,psych,racc/cparse,rbconfig/sizeof,ripper,stringio,strscan,monitor,zlib" BUILD_PROFILES = { "minimal" => { debug: false, default_exts: "", user_exts: [] }, @@ -115,7 +115,7 @@ class BuildPlan def dep_tasks return [baseruby_name] if @params[:profile] == "minimal" - [baseruby_name, "deps:libyaml-#{@params[:target]}"] + [baseruby_name, "deps:libyaml-#{@params[:target]}", "deps:zlib-#{@params[:target]}"] end def check_deps @@ -157,6 +157,7 @@ class BuildPlan args << "--with-static-linked-ext" args << %Q(--with-ext="#{default_exts}") args << %Q(--with-libyaml-dir="#{deps_install_dir}/libyaml/usr/local") + args << %Q(--with-zlib-dir="#{deps_install_dir}/zlib") args << %Q(--with-baseruby="#{baseruby_path}") case target @@ -216,6 +217,30 @@ namespace :deps do sh "./configure #{configure_args.join(" ")}", chdir: build_dir sh "make install DESTDIR=#{install_dir}/libyaml", chdir: build_dir end + + zlib_version = "1.2.12" + desc "build zlib #{zlib_version} for #{target}" + task "zlib-#{target}" do + next if Dir.exist?("#{install_dir}/zlib") + + build_dir = File.join(Dir.pwd, "/build/deps/#{target}/zlib-#{zlib_version}") + mkdir_p File.dirname(build_dir) + rm_rf build_dir + + sh "curl -L https://zlib.net/zlib-#{zlib_version}.tar.gz | tar xz", chdir: File.dirname(build_dir) + + configure_args = [] + case target + when "wasm32-unknown-wasi" + configure_args.concat(%W(CC=#{ENV["WASI_SDK_PATH"]}/bin/clang RANLIB=#{ENV["WASI_SDK_PATH"]}/bin/llvm-ranlib AR=#{ENV["WASI_SDK_PATH"]}/bin/llvm-ar)) + when "wasm32-unknown-emscripten" + configure_args.concat(%W(CC=emcc RANLIB=emranlib AR=emar)) + else + raise "unknown target: #{target}" + end + sh "#{configure_args.join(" ")} ./configure --prefix=#{install_dir}/zlib --static", chdir: build_dir + sh "make install", chdir: build_dir + end end end diff --git a/builders/wasm32-unknown-emscripten/Dockerfile b/builders/wasm32-unknown-emscripten/Dockerfile index c14de5de9f..5f197666d6 100644 --- a/builders/wasm32-unknown-emscripten/Dockerfile +++ b/builders/wasm32-unknown-emscripten/Dockerfile @@ -2,7 +2,7 @@ FROM emscripten/emsdk:2.0.13 RUN set -eux; \ apt-get update; \ - apt-get install ruby bison make autoconf git curl build-essential libyaml-dev -y; \ + apt-get install ruby bison make autoconf git curl build-essential libyaml-dev zlib1g-dev -y; \ curl -fsSL https://deb.nodesource.com/setup_16.x | bash -; \ apt-get install nodejs -y; \ apt-get clean; \ diff --git a/builders/wasm32-unknown-wasi/Dockerfile b/builders/wasm32-unknown-wasi/Dockerfile index afdc350710..da90399e74 100644 --- a/builders/wasm32-unknown-wasi/Dockerfile +++ b/builders/wasm32-unknown-wasi/Dockerfile @@ -17,7 +17,7 @@ ENV WASI_SDK_PATH="/opt/wasi-sdk" RUN set -eux; \ apt-get update; \ - apt-get install ruby bison make autoconf git curl build-essential libyaml-dev -y; \ + apt-get install ruby bison make autoconf git curl build-essential libyaml-dev zlib1g-dev -y; \ curl -fsSL https://deb.nodesource.com/setup_16.x | bash -; \ apt-get install nodejs -y; \ apt-get clean; \