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
|
url = git://depot.h4ck.me/srv/git/blobsets
|
||||||
[submodule "nimble/ninep"]
|
[submodule "nimble/ninep"]
|
||||||
path = nim/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"]
|
[submodule "libretro/libretro-common"]
|
||||||
path = libretro/libretro-common
|
path = libretro/libretro-common
|
||||||
url = https://github.com/libretro/libretro-common.git
|
url = https://github.com/libretro/libretro-common.git
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
url = git@github.com:ehmry/fetch_and_copy.git
|
url = git@github.com:ehmry/fetch_and_copy.git
|
||||||
[submodule "nimble/nim"]
|
[submodule "nimble/nim"]
|
||||||
path = nim/nim
|
path = nim/nim
|
||||||
url = https://github.com/nim-lang/nim.git
|
url = https://github.com/ehmry/nim.git
|
||||||
[submodule "nimble/spry_genode"]
|
[submodule "nimble/spry_genode"]
|
||||||
path = nim/spry_genode
|
path = nim/spry_genode
|
||||||
url = git@github.com:ehmry/spry_genode.git
|
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
|
PKG_CONFIG = PKG_CONFIG_PATH=@(PKG_CONFIG_PATH) pkg-config
|
||||||
|
|
||||||
CC = @(CC_WRAPPER) `$(PKG_CONFIG) genode-base --variable cc`
|
ifndef TOOL_CHAIN_PREFIX
|
||||||
CXX = @(CXX_WRAPPER) `$(PKG_CONFIG) genode-base --variable cxx`
|
error TOOL_CHAIN_PREFIX not configured
|
||||||
LD = `$(PKG_CONFIG) genode-base --variable ld`
|
endif
|
||||||
AR = `$(PKG_CONFIG) genode-base --variable ar`
|
|
||||||
|
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 |>
|
!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 |>
|
!cxx = |> ^ CC %f^ $(CC) $(DEFINES) $(CXXFLAGS) $(CXXFLAGS_%e) $(CXXFLAGS_%f) -c %f -o %o |>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
CONFIG_TUP_ARCH=x86_64
|
CONFIG_TUP_ARCH=x86_64
|
||||||
|
CONFIG_TOOL_CHAIN_PREFIX=genode-x86-
|
||||||
|
|
||||||
CONFIG_SCULPT_VERSION=19.05
|
CONFIG_SCULPT_VERSION=19.05
|
||||||
CONFIG_PKG_CONFIG_PATH=/opt/genode/sdk-19.05/pkgconfig/x86_64
|
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