diff --git a/Golden_Repo/x/xpra/xpra-4.3.2-GCCcore-11.2.0.eb b/Golden_Repo/x/xpra/xpra-4.3.2-GCCcore-11.2.0.eb index 4b23cb1efd72b4b5ce70ecdddee64cc30618630f..b3051bd0f860936e34bba6bb7021b82c4bcee5ea 100644 --- a/Golden_Repo/x/xpra/xpra-4.3.2-GCCcore-11.2.0.eb +++ b/Golden_Repo/x/xpra/xpra-4.3.2-GCCcore-11.2.0.eb @@ -91,10 +91,14 @@ exts_list = [ ('xpra', '4.3.2', dict(list(local_common_opts.items()) + [ ('source_urls', ['https://github.com/Xpra-org/%(name)s/archive/']), ('source_tmpl', 'v%(version)s.tar.gz'), - ('patches', ['xpra-4.0.4-use_Xorg_on_PATH_first.patch']), + ('patches', [ + 'xpra-4.0.4-use_Xorg_on_PATH_first.patch', + 'xpra-add-XPRA_SYSCONF_DIR.patch', + ]), ('checksums', [ ('sha256', '1e548b8d20c243fba40692abb0aa2759e3bd3f2d3b6b51a160f82746cdf1d782'), ('sha256', '83053938421de4dfd4ff8cd5430414180e9f33d5c59b4f1c1428095db6b1fa71'), + ('sha256', 'cdef1de0b941b25cfdfdac11f36b6548febcbd76116761a05f3db3839c33d059'), ]), ('use_pip', False), ('buildopts', '--without-strict --with-nvenc --with-nvjpeg --with-Xdummy'), @@ -103,7 +107,11 @@ exts_list = [ ('xpra-html5', '4.5.2', dict(list(local_common_opts.items()) + [ ('source_urls', ['https://github.com/Xpra-org/%(name)s/archive/']), ('source_tmpl', 'v%(version)s.tar.gz'), - ('checksums', [('sha256', '7f4ccea864fdfb8d6c71a77100fcb2ad07af0773eaafc528ec19ff8187d9bfdb')]), + ('patches', ['xprahtml-4.5.2-encryptionfix.patch']), + ('checksums', [ + ('sha256', '7f4ccea864fdfb8d6c71a77100fcb2ad07af0773eaafc528ec19ff8187d9bfdb'), + ('sha256', '252ce94ac3079c0d4db7a10862fe690ef0dd46ccdf36780bc917b5ff49205eb0'), + ]), ('use_pip', False), ('skipsteps', ['configure', 'build', 'install']), # install in postinstallcmds ('modulename', 'xpra'), @@ -117,6 +125,12 @@ postinstallcmds = [ './setup.py install %(installdir)s/share/xpra/www && ' 'popd' ), + # set specific configurations + ( + # server config + 'touch %(installdir)s/etc/xpra/server.env && ' + "sed -i 's!^source =.*!source = %(installdir)s/etc/xpra/server.env!' %(installdir)s/etc/xpra/conf.d/60_server.conf" + ), # make Xpra randomly choose a GPU for acceleration if present 'mv %(installdir)s/bin/xpra %(installdir)s/bin/xpra.orig', 'head -1 %(installdir)s/bin/xpra.orig > %(installdir)s/bin/xpra', @@ -141,6 +155,9 @@ postinstallcmds = [ 'chmod +x %(installdir)s/bin/xpra', ] +modextravars = { + 'XPRA_SYSCONF_DIR' : '%(installdir)s/etc/xpra', +} modextrapaths = { 'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages'], } diff --git a/Golden_Repo/x/xpra/xpra-add-XPRA_SYSCONF_DIR.patch b/Golden_Repo/x/xpra/xpra-add-XPRA_SYSCONF_DIR.patch new file mode 100644 index 0000000000000000000000000000000000000000..a8d11897c6fc88307956c0e022cd425d3a894d70 --- /dev/null +++ b/Golden_Repo/x/xpra/xpra-add-XPRA_SYSCONF_DIR.patch @@ -0,0 +1,38 @@ +diff -Naur xpra.orig/xpra/platform/xposix/menu_helper.py xpra/xpra/platform/xposix/menu_helper.py +--- a/xpra.orig/xpra/platform/xposix/menu_helper.py 2022-03-30 23:59:37.274275428 +0200 ++++ a/xpra/xpra/platform/xposix/menu_helper.py 2022-03-31 00:06:49.279245408 +0200 +@@ -177,8 +177,9 @@ + def find_pixmap_icon(*names): + if not LOAD_FROM_PIXMAPS: + return None ++ pixmaps_dirs = [d + '/icons' for d in os.environ.get("XDG_DATA_DIRS").split(":")] + pixmaps_dir = "%s/share/pixmaps" % sys.prefix +- pixmaps_dirs = (pixmaps_dir, os.path.join(pixmaps_dir, "comps")) ++ pixmaps_dirs += (pixmaps_dir, os.path.join(pixmaps_dir, "comps")) + for d in pixmaps_dirs: + if not os.path.exists(d) or not os.path.isdir(d): + return None +@@ -411,6 +412,8 @@ + from xdg.Menu import MenuEntry + entries = {} + for d in LOAD_APPLICATIONS: ++ if not os.path.exists(d): ++ continue + for f in os.listdir(d): + if not f.endswith(".desktop"): + continue +diff -Naur xpra.orig/xpra/platform/xposix/paths.py xpra/xpra/platform/xposix/paths.py +--- a/xpra.orig/xpra/platform/xposix/paths.py 2022-03-30 23:59:37.275482000 +0200 ++++ a/xpra/xpra/platform/xposix/paths.py 2022-03-31 00:00:57.851713000 +0200 +@@ -80,7 +80,10 @@ + + + def do_get_system_conf_dirs(): +- dirs = ["/etc/xpra", "/usr/local/etc/xpra"] ++ if os.environ.get("XPRA_SYSCONF_DIR") is not None: ++ dirs = [os.environ.get("XPRA_SYSCONF_DIR")] ++ else: ++ dirs = ["/etc/xpra", "/usr/local/etc/xpra"] + for d in os.environ.get("XDG_CONFIG_DIRS", "/etc/xdg").split(":"): + dirs.append(os.path.join(d, "xpra")) + #hope the prefix is something like "/usr/local" or "$HOME/.local": diff --git a/Golden_Repo/x/xpra/xprahtml-4.5.2-encryptionfix.patch b/Golden_Repo/x/xpra/xprahtml-4.5.2-encryptionfix.patch new file mode 100644 index 0000000000000000000000000000000000000000..141ea3202393d28d69a00c5b30109916da778ba8 --- /dev/null +++ b/Golden_Repo/x/xpra/xprahtml-4.5.2-encryptionfix.patch @@ -0,0 +1,17 @@ +--- a/html5/js/Protocol.js.orig 2022-03-28 12:59:40.198667996 +0200 ++++ b/html5/js/Protocol.js 2022-03-28 13:02:38.099943598 +0200 +@@ -631,6 +631,14 @@ + throw "unsupported encryption specified: '"+cipher+"'"; + } + const key_salt = caps["cipher.key_salt"]; ++ let key_salt = caps["cipher.key_salt"]; ++ if (typeof key_salt !== 'string') { ++ key_salt = String.fromCharCode.apply(null, key_salt); ++ } ++ console.warn("key_salt=", key_salt); ++ console.log("key_salt=", key_salt.constructor); ++ console.log("key_salt=", typeof key_salt); ++ console.log("from packet encoder", this.packet_encoder); + const iterations = caps["cipher.key_stretch_iterations"]; + if (iterations<0) { + throw "invalid number of iterations: "+iterations;