File tree Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Original file line number Diff line number Diff line change @@ -13,11 +13,14 @@ CRYSTAL_TARGZ ?=     ## Which crystal.tar.gz file to install in docker images (a
1313DOCKER_TAG ?=	     # # How to tag the docker image (examples: `0.27.2`, `nightly20190307`). `-build` will be appended for build images.
1414DOCKER_REPOSITORY ?= # # Docker hub repository to commit image
1515
16+ GC_VERSION  = v8.0.4
17+ LIBATOMIC_OPS_VERSION  = v7.6.10
18+ 
1619OUTPUT_DIR  := build
1720BUILD_CONTEXT  := $(CURDIR ) /build-context
1821BUILD_ARGS_UBUNTU64  := --build-arg crystal_deb=crystal.deb $(BUILD_CONTEXT ) /ubuntu64 --build-arg base_docker_image=ubuntu:focal
1922BUILD_ARGS_UBUNTU32  := --build-arg crystal_deb=crystal.deb $(BUILD_CONTEXT ) /ubuntu32 --build-arg base_docker_image=i386/ubuntu:bionic
20- BUILD_ARGS_ALPINE  := --build-arg crystal_targz=crystal.tar.gz $(BUILD_CONTEXT ) /alpine
23+ BUILD_ARGS_ALPINE  := --build-arg crystal_targz=crystal.tar.gz $(BUILD_CONTEXT ) /alpine --build-arg gc_version= $( GC_VERSION )  --build-arg libatomic_ops_version= $( LIBATOMIC_OPS_VERSION ) 
2124DOCKER_TAG_UBUNTU  := $(DOCKER_REPOSITORY ) :$(DOCKER_TAG ) 
2225DOCKER_TAG_ALPINE  := $(DOCKER_REPOSITORY ) :$(DOCKER_TAG ) -alpine
2326
@@ -53,6 +56,8 @@ $(BUILD_CONTEXT)/ubuntu64: ubuntu.Dockerfile $(BUILD_CONTEXT)/ubuntu64/crystal.d
5356
5457$(BUILD_CONTEXT ) /alpine : alpine.Dockerfile $(BUILD_CONTEXT ) /alpine/crystal.tar.gz
5558	cp alpine.Dockerfile $@ /Dockerfile
59+ 	mkdir $@ /files/
60+ 	cp ../linux/files/feature-thread-stackbottom-upstream.patch $@ /files/feature-thread-stackbottom-upstream.patch
5661
5762% /crystal.deb :
5863	mkdir -p $(shell  dirname $@ ) 
Original file line number Diff line number Diff line change @@ -3,11 +3,33 @@ FROM alpine:3.13 as runtime
33RUN  \
44  apk add --update --no-cache --force-overwrite \
55    #  core dependencies
6-     gc-dev  gcc gmp-dev libatomic_ops  libevent-static musl-dev pcre-dev \
6+     gcc gmp-dev libevent-static musl-dev pcre-dev \
77    #  stdlib dependencies
88    libxml2-dev openssl-dev openssl-libs-static tzdata yaml-static zlib-static \
99    #  dev tools
10-     make git
10+     make git \
11+     #  build libgc dependencies
12+     autoconf automake libtool patch
13+ 
14+ #  Build libgc
15+ ARG  gc_version
16+ ARG  libatomic_ops_version
17+ COPY  files/feature-thread-stackbottom-upstream.patch /tmp/
18+ RUN  git clone https://github.com/ivmai/bdwgc \
19+  && cd bdwgc \
20+  && git checkout ${gc_version} \
21+  && git clone https://github.com/ivmai/libatomic_ops \
22+  && (cd libatomic_ops && git checkout ${libatomic_ops_version}) \
23+  \
24+  && patch -p1 < /tmp/feature-thread-stackbottom-upstream.patch \
25+  \
26+  && ./autogen.sh \
27+  && ./configure --disable-debug --disable-shared --enable-large-config \
28+  && make -j$(nproc) CFLAGS=-DNO_GETCONTEXT \
29+  && make install
30+ 
31+ #  Remove build tools from image now that libgc is built
32+ RUN  apk del -r --purge autoconf automake libtool patch
1133
1234ARG  crystal_targz
1335COPY  ${crystal_targz} /tmp/crystal.tar.gz
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments