tigervnc: prevent nix store collison

- Prevent store collison with the xserver for two files
- Stop gcc from complaining at build time about C and CXX flags
- Enable parallel building for this expression
- Move to the new way of calling Xorg and it's dependencies
This commit is contained in:
Tony White 2016-01-14 06:31:30 +00:00
parent a1be498630
commit 3a4aa2a109

View File

@ -1,96 +1,86 @@
{ stdenv, fetchFromGitHub, libX11, libXext, gettext, libICE, libXtst, libXi, libSM, xorgserver { stdenv, fetchgit, xorg
, autoconf, automake, cvs, libtool, nasm, utilmacros, pixman, xkbcomp, xkeyboard_config , autoconf, automake, cvs, libtool, nasm, pixman, xkeyboard_config
, fontDirectories, fontutil, libgcrypt, gnutls, pam, flex, bison , fontDirectories, libgcrypt, gnutls, pam, flex, bison, gettext
, fixesproto, damageproto, xcmiscproto, bigreqsproto, randrproto, renderproto , cmake, libjpeg_turbo, fltk
, fontsproto, videoproto, compositeproto, scrnsaverproto, resourceproto
, libxkbfile, libXfont, libpciaccess, cmake, libjpeg_turbo, libXft, fltk, libXinerama
, xineramaproto, libXcursor
}: }:
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "tigervnc-${version}";
version = "1.6.0"; version = "1.6.0";
name = "tigervnc-${version}";
src = fetchFromGitHub { src = fetchgit {
owner = "TigerVNC"; url = "https://github.com/TigerVNC/tigervnc/";
repo = "tigervnc";
rev = "v${version}";
sha256 = "1plljv1cxsax88kv52g02n8c1hzwgp6j1p8z1aqhskw36shg4pij"; sha256 = "1plljv1cxsax88kv52g02n8c1hzwgp6j1p8z1aqhskw36shg4pij";
rev = "5a727f25990d05c9a1f85457b45d6aed66409cb3";
}; };
inherit fontDirectories; inherit fontDirectories;
patchPhase = '' patchPhase = ''
sed -i -e 's,$(includedir)/pixman-1,${if stdenv ? cross then pixman.crossDrv else pixman}/include/pixman-1,' unix/xserver/hw/vnc/Makefile.am sed -i -e 's,$(includedir)/pixman-1,${if stdenv ? cross then pixman.crossDrv else pixman}/include/pixman-1,' unix/xserver/hw/vnc/Makefile.am
sed -i -e '/^$pidFile/a$ENV{XKB_BINDIR}="${if stdenv ? cross then xkbcomp.crossDrv else xkbcomp}/bin";' unix/vncserver sed -i -e '/^$pidFile/a$ENV{XKB_BINDIR}="${if stdenv ? cross then xorg.xkbcomp.crossDrv else xorg.xkbcomp}/bin";' unix/vncserver
sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${if stdenv ? cross then xkeyboard_config.crossDrv else xkeyboard_config}/etc/X11/xkb";' unix/vncserver sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${if stdenv ? cross then xkeyboard_config.crossDrv else xkeyboard_config}/etc/X11/xkb";' unix/vncserver
fontPath= fontPath=
for i in $fontDirectories; do for i in $fontDirectories; do
for j in $(find $i -name fonts.dir); do for j in $(find $i -name fonts.dir); do
addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j) addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j)
done done
done done
sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver
''; '';
# I don't know why I can't use in the script dontUseCmakeBuildDir = true;
# this: ${concatStringsSep " " (map (f: "${f}") xorgserver.patches)}
xorgPatches = xorgserver.patches;
dontUseCmakeBuildDir = "yes";
postBuild = '' postBuild = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fpermissive -Wno-error=int-to-pointer-cast" export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error=int-to-pointer-cast"
export CXXFLAGS="$CXXFLAGS -fpermissive"
# Build Xvnc # Build Xvnc
tar xf ${xorgserver.src} tar xf ${xorg.xorgserver.src}
cp -R xorg*/* unix/xserver cp -R xorg*/* unix/xserver
pushd unix/xserver pushd unix/xserver
for a in $xorgPatches ../xserver116.patch
do
patch -p1 < $a
done
autoreconf -vfi autoreconf -vfi
./configure $configureFlags --disable-xinerama --disable-xvfb --disable-xnest \ ./configure $configureFlags --disable-devel-docs --disable-docs --disable-xinerama --disable-xvfb --disable-xnest \
--disable-xorg --disable-dmx --disable-dri --disable-dri2 --disable-glx \ --disable-xorg --disable-dmx --disable-dri --disable-dri2 --disable-glx \
--prefix="$out" --disable-unit-tests \ --prefix="$out" --disable-unit-tests \
--with-xkb-path=${xkeyboard_config}/share/X11/xkb \ --with-xkb-path=${xkeyboard_config}/share/X11/xkb \
--with-xkb-bin-directory=${xkbcomp}/bin \ --with-xkb-bin-directory=${xorg.xkbcomp}/bin \
--with-xkb-output=$out/share/X11/xkb/compiled --with-xkb-output=$out/share/X11/xkb/compiled
make TIGERVNC_SRCDIR=`pwd`/../.. make TIGERVNC_SRCDIR=`pwd`/../..
popd popd
''; '';
postInstall = '' postInstall = ''
pushd unix/xserver pushd unix/xserver
make TIGERVNC_SRCDIR=`pwd`/../.. install make TIGERVNC_SRCDIR=`pwd`/../.. install
popd
rm -f $out/lib/xorg/protocol.txt
''; '';
crossAttrs = { crossAttrs = {
buildInputs = (map (x : x.crossDrv) (buildInputs ++ [ buildInputs = (map (x : x.crossDrv) (buildInputs ++ [
fixesproto damageproto xcmiscproto bigreqsproto randrproto renderproto xorg.fixesproto xorg.damageproto xorg.xcmiscproto xorg.bigreqsproto xorg.randrproto xorg.renderproto
fontsproto videoproto compositeproto scrnsaverproto resourceproto xorg.fontsproto xorg.videoproto xorg.compositeproto xorg.scrnsaverproto xorg.resourceproto
libxkbfile libXfont libpciaccess xineramaproto xorg.libxkbfile xorg.libXfont xorg.libpciaccess xorg.xineramaproto
])); ]));
}; };
buildInputs = buildInputs =
[ libX11 libXext gettext libICE libXtst libXi libSM libXft [ xorg.libX11 xorg.libXext gettext xorg.libICE xorg.libXtst xorg.libXi xorg.libSM xorg.libXft
nasm libgcrypt gnutls pam pixman libjpeg_turbo fltk xineramaproto nasm libgcrypt gnutls pam pixman libjpeg_turbo fltk xorg.xineramaproto
libXinerama libXcursor xorg.libXinerama xorg.libXcursor
]; ];
nativeBuildInputs = nativeBuildInputs =
[ autoconf automake cvs utilmacros fontutil libtool flex bison [ autoconf automake cvs xorg.utilmacros xorg.fontutil libtool flex bison
cmake cmake
] ]
++ xorgserver.nativeBuildInputs; ++ xorg.xorgserver.nativeBuildInputs;
propagatedNativeBuildInputs = xorgserver.propagatedNativeBuildInputs; propagatedNativeBuildInputs = xorg.xorgserver.propagatedNativeBuildInputs;
enableParallelBuilding = true;
meta = { meta = {
homepage = http://www.tigervnc.org/; homepage = http://www.tigervnc.org/;
@ -98,5 +88,7 @@ stdenv.mkDerivation rec {
description = "Fork of tightVNC, made in cooperation with VirtualGL"; description = "Fork of tightVNC, made in cooperation with VirtualGL";
maintainers = with stdenv.lib.maintainers; [viric]; maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux; platforms = with stdenv.lib.platforms; linux;
# Prevent a store collision.
priority = 4;
}; };
} }