forked from justincormack/frankenlibc
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f6c2029
commit 08ead78
Showing
6 changed files
with
166 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,59 @@ | ||
language: c | ||
language: nix | ||
|
||
compiler: | ||
- gcc | ||
- clang | ||
env: | ||
global: | ||
# XXX: Nix on Travis uses the master branch of the nixpkgs repo, meaning we | ||
# need to pin nixpkgs to a specific version if we want to avoid frequent | ||
# rebuilds of dependant packages. | ||
# | ||
# TODO: <nixpkgs> should ideally point to the latest stable release. | ||
# However, we currently use the unstable release (@ 2019-03-03) since we | ||
# depend on NixOS/nixpkgs#52146, which hasn't been merged into stable yet. | ||
# It should be possible to use stable once 19.09 is out. | ||
- NIX_PATH=nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/34aa254f9ebf5899636a9927ceefbc9df80230f4.tar.gz | ||
|
||
matrix: | ||
include: | ||
# FIXME: Some of these are disabled for now; additional work is required | ||
# for nix support. It didn't even work well without nix anyways because | ||
# excessive log output caused Travis to terminate the build process. | ||
# | ||
# - name: "GCC" | ||
# env: BUILD_TARGET=frankenlibc-gcc | ||
# - name: "Clang" | ||
# env: BUILD_TARGET=frankenlibc-clang | ||
- name: "QEMU ARM" | ||
env: BUILD_TARGET=frankenlibc-arm | ||
|
||
git: | ||
# XXX: Submodules have to be fetched manually since it frequently times out. | ||
submodules: false | ||
|
||
cache: | ||
timeout: 1000 | ||
directories: | ||
- $HOME/nix.store | ||
# XXX: Beware. Desperate attempt to cache the lkl repository. | ||
- $TRAVIS_BUILD_DIR/.git/modules | ||
|
||
before_cache: | ||
- mkdir -p $HOME/nix.store | ||
- | | ||
nix copy --to file://$HOME/nix.store -f default.nix \ | ||
"$BUILD_TARGET".buildInputs \ | ||
"$BUILD_TARGET".nativeBuildInputs \ | ||
"$BUILD_TARGET".depsBuildBuild | ||
before_install: | ||
- travis_wait 30 git submodule update --init --recursive | ||
- mkdir -p $HOME/.config/nix | ||
- | | ||
# XXX: We write the configuration line-by-line, since Travis doesn't seem | ||
# to recognize heredoc delimiters for some reason. | ||
echo "substituters = file://$HOME/nix.store https://cache.nixos.org/" \ | ||
>> ~/.config/nix/nix.conf | ||
echo "require-sigs = false" \ | ||
>> ~/.config/nix/nix.conf | ||
script: | ||
- ./build.sh | ||
- nix-build -A "$BUILD_TARGET" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
{ pkgs ? import <nixpkgs> {} }: | ||
|
||
with pkgs; | ||
|
||
let | ||
callPackage = lib.callPackageWith (pkgs // self); | ||
|
||
self = { | ||
frankenlibc-gcc = callPackage ./nix/frankenlibc.nix { }; | ||
|
||
frankenlibc-clang = callPackage ./nix/frankenlibc.nix { | ||
stdenv = clangStdenv; | ||
}; | ||
|
||
frankenlibc-arm = callPackage ./nix/frankenlibc.nix { | ||
# XXX: We need newlib-nano instead of newlib to compile. See | ||
# NixOS/nixpkgs#51907 for details. | ||
stdenv = | ||
let armStdenv = mkStdenvNoLibs pkgsCross.arm-embedded.stdenv; | ||
in overrideCC armStdenv gcc-arm-embedded; | ||
}; | ||
|
||
qemu-circle = callPackage ./nix/qemu-circle.nix { }; | ||
}; | ||
|
||
in self |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
{ stdenv, lib, buildPackages, bc, e2fsprogs, python, zlib, qemu-circle }: | ||
|
||
stdenv.mkDerivation ({ | ||
name = "frankenlibc"; | ||
|
||
src = lib.cleanSource ../.; | ||
|
||
depsBuildBuild = [ buildPackages.stdenv.cc zlib ]; | ||
nativeBuildInputs = | ||
[ bc e2fsprogs python ] ++ lib.optionals stdenv.isAarch32 [ qemu-circle ]; | ||
|
||
buildFlags = if stdenv.isAarch32 then [ "-k" "linux" "qemu-arm" ] else []; | ||
|
||
# TODO: Separate checkPhase from buildPhase. | ||
buildPhase = "./build.sh $buildFlags"; | ||
|
||
# FIXME: The copied output is not directly usable, since there are absolute | ||
# paths everywhere. | ||
installPhase = "cp -r . $out"; | ||
} | ||
// lib.optionalAttrs stdenv.isAarch32 { | ||
# XXX: Workaround to prevent Travis from terminating the build by suppressing | ||
# log ouput. Travis terminates any build that produce logs exceeding 4MB. | ||
fixupPhase = ":"; | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
{ stdenv, fetchurl, fetchFromGitHub, overrideCC, qemu, gcc6, SDL }: | ||
|
||
let | ||
qemu-circle = qemu.override { | ||
hostCpuTargets = [ "arm-softmmu" ]; | ||
pulseSupport = false; | ||
sdlSupport = false; SDL2 = SDL; | ||
gtkSupport = false; | ||
vncSupport = false; | ||
smartcardSupport = false; | ||
spiceSupport = false; | ||
xenSupport = false; | ||
cephSupport = false; | ||
openGLSupport = false; | ||
virglSupport = false; | ||
smbdSupport = false; | ||
}; | ||
|
||
diffForCommit = commit: "https://github.com/qemu/qemu/commit/${commit}.diff"; | ||
in | ||
qemu-circle.overrideAttrs (old: rec { | ||
name = "qemu-circle-${version}"; | ||
version = "2.4.1"; | ||
sha256 = "19936r6x7wal09zh0f1s5y32v4k4z5nmnfb2jf0padmff3808jl9"; | ||
src = fetchFromGitHub { | ||
owner = "rsta2"; | ||
repo = "qemu"; | ||
rev = "7a24a5a051ea83529b057fd18c76ca40eb717392"; | ||
fetchSubmodules = true; | ||
inherit sha256; | ||
}; | ||
|
||
patches = builtins.tail old.patches ++ [ | ||
(fetchurl { | ||
url = diffForCommit "75e5b70e6b5dcc4f2219992d7cffa462aa406af0"; | ||
sha256 = "0a9a09xy4iy6gnmhlbgj28pvzxwp7h165s3rvpc9n6b7lbm0dibj"; | ||
}) | ||
]; | ||
|
||
stdenv = overrideCC stdenv gcc6; | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters