Merge pull request #177918 from klemensn/unity3d-remove

unity3d: Remove
main
Anderson Torres 2 years ago committed by GitHub
commit cf484f356d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 143
      pkgs/development/tools/unity3d/default.nix
  2. 32
      pkgs/development/tools/unity3d/unity-nosuid.c
  3. 1
      pkgs/top-level/aliases.nix
  4. 6
      pkgs/top-level/all-packages.nix

@ -1,143 +0,0 @@
{ stdenv, lib, fetchurl, makeWrapper, file, getopt
, gtk2, gtk3, gdk-pixbuf, glib, libGL, libGLU, nss, nspr, udev, tbb
, alsa-lib, GConf, cups, libcap, fontconfig, freetype, pango
, cairo, dbus, expat, zlib, libpng12, nodejs, gnutar, gcc, gcc_32bit
, libX11, libXcursor, libXdamage, libXfixes, libXrender, libXi
, libXcomposite, libXext, libXrandr, libXtst, libSM, libICE, libxcb, chromium
, libpqxx, libselinux, pciutils, libpulseaudio
}:
let
libPath64 = lib.makeLibraryPath [
gcc.cc gtk2 gdk-pixbuf glib libGL libGLU nss nspr
alsa-lib GConf cups libcap fontconfig freetype pango
cairo dbus expat zlib libpng12 udev tbb
libX11 libXcursor libXdamage libXfixes libXrender libXi
libXcomposite libXext libXrandr libXtst libSM libICE libxcb
libpqxx gtk3
libselinux pciutils libpulseaudio
];
libPath32 = lib.makeLibraryPath [ gcc_32bit.cc ];
binPath = lib.makeBinPath [ nodejs gnutar ];
ver = "2018.3.0";
build = "f2";
in stdenv.mkDerivation {
pname = "unity-editor";
version = "${ver}x${build}";
src = fetchurl {
url = "https://beta.unity3d.com/download/6e9a27477296/LinuxEditorInstaller/Unity.tar.xz";
sha256 = "10gppnqacs1qzahj077nkcgbfz2lryd0dxnfcmvyc64xpxnj9nlk";
};
nosuidLib = ./unity-nosuid.c;
nativeBuildInputs = [ makeWrapper file getopt ];
outputs = [ "out" ];
sourceRoot = ".";
buildPhase = ''
cd Editor
$CC -fPIC -shared -o libunity-nosuid.so $nosuidLib -ldl
strip libunity-nosuid.so
cd ..
'';
installPhase = ''
unitydir="$out/opt/Unity/Editor"
mkdir -p $unitydir
mv Editor/* $unitydir
ln -sf /run/wrappers/bin/${chromium.sandboxExecutableName} $unitydir/chrome-sandbox
mkdir -p $out/bin
makeWrapper $unitydir/Unity $out/bin/unity-editor \
--prefix LD_LIBRARY_PATH : "${libPath64}" \
--prefix LD_PRELOAD : "$unitydir/libunity-nosuid.so" \
--prefix PATH : "${binPath}"
'';
preFixup = ''
patchFile() {
ftype="$(file -b "$1")"
if [[ "$ftype" =~ LSB\ .*dynamically\ linked ]]; then
if [[ "$ftype" =~ 32-bit ]]; then
rpath="${libPath32}"
intp="$(cat $NIX_CC/nix-support/dynamic-linker-m32)"
else
rpath="${libPath64}"
intp="$(cat $NIX_CC/nix-support/dynamic-linker)"
fi
# Save origin-relative parts of rpath.
originRpath="$(patchelf --print-rpath "$1" | sed "s/:/\n/g" | grep "^\$ORIGIN" | paste -sd ":" - || echo "")"
rpath="$originRpath:$rpath"
patchelf --set-rpath "$rpath" "$1"
patchelf --set-interpreter "$intp" "$1" 2> /dev/null || true
fi
}
upm_linux=$unitydir/Data/Resources/PackageManager/Server/UnityPackageManager
orig_size=$(stat --printf=%s $upm_linux)
# 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
patchFile "$path"
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;
dontPatchELF = true;
meta = with lib; {
homepage = "https://unity3d.com/";
description = "Game development tool";
longDescription = ''
Popular development platform for creating 2D and 3D multiplatform games
and interactive experiences.
'';
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ tesq0 ];
};
}

@ -1,32 +0,0 @@
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dlfcn.h>
static const char sandbox_path[] = "/chrome-sandbox";
int __xstat(int ver, const char* path, struct stat* stat_buf) {
static int (*original_xstat)(int, const char*, struct stat*) = NULL;
if (original_xstat == NULL) {
int (*fun)(int, const char*, struct stat*) = dlsym(RTLD_NEXT, "__xstat");
if (fun == NULL) {
return -1;
};
original_xstat = fun;
};
int res = (*original_xstat)(ver, path, stat_buf);
if (res == 0) {
char* pos = strstr(path, sandbox_path);
if (pos != NULL && *(pos + sizeof(sandbox_path) - 1) == '\0') {
printf("Lying about chrome-sandbox access rights...\n");
stat_buf->st_uid = 0;
stat_buf->st_gid = 0;
stat_buf->st_mode = 0104755;
};
}
return res;
}

@ -1414,6 +1414,7 @@ mapAliases ({
ultrastardx-beta = throw "'ultrastardx-beta' has been renamed to/replaced by 'ultrastardx'"; # Converted to throw 2022-02-22
unicorn-emu = unicorn; # Added 2020-10-29
unifiStable = unifi6; # Added 2020-12-28
unity3d = throw "'unity3d' is unmaintained, has seen no updates in years and depends on deprecated GTK2"; # Added 2022-06-16
untrunc = untrunc-anthwlock; # Added 2021-02-01
urxvt_autocomplete_all_the_things = rxvt-unicode-plugins.autocomplete-all-the-things; # Added 2020-02-02
urxvt_bidi = rxvt-unicode-plugins.bidi; # Added 2020-02-02

@ -34895,12 +34895,6 @@ with pkgs;
ums = callPackage ../servers/ums { };
unity3d = callPackage ../development/tools/unity3d {
stdenv = stdenv_32bit;
gcc_32bit = pkgsi686Linux.gcc;
inherit (gnome2) GConf;
};
unityhub = callPackage ../development/tools/unityhub { };
urbit = callPackage ../misc/urbit { };

Loading…
Cancel
Save