Manage tooling with Nix
Enter managed environment by invoking 'nix-shell' at the root of the repository.
This commit is contained in:
parent
ff5bc1ee34
commit
f35e62c9ce
|
@ -15,7 +15,7 @@
|
|||
url = git://depot.h4ck.me/srv/git/blobsets
|
||||
[submodule "nimble/ninep"]
|
||||
path = nim/ninep
|
||||
url = git://depot.h4ck.me/srv/git/ehmry/ninep
|
||||
url = git://depot.h4ck.me/srv/git/ninep
|
||||
[submodule "libretro/libretro-common"]
|
||||
path = libretro/libretro-common
|
||||
url = https://github.com/libretro/libretro-common.git
|
||||
|
@ -78,7 +78,7 @@
|
|||
url = git@github.com:ehmry/fetch_and_copy.git
|
||||
[submodule "nimble/nim"]
|
||||
path = nim/nim
|
||||
url = https://github.com/nim-lang/nim.git
|
||||
url = https://github.com/ehmry/nim.git
|
||||
[submodule "nimble/spry_genode"]
|
||||
path = nim/spry_genode
|
||||
url = git@github.com:ehmry/spry_genode.git
|
||||
|
|
12
Tuprules.tup
12
Tuprules.tup
|
@ -101,10 +101,14 @@ ERRATA_DIR = $(TUP_CWD)/errata
|
|||
|
||||
PKG_CONFIG = PKG_CONFIG_PATH=@(PKG_CONFIG_PATH) pkg-config
|
||||
|
||||
CC = @(CC_WRAPPER) `$(PKG_CONFIG) genode-base --variable cc`
|
||||
CXX = @(CXX_WRAPPER) `$(PKG_CONFIG) genode-base --variable cxx`
|
||||
LD = `$(PKG_CONFIG) genode-base --variable ld`
|
||||
AR = `$(PKG_CONFIG) genode-base --variable ar`
|
||||
ifndef TOOL_CHAIN_PREFIX
|
||||
error TOOL_CHAIN_PREFIX not configured
|
||||
endif
|
||||
|
||||
CC = $(TOOL_CHAIN_PREFIX)gcc
|
||||
CXX = $(TOOL_CHAIN_PREFIX)g++
|
||||
LD= $(TOOL_CHAIN_PREFIX)ld
|
||||
AR = $(TOOL_CHAIN_PREFIX)ar
|
||||
|
||||
!cc = |> ^ CC %f^ $(CC) $(DEFINES) $(CFLAGS) $(CFLAGS_%e) $(CFLAGS_%f) -c %f -o %o |>
|
||||
!cxx = |> ^ CC %f^ $(CC) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) -c %f -o %o |>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
CONFIG_TUP_ARCH=x86_64
|
||||
CONFIG_TOOL_CHAIN_PREFIX=genode-x86-
|
||||
|
||||
CONFIG_SCULPT_VERSION=19.05
|
||||
CONFIG_PKG_CONFIG_PATH=/opt/genode/sdk-19.05/pkgconfig/x86_64
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
{ pkgs ? import <nixpkgs> {} }: with pkgs;
|
||||
|
||||
pkgs.mkShell {
|
||||
name = "genode-dev-env";
|
||||
nativeBuildInputs =
|
||||
[ (import ./errata/toolchain.nix { inherit pkgs; })
|
||||
stdenv.glibc.dev
|
||||
git tup
|
||||
ccache
|
||||
tcl
|
||||
gnumake
|
||||
which
|
||||
findutils
|
||||
autoconf264
|
||||
autogen
|
||||
|
||||
expect libxml2 syslinux qemu xorriso
|
||||
|
||||
# libc
|
||||
flex bison
|
||||
|
||||
# virtualbox
|
||||
yasm libxslt iasl
|
||||
|
||||
# qt5
|
||||
gperf
|
||||
qt5.full
|
||||
|
||||
# ncurses
|
||||
mawk
|
||||
|
||||
# fb_sdl
|
||||
pkgconfig
|
||||
SDL.dev
|
||||
alsaLib.dev
|
||||
|
||||
# ncurses port needs infocmp
|
||||
ncurses
|
||||
];
|
||||
|
||||
shellHook =
|
||||
''
|
||||
export PROMPT_DIRTRIM=2
|
||||
export PS1="\[\033[1;30m\]Genode-dev [\[\033[1;37m\]\w\[\033[1;30m\]] $\[\033[0m\] "
|
||||
export PS2="\[\033[1;30m\]>\[\033[0m\] "
|
||||
'';
|
||||
# Setup a prompt with a distinct appearance
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
{ pkgs ? import <nixpkgs> {} }: with pkgs;
|
||||
|
||||
let
|
||||
genodeVersion = "19.05";
|
||||
glibcVersion = (builtins.parseDrvName stdenv.glibc.name).version;
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "genode-toolchain-${genodeVersion}";
|
||||
version = genodeVersion;
|
||||
|
||||
src =
|
||||
if stdenv.isx86_64 then
|
||||
fetchurl {
|
||||
url = "https://downloads.sourceforge.net/project/genode/genode-toolchain/${genodeVersion}/genode-toolchain-${genodeVersion}-x86_64.tar.xz";
|
||||
sha256 = "036czy21zk7fvz1y1p67q3d5hgg8rb8grwabgrvzgdsqcv2ls6l9";
|
||||
}
|
||||
else abort "no toolchain for ${stdenv.system}";
|
||||
|
||||
buildInputs = [ patchelf ];
|
||||
|
||||
dontPatchELF = true;
|
||||
|
||||
# installPhase is disabled for now
|
||||
phases = "unpackPhase fixupPhase";
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $out
|
||||
|
||||
echo "unpacking $src..."
|
||||
tar xf $src --strip-components=5 -C $out
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cd $out/bin
|
||||
for platform in arm x86 ; do
|
||||
dest="$"$platform"/bin"
|
||||
eval dest=$"$dest"
|
||||
|
||||
mkdir -p $dest
|
||||
|
||||
for b in genode-$platform-* ; do
|
||||
eval ln -s $b $dest/$\{b#genode-$platform-\}
|
||||
done
|
||||
|
||||
done
|
||||
cd -
|
||||
'';
|
||||
|
||||
fixupPhase = ''
|
||||
interp=${stdenv.glibc.out}/lib/ld-${glibcVersion}.so
|
||||
if [ ! -f "$interp" ] ; then
|
||||
echo new interpreter $interp does not exist,
|
||||
echo cannot patch binaries
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for f in $(find $out); do
|
||||
if [ -f "$f" ] && patchelf "$f" 2> /dev/null; then
|
||||
patchelf --set-interpreter $interp \
|
||||
--set-rpath $out/lib:${stdenv.glibc.out}/lib:${zlib.out}/lib \
|
||||
"$f" || true
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
passthru = { libc = stdenv.glibc; };
|
||||
}
|
Loading…
Reference in New Issue