Building on Alpine Linux

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Building on Alpine Linux

Pierce Ng-3
 
Hi all,

I've built pharo.cog.spur.minheadless on Alpine Linux. I did it by
mucking around with the files in the repo, mostly to add library files
to link with, in line with Alpine's packaging conventions.

I'd like to make the process reproducible. Is there any documentation on
how the repo uses CMake? In particular, say, which files should I work
on to produce link.txt suitable for use on Alpine?

Here's my related blog post:

  https://www.samadhiweb.com/blog/2019.07.20.alpine.pharo.minimal.html

Pierce

Reply | Threaded
Open this post in threaded view
|

Re: Building on Alpine Linux

Mariano Martinez Peck
 

On Sat, Jul 20, 2019 at 6:05 AM Pierce Ng <[hidden email]> wrote:
 
Hi all,

I've built pharo.cog.spur.minheadless on Alpine Linux. I did it by
mucking around with the files in the repo, mostly to add library files
to link with, in line with Alpine's packaging conventions.

I'd like to make the process reproducible. Is there any documentation on
how the repo uses CMake? In particular, say, which files should I work
on to produce link.txt suitable for use on Alpine?

Here's my related blog post:

  https://www.samadhiweb.com/blog/2019.07.20.alpine.pharo.minimal.html


Hi Pierce,

This is very interesting. I have been playing with docker too [1] [2] [3]  and indeed I also tried to make it work with alpine [4]. But it was complicated because alpine doesn't come with `glibc` but instead `musl`. And there are differences between them. So for example for VA Smalltalk I had to install `glibc`. I succeeded but the final size of the docker image with alpine + glibc was almost the same size as the debian lite... so it didn't make much sense to me. 
The support for glic is not official and as you can see I reported it [5]

Anyway, I will be curious to know your progress. Would cog VM work correctly with musl instead of glibc? 

Best, 


--
Mariano Martinez Peck
Reply | Threaded
Open this post in threaded view
|

Re: Building on Alpine Linux

Mariano Martinez Peck
 
I read you say "I've successfully built the pharo.cog.spur.minheadless OpenSmalltalk VM on Alpine Linux." 
Can you elaborate more on that? Where did you put your work? A separate branch/fork? Did you change the VM to link against musl? 
Did it compile out of the box?
What our happened in our case is that even if `musl` would give us a compatible API in the sense the VM would compile, then, on usage we detected things that internally had different behaviors (like iconv). Did you encounter anything of this?

Thanks, 



On Sat, Jul 20, 2019 at 10:54 AM Mariano Martinez Peck <[hidden email]> wrote:

On Sat, Jul 20, 2019 at 6:05 AM Pierce Ng <[hidden email]> wrote:
 
Hi all,

I've built pharo.cog.spur.minheadless on Alpine Linux. I did it by
mucking around with the files in the repo, mostly to add library files
to link with, in line with Alpine's packaging conventions.

I'd like to make the process reproducible. Is there any documentation on
how the repo uses CMake? In particular, say, which files should I work
on to produce link.txt suitable for use on Alpine?

Here's my related blog post:

  https://www.samadhiweb.com/blog/2019.07.20.alpine.pharo.minimal.html


Hi Pierce,

This is very interesting. I have been playing with docker too [1] [2] [3]  and indeed I also tried to make it work with alpine [4]. But it was complicated because alpine doesn't come with `glibc` but instead `musl`. And there are differences between them. So for example for VA Smalltalk I had to install `glibc`. I succeeded but the final size of the docker image with alpine + glibc was almost the same size as the debian lite... so it didn't make much sense to me. 
The support for glic is not official and as you can see I reported it [5]

Anyway, I will be curious to know your progress. Would cog VM work correctly with musl instead of glibc? 

Best, 


--
Mariano Martinez Peck


--
Mariano Martinez Peck
Reply | Threaded
Open this post in threaded view
|

Re: Building on Alpine Linux

Pierce Ng-3
 
On Sat, Jul 20, 2019 at 02:35:54PM -0300, Mariano Martinez Peck wrote:
> I read you say "I've successfully built the pharo.cog.spur.minheadless
> OpenSmalltalk VM on Alpine Linux."
> Can you elaborate more on that? Where did you put your work? A separate
> branch/fork? Did you change the VM to link against musl?
> Did it compile out of the box?

It compiled more or less out of the box. The changes I made were mostly
to link with additional libraries for functionality that on Alpine have
been put into those libraries. I made these changes by modifying the
output of cmake, which is the reason for my mail to this list: I want to
to find out which files to modify so that cmake produces the right
output for Alpine. Then I'll create a branch/PR.


> What our happened in our case is that even if `musl` would give us a
> compatible API in the sense the VM would compile, then, on usage we
> detected things that internally had different behaviors (like iconv). Did
> you encounter anything of this?

That's what I'll find out.  As written in my post said Cog VM
successfully runs a minimal Pharo image doing FFI and Fuel.

I'll be testing it with the regular image running some kind of webapp.

I've also put the Docker image on Dockerhub, but I just looked again and
see that it is missing libgit2, libssh2, etc., so probably no good for
running the regular Pharo image for now.

Pierce

Reply | Threaded
Open this post in threaded view
|

Re: Building on Alpine Linux

Pierce Ng-3
 
On Sun, Jul 21, 2019 at 08:20:06AM +0800, Pierce Ng wrote:
> I've also put the Docker image on Dockerhub, but I just looked again and
> see that it is missing libgit2, libssh2, etc., so probably no good for
> running the regular Pharo image for now.

To reply to my own mail, some libraries were missing because of my
packaging error. I've fixed that now.

Docker image is here - https://hub.docker.com/r/pierceng/pharovm-alpine

Pierce

Reply | Threaded
Open this post in threaded view
|

Re: Building on Alpine Linux

Mariano Martinez Peck
In reply to this post by Pierce Ng-3
 


On Sat, Jul 20, 2019 at 9:20 PM Pierce Ng <[hidden email]> wrote:
 
On Sat, Jul 20, 2019 at 02:35:54PM -0300, Mariano Martinez Peck wrote:
> I read you say "I've successfully built the pharo.cog.spur.minheadless
> OpenSmalltalk VM on Alpine Linux."
> Can you elaborate more on that? Where did you put your work? A separate
> branch/fork? Did you change the VM to link against musl?
> Did it compile out of the box?

It compiled more or less out of the box. The changes I made were mostly
to link with additional libraries for functionality that on Alpine have
been put into those libraries. I made these changes by modifying the
output of cmake, which is the reason for my mail to this list: I want to
to find out which files to modify so that cmake produces the right
output for Alpine. Then I'll create a branch/PR.


Exactly. That's the changes I were expecting. 

 

> What our happened in our case is that even if `musl` would give us a
> compatible API in the sense the VM would compile, then, on usage we
> detected things that internally had different behaviors (like iconv). Did
> you encounter anything of this?

That's what I'll find out.  As written in my post said Cog VM
successfully runs a minimal Pharo image doing FFI and Fuel.

I'll be testing it with the regular image running some kind of webapp.

I've also put the Docker image on Dockerhub, but I just looked again and
see that it is missing libgit2, libssh2, etc., so probably no good for
running the regular Pharo image for now.


Excellent. Let us know. In our experiments we found out a few places that behaved differently (the one I remember now is iconv()) but I guess it all depends on "how much" your VM uses from gblic, right? So maybe you use safe areas where both behave the same :)

Anyway, great work and keep pushing. 


--
Mariano Martinez Peck