digitalmars.D - GDC CI on MacOS, FreeBSD, Windows
- wjoe (8/8) Sep 18 2020 The approach I took for building, testing and creating a tarball
- Jacob Carlborg (9/19) Sep 18 2020 macOS and FreeBSD don't support Docker. FreeBSD has similar features (at...
- wjoe (5/14) Sep 18 2020 That's unfortunate.
- Jacob Carlborg (9/11) Sep 18 2020 Funny thing. Back then it was call "Mac OS", which is now referred to as...
- Jacob Carlborg (11/12) Sep 18 2020 Yes. Docker depends on several features only available in the Linux
- wjoe (17/28) Sep 18 2020 I'm not sure if that would work since macOs itself runs in a VM
- Jacob Carlborg (7/13) Sep 18 2020 As I said, that will give you a Linux container. Not what you're looking...
- wjoe (3/12) Sep 18 2020 Thanks for the clarification.
- Iain Buclaw (6/13) Sep 18 2020 Cygwin should also work as well, and that might be easier to get
- Iain Buclaw (7/26) Sep 18 2020 Yeah, I know people who still maintain this hardware (I've even
- Jacob Carlborg (21/26) Sep 18 2020 There was someone posting on the Clang mailing list this year or last
- Iain Buclaw (7/27) Sep 20 2020 The default minimum supported version in GCC is the last release
- Jacob Carlborg (8/15) Sep 22 2020 According to Wikipedia, 10.5 is the last version to natively
- wjoe (4/6) Sep 22 2020 All of this is very interesting but at the same time I'm more
- Jacob Carlborg (8/10) Sep 22 2020 It depends if emulation is acceptable or not, I cannot answer that. If
- wjoe (12/21) Sep 23 2020 I see.
- Imperatorn (2/11) Sep 21 2020 I would personally really appreciate a Windows version
- wjoe (2/4) Sep 22 2020 Windows is on the todo list.
The approach I took for building, testing and creating a tarball for Linux is to build a Docker container which contains enough of an installation of the latest Debian with all the dependencies necessary to build GDC. In order to move forward the next targets I want to add are Mac OS, FreeBSD, and Windows (but not necessarily in that order) and I want to build Docker containers for those like I did for Linux. Which versions are relevant ?
Sep 18 2020
On 2020-09-18 15:46, wjoe wrote:The approach I took for building, testing and creating a tarball for Linux is to build a Docker container which contains enough of an installation of the latest Debian with all the dependencies necessary to build GDC. In order to move forward the next targets I want to add are Mac OS, FreeBSD, and Windows (but not necessarily in that order) and I want to build Docker containers for those like I did for Linux. Which versions are relevant ?macOS and FreeBSD don't support Docker. FreeBSD has similar features (at least some of them) that Docker is built on. macOS doesn't. For macOS, DMD and LDC support 10.7 (I think). Only supporting 10.9 and later wouldn't be any problem, in my opinion. I know that Iain has talked about supporting GDC on macOS on PowerPC. That means something like 10.4, which is ancient. -- /Jacob Carlborg
Sep 18 2020
On Friday, 18 September 2020 at 14:32:15 UTC, Jacob Carlborg wrote:On 2020-09-18 15:46, wjoe wrote:That's unfortunate.[...]macOS and FreeBSD don't support Docker. FreeBSD has similar features (at least some of them) that Docker is built on. macOS doesn't.For macOS, DMD and LDC support 10.7 (I think). Only supporting 10.9 and later wouldn't be any problem, in my opinion. I know that Iain has talked about supporting GDC on macOS on PowerPC. That means something like 10.4, which is ancient.Speaking of ancient... The most recent contact I had with macOs was around version 8.5 :)
Sep 18 2020
On 2020-09-18 17:05, wjoe wrote:Speaking of ancient... The most recent contact I had with macOs was around version 8.5 :)Funny thing. Back then it was call "Mac OS", which is now referred to as "Classic Mac OS". After Mac OS 9, they release Mac OS X 10.0, which was a completely new OS. At some point it was renamed to only OS X. Then a couple of years ago it was renamed to macOS, to better match with Apple's other OSes: iOS, tvOS and iPadOS. Full circle, just different capitalization :) -- /Jacob Carlborg
Sep 18 2020
On 2020-09-18 17:05, wjoe wrote:That's unfortunate.Yes. Docker depends on several features only available in the Linux kernel. Docker is more a less a nice package to interact with these features. I can mention that there's something call "Docker for Mac" (and Windows). But that just installs a highly optimized virtual machine running Linux. Some command line tools that will interact, from the Mac host, with Docker on the VM. So you get Linux containers on Mac. Windows do support native containers, in addition to the above. -- /Jacob Carlborg
Sep 18 2020
On Friday, 18 September 2020 at 15:23:05 UTC, Jacob Carlborg wrote:On 2020-09-18 17:05, wjoe wrote:I'm not sure if that would work since macOs itself runs in a VM at CirrusCI. Also they support Dockerfiles directly. So if Docker were available I would just have to make the Dockerfile with a pre-installed environment, ready to build GDC, and add that to the matrix and adapt the build script. But then again CirrusCI may not be the best CI provider in this scenario and if there's something else... I mean there's no hard requirement to use Cirrus.That's unfortunate.Yes. Docker depends on several features only available in the Linux kernel. Docker is more a less a nice package to interact with these features. I can mention that there's something call "Docker for Mac" (and Windows). But that just installs a highly optimized virtual machine running Linux. Some command line tools that will interact, from the Mac host, with Docker on the VM. So you get Linux containers on Mac.Windows do support native containers, in addition to the above.As for Windows, if memory serves the way to build gcc on Windows was by using MinGW. But last thing I heard was that Windows 10 has Windows Subsystem for Linux and I wouldn't be surprised if that was a VM with a Linux installation and some interface to be able to interact with the Windows host.
Sep 18 2020
On 2020-09-18 17:55, wjoe wrote:I'm not sure if that would work since macOs itself runs in a VM at CirrusCI.As I said, that will give you a Linux container. Not what you're looking for.But last thing I heard was that Windows 10 has Windows Subsystem for Linux and I wouldn't be surprised if that was a VM with a Linux installation and some interface to be able to interact with the Windows host.No, it's the actual Linux kernel running side-by-side with the Windows kernel. Anything you compile there will give you a Linux binary. -- /Jacob Carlborg
Sep 18 2020
On Friday, 18 September 2020 at 18:21:37 UTC, Jacob Carlborg wrote:On 2020-09-18 17:55, wjoe wrote: [...]Thanks for the clarification.But last thing I heard was that Windows 10 has Windows Subsystem for Linux and I wouldn't be surprised if that was a VM with a Linux installation and some interface to be able to interact with the Windows host.No, it's the actual Linux kernel running side-by-side with the Windows kernel. Anything you compile there will give you a Linux binary.
Sep 18 2020
On Friday, 18 September 2020 at 15:55:10 UTC, wjoe wrote:Cygwin should also work as well, and that might be easier to get set-up as a baseline to bootstrap newer versions of gcc if required. If you've got one working, it should be trivial to have the other. The difference should only be what extern(C) bindings are pulled into druntime.Windows do support native containers, in addition to the above.As for Windows, if memory serves the way to build gcc on Windows was by using MinGW. But last thing I heard was that Windows 10 has Windows Subsystem for Linux and I wouldn't be surprised if that was a VM with a Linux installation and some interface to be able to interact with the Windows host.
Sep 18 2020
On Friday, 18 September 2020 at 14:32:15 UTC, Jacob Carlborg wrote:On 2020-09-18 15:46, wjoe wrote:Yeah, I know people who still maintain this hardware (I've even donated a PPC Mac Xserve G5 to them!) Newer versions of OSX just add on top of former, so there's nothing wrong about restricting yourself to a common subset of the available API to bind druntime to.The approach I took for building, testing and creating a tarball for Linux is to build a Docker container which contains enough of an installation of the latest Debian with all the dependencies necessary to build GDC. In order to move forward the next targets I want to add are Mac OS, FreeBSD, and Windows (but not necessarily in that order) and I want to build Docker containers for those like I did for Linux. Which versions are relevant ?macOS and FreeBSD don't support Docker. FreeBSD has similar features (at least some of them) that Docker is built on. macOS doesn't. For macOS, DMD and LDC support 10.7 (I think). Only supporting 10.9 and later wouldn't be any problem, in my opinion. I know that Iain has talked about supporting GDC on macOS on PowerPC. That means something like 10.4, which is ancient.
Sep 18 2020
On 2020-09-19 02:38, Iain Buclaw wrote:Yeah, I know people who still maintain this hardware (I've even donated a PPC Mac Xserve G5 to them!)There was someone posting on the Clang mailing list this year or last year about about some issue with PowerPC. Apparently he was a MacPorts maintainer and they have enough users for it to make sense to still support MacPorts on PowerPC.Newer versions of OSX just add on top of former, so there's nothing wrong about restricting yourself to a common subset of the available API to bind druntime to.Well, if I recall correctly, 10.4 is a bit too limiting. The Posix support was really bad. Fortunately, 10.5 was the last version to support running of PowerPC. That version also comes with quite a nice set of features. Certified to be UNIX compliant (but that's only when running Intel), support for 64-bit versions of many of the system libraries. Objective-C 2.0. 10.6 was the last version to support Rosetta (running PowerPC binaries emulated on Intel). So I would say, 10.5 if you want to run PowerPC natively. The nice thing with macOS is that you can compile on newer versions of the OS and compile it to be backwards compatible using the `MACOSX_DEPLOYMENT_TARGET` environment variable. Just specify the version of the OS you want to target as the value: MACOSX_DEPLOYMENT_TARGET=10.6 clang main.c -- /Jacob Carlborg
Sep 18 2020
On Saturday, 19 September 2020 at 06:22:44 UTC, Jacob Carlborg wrote:On 2020-09-19 02:38, Iain Buclaw wrote:The default minimum supported version in GCC is the last release that supported PPC, i386 and x86_64. So it could be that you're misremembering 10.4; I think the Mac-mini I have is 10.6, though not too sure about that. The only certain thing I know is that it's too old to be upgraded to a newer version. :-)Yeah, I know people who still maintain this hardware (I've even donated a PPC Mac Xserve G5 to them!)There was someone posting on the Clang mailing list this year or last year about about some issue with PowerPC. Apparently he was a MacPorts maintainer and they have enough users for it to make sense to still support MacPorts on PowerPC.Newer versions of OSX just add on top of former, so there's nothing wrong about restricting yourself to a common subset of the available API to bind druntime to.Well, if I recall correctly, 10.4 is a bit too limiting. The Posix support was really bad. Fortunately, 10.5 was the last version to support running of PowerPC. That version also comes with quite a nice set of features. Certified to be UNIX compliant (but that's only when running Intel), support for 64-bit versions of many of the system libraries. Objective-C 2.0. 10.6 was the last version to support Rosetta (running PowerPC binaries emulated on Intel). So I would say, 10.5 if you want to run PowerPC natively.
Sep 20 2020
On Sunday, 20 September 2020 at 14:32:58 UTC, Iain Buclaw wrote:The default minimum supported version in GCC is the last release that supported PPC, i386 and x86_64. So it could be that you're misremembering 10.4;Yes, that's probably the case.I think the Mac-mini I have is 10.6, though not too sure about that.According to Wikipedia, 10.5 is the last version to natively support PPC. And 10.6 is the last version to support running PPC binaries through emulation (Rosetta).The only certain thing I know is that it's too old to be upgraded to a newer version. :-)Hehe. -- /Jacob Carlborg
Sep 22 2020
On Tuesday, 22 September 2020 at 10:23:34 UTC, Jacob Carlborg wrote:On Sunday, 20 September 2020 at 14:32:58 UTC, Iain Buclaw wrote: [ conversation about macOS versions ... ]All of this is very interesting but at the same time I'm more confused now than I was before :S
Sep 22 2020
On 2020-09-22 12:47, wjoe wrote:All of this is very interesting but at the same time I'm more confused now than I was before :SIt depends if emulation is acceptable or not, I cannot answer that. If it is, go with 10.6. Otherwise go with 10.5. What you can do is compile the code on any version of macOS any specify the `MACOSX_DEPLOYMENT_TARGET` environment variable, like this: MACOSX_DEPLOYMENT_TARGET=10.6 clang main.c -- /Jacob Carlborg
Sep 22 2020
On Tuesday, 22 September 2020 at 18:36:30 UTC, Jacob Carlborg wrote:On 2020-09-22 12:47, wjoe wrote:I see. What they are using at Cirrus [1] is Anka Virtualization [2]. They offer High Sierra out of the box but it's possible to build images yourself. This Packer template [3] looks somewhat akin to Dockerfile. Anyways, thanks for your feedback. I'm starting to get a picture. [1] https://medium.com/cirruslabs/announcing-macos-support-on-cirrus-ci-67f2d6a68553 [2] https://veertu.com/technology/ [3] https://github.com/cirruslabs/osx-imagesAll of this is very interesting but at the same time I'm more confused now than I was before :SIt depends if emulation is acceptable or not, I cannot answer that. If it is, go with 10.6. Otherwise go with 10.5. What you can do is compile the code on any version of macOS any specify the `MACOSX_DEPLOYMENT_TARGET` environment variable, like this: MACOSX_DEPLOYMENT_TARGET=10.6 clang main.c
Sep 23 2020
On Friday, 18 September 2020 at 13:46:38 UTC, wjoe wrote:The approach I took for building, testing and creating a tarball for Linux is to build a Docker container which contains enough of an installation of the latest Debian with all the dependencies necessary to build GDC. In order to move forward the next targets I want to add are Mac OS, FreeBSD, and Windows (but not necessarily in that order) and I want to build Docker containers for those like I did for Linux. Which versions are relevant ?I would personally really appreciate a Windows version
Sep 21 2020
On Monday, 21 September 2020 at 21:42:06 UTC, Imperatorn wrote:[...] I would personally really appreciate a Windows versionWindows is on the todo list.
Sep 22 2020