unity3d: 5.6.1 -> 2017.4.10 (#48643)

This commit is contained in:
Pavel Platto 2018-10-19 23:36:50 +02:00 committed by Vladyslav M
parent 5b73b46aec
commit 8781308ab6
2 changed files with 53 additions and 60 deletions

View File

@ -1,31 +1,23 @@
{ stdenv, lib, fetchurl, makeWrapper, fakeroot, file, getopt { stdenv, lib, fetchurl, makeWrapper, file, getopt
, gtk2, gdk_pixbuf, glib, libGLU, postgresql, nss, nspr, udev , gtk2, gdk_pixbuf, glib, libGLU, nss, nspr, udev, tbb
, alsaLib, GConf, cups, libcap, fontconfig, freetype, pango , alsaLib, GConf, cups, libcap, fontconfig, freetype, pango
, cairo, dbus, expat, zlib, libpng12, nodejs, gnutar, gcc, gcc_32bit , cairo, dbus, expat, zlib, libpng12, nodejs, gnutar, gcc, gcc_32bit
, libX11, libXcursor, libXdamage, libXfixes, libXrender, libXi , libX11, libXcursor, libXdamage, libXfixes, libXrender, libXi
, libXcomposite, libXext, libXrandr, libXtst, libSM, libICE, libxcb , libXcomposite, libXext, libXrandr, libXtst, libSM, libICE, libxcb, chromium
, mono, libgnomeui, gnome_vfs, gnome-sharp, gtk-sharp-2_0, chromium
}: }:
let let
libPath64 = lib.makeLibraryPath [ libPath64 = lib.makeLibraryPath [
gcc.cc gtk2 gdk_pixbuf glib libGLU postgresql nss nspr gcc.cc gtk2 gdk_pixbuf glib libGLU nss nspr
alsaLib GConf cups libcap fontconfig freetype pango alsaLib GConf cups libcap fontconfig freetype pango
cairo dbus expat zlib libpng12 udev cairo dbus expat zlib libpng12 udev tbb
libX11 libXcursor libXdamage libXfixes libXrender libXi libX11 libXcursor libXdamage libXfixes libXrender libXi
libXcomposite libXext libXrandr libXtst libSM libICE libxcb libXcomposite libXext libXrandr libXtst libSM libICE libxcb
]; ];
libPath32 = lib.makeLibraryPath [ gcc_32bit.cc ]; libPath32 = lib.makeLibraryPath [ gcc_32bit.cc ];
binPath = lib.makeBinPath [ nodejs gnutar ]; binPath = lib.makeBinPath [ nodejs gnutar ];
developBinPath = lib.makeBinPath [ mono ];
developLibPath = lib.makeLibraryPath [
glib libgnomeui gnome_vfs gnome-sharp gtk-sharp-2_0 gtk-sharp-2_0.gtk
];
developDotnetPath = lib.concatStringsSep ":" [
gnome-sharp gtk-sharp-2_0
];
ver = "5.6.1"; ver = "2017.4.10";
build = "f1"; build = "f1";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
@ -33,24 +25,19 @@ in stdenv.mkDerivation rec {
version = "${ver}x${build}"; version = "${ver}x${build}";
src = fetchurl { src = fetchurl {
url = "http://beta.unity3d.com/download/6a86e542cf5c/unity-editor-installer-${version}Linux.sh"; url = "https://beta.unity3d.com/download/14396d76537e/LinuxEditorInstaller/Unity.tar.xz";
sha256 = "10z4h94c9h967gx4b3gwb268zn7bnrb7ylnqnmnqhx6byac7cf4m"; sha256 = "e1b4fe41c0ff793f7a9146c49a8eca8c71d30abdfa3e81922bd69699810b3f67";
}; };
nosuidLib = ./unity-nosuid.c; nosuidLib = ./unity-nosuid.c;
nativeBuildInputs = [ makeWrapper fakeroot file getopt ]; nativeBuildInputs = [ makeWrapper file getopt ];
outputs = [ "out" "monodevelop" ]; outputs = [ "out" ];
sourceRoot = "unity-editor-${version}Linux"; sourceRoot = ".";
unpackPhase = ''
echo -e 'q\ny' | fakeroot sh $src
'';
buildPhase = '' buildPhase = ''
cd Editor cd Editor
$CC -fPIC -shared -o libunity-nosuid.so $nosuidLib -ldl $CC -fPIC -shared -o libunity-nosuid.so $nosuidLib -ldl
@ -65,32 +52,10 @@ in stdenv.mkDerivation rec {
mv Editor/* $unitydir mv Editor/* $unitydir
ln -sf /run/wrappers/bin/${chromium.sandboxExecutableName} $unitydir/chrome-sandbox ln -sf /run/wrappers/bin/${chromium.sandboxExecutableName} $unitydir/chrome-sandbox
mkdir -p $out/share/applications
sed "/^Exec=/c\Exec=$out/bin/unity-editor" \
< unity-editor.desktop \
> $out/share/applications/unity-editor.desktop
install -D unity-editor-icon.png $out/share/icons/hicolor/256x256/apps/unity-editor-icon.png
mkdir -p $out/bin mkdir -p $out/bin
makeWrapper $unitydir/Unity $out/bin/unity-editor \ makeWrapper $unitydir/Unity $out/bin/unity-editor \
--prefix LD_PRELOAD : "$unitydir/libunity-nosuid.so" \ --prefix LD_PRELOAD : "$unitydir/libunity-nosuid.so" \
--prefix PATH : "${binPath}" --prefix PATH : "${binPath}"
developdir="$monodevelop/opt/Unity/MonoDevelop"
mkdir -p $developdir
mv MonoDevelop/* $developdir
mkdir -p $monodevelop/share/applications
sed "/^Exec=/c\Exec=$monodevelop/bin/unity-monodevelop" \
< unity-monodevelop.desktop \
> $monodevelop/share/applications/unity-monodevelop.desktop
mkdir -p $monodevelop/bin
makeWrapper $developdir/bin/monodevelop $monodevelop/bin/unity-monodevelop \
--prefix PATH : "${developBinPath}" \
--prefix LD_LIBRARY_PATH : "${developLibPath}" \
--prefix MONO_GAC_PREFIX : "${developDotnetPath}"
''; '';
preFixup = '' preFixup = ''
@ -105,26 +70,54 @@ in stdenv.mkDerivation rec {
intp="$(cat $NIX_CC/nix-support/dynamic-linker)" intp="$(cat $NIX_CC/nix-support/dynamic-linker)"
fi fi
oldRpath="$(patchelf --print-rpath "$1")" # Save origin-relative parts of rpath.
# Always search at least for libraries in origin directory. originRpath="$(patchelf --print-rpath "$1" | sed "s/:/\n/g" | grep "^\$ORIGIN" | paste -sd ":" - || echo "")"
rpath="''${oldRpath:-\$ORIGIN}:$rpath" rpath="$originRpath:$rpath"
if [[ "$ftype" =~ LSB\ shared ]]; then
patchelf \ patchelf --set-rpath "$rpath" "$1"
--set-rpath "$rpath" \ patchelf --set-interpreter "$intp" "$1" 2> /dev/null || true
"$1"
elif [[ "$ftype" =~ LSB\ executable ]]; then
patchelf \
--set-rpath "$rpath" \
--interpreter "$intp" \
"$1"
fi
fi fi
} }
upm_linux=$unitydir/Data/Resources/Upm/upm-linux
orig_size=$(stat --printf=%s $upm_linux)
# Exclude PlaybackEngines to build something that can be run on FHS-compliant Linuxes # Exclude PlaybackEngines to build something that can be run on FHS-compliant Linuxes
find $unitydir -name PlaybackEngines -prune -o -type f -print | while read path; do find $unitydir -name PlaybackEngines -prune -o -type f -print | while read path; do
patchFile "$path" patchFile "$path"
done done
new_size=$(stat --printf=%s $upm_linux)
###### zeit-pkg fixing starts here.
# we're replacing plaintext js code that looks like
# PAYLOAD_POSITION = '1234 ' | 0
# [...]
# PRELUDE_POSITION = '1234 ' | 0
# ^-----20-chars-----^^------22-chars------^
# ^-- grep points here
#
# var_* are as described above
# shift_by seems to be safe so long as all patchelf adjustments occur
# before any locations pointed to by hardcoded offsets
var_skip=20
var_select=22
shift_by=$(expr $new_size - $orig_size)
function fix_offset {
# $1 = name of variable to adjust
location=$(grep -obUam1 "$1" $upm_linux | cut -d: -f1)
location=$(expr $location + $var_skip)
value=$(dd if=$upm_linux iflag=count_bytes,skip_bytes skip=$location \
bs=1 count=$var_select status=none)
value=$(expr $shift_by + $value)
echo -n $value | dd of=$upm_linux bs=1 seek=$location conv=notrunc
}
fix_offset PAYLOAD_POSITION
fix_offset PRELUDE_POSITION
''; '';
dontStrip = true; dontStrip = true;

View File

@ -22356,7 +22356,7 @@ with pkgs;
unity3d = callPackage ../development/tools/unity3d { unity3d = callPackage ../development/tools/unity3d {
stdenv = stdenv_32bit; stdenv = stdenv_32bit;
gcc_32bit = pkgsi686Linux.gcc; gcc_32bit = pkgsi686Linux.gcc;
inherit (gnome2) GConf libgnomeui gnome_vfs; inherit (gnome2) GConf;
}; };
urbit = callPackage ../misc/urbit { }; urbit = callPackage ../misc/urbit { };