Commit Graph

1100 Commits

Author SHA1 Message Date
Wolfgang Thaller d37d7e0612 use determinate nix installer & flake build on ADO 2023-12-26 23:22:55 +01:00
Wolfgang Thaller 97a0822244 add platform-specific samples packages 2023-12-26 23:14:38 +01:00
Wolfgang Thaller 7bebb04690 use nixos-23.11, update niv to match flake 2023-12-26 20:26:57 +01:00
Wolfgang Thaller 867b3eca74 update multiversal 2023-12-26 20:15:15 +01:00
Wolfgang Thaller af8c831bfa add carbon to default package 2023-12-26 19:54:40 +01:00
Wolfgang Thaller 047e390419 add a 'samples' package 2023-12-26 19:53:51 +01:00
Wolfgang Thaller 2dd9d79398 add a check so that the flake can be used with submodules as well 2023-12-26 19:53:34 +01:00
Wolfgang Thaller 914ce6e144 add an url for flake-parts 2023-12-26 19:04:49 +01:00
Wolfgang Thaller faf6b7fbbf we don't actually need libcCrossChooser 2023-12-26 18:44:00 +01:00
Wolfgang Thaller e51da67371 add a default package 2023-12-26 18:44:00 +01:00
Wolfgang Thaller 963594d8d8 add .envrc 2023-12-26 18:44:00 +01:00
Wolfgang Thaller f98b4910dc add packages for tools & hfsutils 2023-12-26 18:44:00 +01:00
Wolfgang Thaller 7e0e20edbd add ninja to shells 2023-12-26 18:44:00 +01:00
Wolfgang Thaller c11fd5f303 prevent inifinite recursion for stdenvUniversal 2023-12-26 18:44:00 +01:00
Wolfgang Thaller 21e79c8adf overlay.nix cleanup 2023-12-26 18:43:52 +01:00
Wolfgang Thaller f21a12a7eb platfoms.nix cleanup: add vendor and abi 2023-12-26 18:43:52 +01:00
Wolfgang Thaller 551c7588ca Set up flake using the old overlay.nix 2023-12-26 18:43:32 +01:00
Wolfgang Thaller a3db211410
Merge pull request #216 from mcayland/feature/docker-build-universal
Retro68: improve Docker support to enable builds with Universal interfaces
2023-12-17 23:03:12 +01:00
Mark Cave-Ayland 14503f0611 README.md: add section on using the Retro68 docker image 2023-12-17 21:13:07 +00:00
Mark Cave-Ayland 6931631adc Dockerfile: add logic for optional install Universal interfaces on startup
Define a docker-entrypoint.sh that checks for the environment variables INTERFACES.
If INTERFACES is set to "universal" then we do the following:

  - If the universal/RIncludes directory is not empty, assume that the Universal
    interfaces are already installed. Call interfaces-and-libraries.sh to link
    the Universal interfaces instead of the default multiversal interfaces.

  - Otherwise check the INTERFACESFILE environment variable to locate a suitable
    Macbinary DiskCopy image of MPW-GM.img.bin containing the
    "Interfaces&Libraries" directory, which can be a path within the container
    image itself or an external URL. If the file is a URL then download it first,
    then decompress the file using ConvertDiskImage and then use the in-built
    hfsutils to extract the relevant files under /tmp/InterfacesAndLibraries.
    Finally call interfaces-and-libraries.sh to link the Universal interfaces
    instead of the default multiversal interfaces.

Otherwise use the multiversal interfaces which are included by default.
2023-12-17 21:13:01 +00:00
Mark Cave-Ayland 4042463991 Dockerfile: add macutils and interfaces-and-libraries.sh to image
These files will be required in order to download and install the Universal
Interfaces within the created image.
2023-12-17 20:11:54 +00:00
Wolfgang Thaller c57f0d98db init flake 2023-12-17 19:42:57 +01:00
Wolfgang Thaller 9dd5dca1fa fix libelf build 2023-12-17 19:04:58 +01:00
Wolfgang Thaller b4a91d430f
Merge pull request #213 from Thesola10/patch-1
Use global nixpkgs to allow immutable builds
2023-12-17 01:20:13 +01:00
Wolfgang Thaller 4116be4acc Merge branch 'docker-build' - finally incorporate PR #193 :-) 2023-12-16 23:49:12 +01:00
Wolfgang Thaller 01bccd3d35 remove test image from Dockerfile, link to repo 2023-12-16 22:49:02 +01:00
Wolfgang Thaller bde2e8f74f only push docker image when on main branch 2023-12-16 22:29:26 +01:00
Wolfgang Thaller 323d3e3a34 Revert "azure-pipelines.yml: temporary disable all non-Linux builds"
This reverts commit a230a79ca3.
2023-12-16 22:27:36 +01:00
Wolfgang Thaller 9ff29c557e reactivate actual build 2023-12-16 20:40:14 +01:00
Wolfgang Thaller 3737404c4b without comdition 2023-12-16 19:10:22 +01:00
Wolfgang Thaller 192081cd01 use variable group 2023-12-16 19:05:30 +01:00
Wolfgang Thaller e2143c9c20 try with service connection again 2023-12-16 17:02:16 +01:00
Wolfgang Thaller 34eeb4dbb7 use token variable and explicit commands for docker 2023-12-16 16:47:36 +01:00
Wolfgang Thaller 1d8f4f6774 test setup for docker 2023-12-16 16:27:50 +01:00
Wolfgang Thaller 8b57ceac12 add /build to gitignore 2023-12-16 15:14:53 +01:00
Wolfgang Thaller 147b839de6 update docker connection 2023-12-16 12:59:53 +01:00
Mark Cave-Ayland de06b24fd7 azure-pipelines.yml: push retro68 release image to GHCR
This release image contains the basic toolchain that can be used for building
projects without having to build Retro68 locally, including integration into a
CI pipeline.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland 3a4468b270 azure-pipelines.yml: switch from host build to container build
This has two main advantages: firstly it means that the Dockerfile is being tested
as part of the pipeline when changes are merged into master, and secondly it allows
testing of Linux builds without requiring a separate job for Docker that can consume
even more CI minutes.

In order to test the container image it is necessary to manually start the build
image using docker run, execute the tests, and then copy the results back to the
host ready for publishing.

Note that since the base OS image is now handled by docker we can switch the host
to use the 'ubuntu-latest' image rather than the older 'ubuntu-20.04' image.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland d8e2780f8d Dockerfile: add toolchain bin directory to the default PATH
This allows the Retro68 compilers to be executed regardless of the current
working directory which is set to /root by default.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland 86a16a78cf Dockerfile: add git package to the image
This enables code to be checked out from within the running container as is
typically used by CI runners.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland bde1485a9e Dockerfile: only copy the build directory artifacts into the final release image
Use the docker multi-stage build functionality to perform the Retro68 build in a
temporary build image, and then copy the final build directory into a fresh
release image. This reduces the final release image size from 9.2GB to 2.6GB.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland 0649693436 Dockerfile: bring build up to date with that in azure-pipelines.yml
Update Dockerfile to use Ubuntu 20.04 and the updated package list from
azure-pipelines.yml. Also explicitly include the g++ package into the container
without which configure will error out with a 'configure: error: C++ preprocessor
"/lib/cpp" fails sanity check' error.
2023-12-16 12:59:53 +01:00
Mark Cave-Ayland a230a79ca3 azure-pipelines.yml: temporary disable all non-Linux builds 2023-12-16 12:59:51 +01:00
Wolfgang Thaller 591f2620d2 export variables from PEF (thanks to @elliotnunn) 2023-12-16 03:55:00 +01:00
Wolfgang Thaller d77e4d1411 Merge remote-tracking branch 'origin/master' into gcc12-update 2023-12-12 23:48:09 +01:00
Wolfgang Thaller 6b552072a9 Merge branch 'master' into gcc12-update 2023-12-12 23:47:15 +01:00
Wolfgang Thaller 6ac29f751a fix weak[BS] symbol bug in xcoff linker 2023-12-12 20:40:58 +01:00
Wolfgang Thaller c0d4e00b35 add LocalStatic test case 2023-12-12 20:40:57 +01:00
Wolfgang Thaller d2dbd28dd3 update gitignore 2023-12-12 20:39:32 +01:00
Wolfgang Thaller a97417fecc ci: update nix docker version 2023-12-09 01:03:45 +01:00