Hello community, here is the log from the commit of package PlayOnLinux for openSUSE:Factory checked in at 2018-11-28 11:15:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/PlayOnLinux (Old) and /work/SRC/openSUSE:Factory/.PlayOnLinux.new.19453 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "PlayOnLinux" Wed Nov 28 11:15:24 2018 rev:6 rq:652223 version:4.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/PlayOnLinux/PlayOnLinux.changes 2018-07-04 23:56:23.935808211 +0200 +++ /work/SRC/openSUSE:Factory/.PlayOnLinux.new.19453/PlayOnLinux.changes 2018-11-28 11:15:27.554725749 +0100 @@ -1,0 +2,12 @@ +Tue Nov 27 18:15:23 UTC 2018 - ecsos@opensuse.org + +- Update to 4.3.3 + * Linux: Fix HDPI support + * Compatibility with OSX < Mojave +- Changes from 4.3 + * Various fix on OSX + * Phoenicis (POL 5) winebuild compatibility. POL 4 winebuilds + will be deprecated. + (See https://github.com/PhoenicisOrg/phoenicis-winebuild) + +------------------------------------------------------------------- Old: ---- PlayOnLinux_4.2.12.tar.gz New: ---- PlayOnLinux_4.3.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ PlayOnLinux.spec ++++++ --- /var/tmp/diff_new_pack.mVdEwT/_old 2018-11-28 11:15:31.234720612 +0100 +++ /var/tmp/diff_new_pack.mVdEwT/_new 2018-11-28 11:15:31.246720595 +0100 @@ -18,7 +18,7 @@ Name: PlayOnLinux %define _name playonlinux -Version: 4.2.12 +Version: 4.3.3 Release: 0 Summary: Play your Windows games on GNU/Linux License: GPL-3.0-only @@ -37,6 +37,7 @@ Requires: dbus-1-python Requires: gettext Requires: icoutils +Requires: jq # Remove when p7zip-full is in all products %if 0%{suse_version} > 1500 Requires: p7zip-full @@ -65,6 +66,9 @@ %setup -q -n %{_name} %patch0 -p1 %patch10 -p1 +# rpmlint +find . -type f -exec sed -i -e 's|\/usr\/bin\/env python|\/usr\/bin\/python|g' {} \; +find . -type f -exec sed -i -e 's|\/usr\/bin\/env bash|\/bin\/bash|g' {} \; %build # Nothing to build. ++++++ PlayOnLinux_4.2.12.tar.gz -> PlayOnLinux_4.3.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/CHANGELOG.md new/playonlinux/CHANGELOG.md --- old/playonlinux/CHANGELOG.md 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/CHANGELOG.md 2018-11-20 23:04:47.000000000 +0100 @@ -1,3 +1,11 @@ +# 4.3.3 +* Linux: Fix HDPI support +* Compatibility with OSX < Mojave + +# 4.3 +* Various fix on OSX +* Phoenicis (POL 5) winebuild compatibility. POL 4 winebuilds will be deprecated. (See https://github.com/PhoenicisOrg/phoenicis-winebuild) + # 4.2.11 * Fix POL_SetupWindow_download clobbering $FILENAME * Fix small typo in first use "send report" message @@ -138,11 +146,11 @@ * Corefonts are now managed as any other POL_Call package. (Debian.lib is consequently no longer needed) * Removing installation process of missing gecko and mono at startup. It should not happen anymore * Cleaner way to save panel position -* Fix a bug in GetSettings() where the value contain the equal ('=') character +* Fix a bug in GetSettings() where the value contain the equal ('=') character * PlayOnMac does no longer need a reboot after installing XQuartz * PlayOnMac does no longer popup a warning before xterm is installed -* Removing IRC -* Icones install can now be bigger than 22x22 +* Removing IRC +* Icones install can now be bigger than 22x22 # 4.2.2 @@ -161,7 +169,7 @@ (http://www.playonlinux.com/en/topic-10442-New_Warning_Message_on_startup.htm...) * wine-mono download support * Fix POL_SetupWindow_message typo (not enough video memory message) (#2790) -* POL_LoadVar_Device: refacto POL_DetectVideoCards; +* POL_LoadVar_Device: refacto POL_DetectVideoCards; Let user choose when there's more than one known videocard present * Add link to download page in side panel when version is not up-to-date (#2677) Not sure it's visible enough, could be improved. @@ -176,11 +184,11 @@ scripts in $POL_USER_ROOT/configurations/function_overrides/ override function scripts by the same name. This feature disables bug reporting. * Fix website login when username contains spaces (#3573) -* "Run an .exe in this virtual disk" sets current directory to program's +* "Run an .exe in this virtual disk" sets current directory to program's directory (#1855) * fix "wineserver not found" in interactive use of POL_Wine_Direct3D / POL_Wine_X11Drv / POL_Wine_DirectSound / POL_Wine_DirectInput -* Remove use of os.system() from mainwindow.py and configure.py +* Remove use of os.system() from mainwindow.py and configure.py (less overhead, less quoting nightmare) * Add missing POL_Wine_AutoSetVersionEnv before wineserver calls @@ -276,7 +284,7 @@ # 4.1.5 -* POL_Debug_* cookie forgotten +* POL_Debug_* cookie forgotten * Bug in update process # 4.1.4 @@ -287,7 +295,7 @@ * Clickable links on install window * Better (and clearer) debug windows * Small fix for OSX 10.8 -* NEW: PlayOnLinux --run supports extensions! +* NEW: PlayOnLinux --run supports extensions! * POL_Shortcut_Document : Researches * New POL_SetupWindow_browse GUI * POL_SetupWindow_browse supports filters @@ -334,7 +342,7 @@ # 4.1.1 Fixes to critial problem -* Removing optirun support which makes wine hang +* Removing optirun support which makes wine hang * UTF8 problem with files association # 4.1.0 @@ -360,7 +368,7 @@ * Local var problems * POL_Lnk_Read to read .lnk files * New screenshot system -* Bugfix +* Bugfix * Arch problem * Pre run command should not be shown for prefixes * Fix TRANSLATORS files, some names did not appear. @@ -411,7 +419,7 @@ * Bug 732 : text color * Writting POL_WGET everywhere * unset WINEARCH -* When installing a patched Wine, deploy Gecko for the non-patched version +* When installing a patched Wine, deploy Gecko for the non-patched version * Report "patched Wine version" in prefix logs only when it's true * POL_ExtractIcon, POL_ExtractBiggestIcon: can also extract icons from .ico files * Removed dependency upon curl by posting to pastebin with wget (bug #670) @@ -450,7 +458,7 @@ recreated if user choose to delete it) * Title in IRC close confirm box * wineprefixcreate should no longer exist! - POL needs to run it on OLD POL versions, + POL needs to run it on OLD POL versions, but should NOT run in on recent ones. * Bugfix in requiredversion * SelectPrefix make the directory @@ -485,7 +493,7 @@ * Title on dialog boxes * OpenGL detection * Removing Offline POL (no longer supported) -* rm "*" message removed (Don't worry, it was controled) +* rm "*" message removed (Don't worry, it was controled) * POL_Shortcut(): Possibly to use path instead of executable * POL_Shortcut_InsertBeforeWine: made sure the commands are not interpreted before insertion. Even \n is no longer interpreted, to insert several lines, @@ -569,7 +577,7 @@ * POL_Functions fixed. * Update of Capture. * Variouses fixes. - + # 4.0.2 * External shortcuts fixed. @@ -701,8 +709,8 @@ * playonlinux-cmd * playonlinux-pkg * Plugins: Capture -* Removing some unused files plus cleaning some files. -* Update copyright header. +* Removing some unused files plus cleaning some files. +* Update copyright header. # 3.8.1 @@ -740,7 +748,7 @@ * Added POL_SetupWindow_auto_shortcut which will replace POL_SetupWindow_make_shortcut * Added POL_SetupError function * install.py is fully compatible with offline mode plugin -* Some bugs corrected in wine version management +* Some bugs corrected in wine version management # 3.7.6 @@ -821,7 +829,7 @@ # 3.2 -* PlayOnLinux's game configurator is remade. +* PlayOnLinux's game configurator is remade. * The scriptor has the possibility to make a configurator for each script in ~/.PlayOnLinux/configurations/configurators/script_name * The irc chat is removed * GLSL bug corrected @@ -835,13 +843,13 @@ # 3.1.2 -* PlayOnLinux install menu is faster +* PlayOnLinux install menu is faster * Low connection can read the descriptions # 3.1.1 * Description box in install menu has become an html box. Now, it's possible to underline or bold words in the description of a game. -* Descriptions are downloaded when the user clic on the name of the game, and no more when PlayOnLinux repositories are refreshed. +* Descriptions are downloaded when the user clic on the name of the game, and no more when PlayOnLinux repositories are refreshed. * Users can edit the description of a game on the website when they send a script. * PlayOnLinux repositories refreshing has become faster * A bug corrected in folders like "Applications Data". Now, it has the same name for every languages do avoid problems. @@ -878,7 +886,7 @@ * New GUIs * POL is is .po files * New wine version support GUI -* Minor corrections in IRC +* Minor corrections in IRC * A lot of new fonction * Use_WineVersion function @@ -913,18 +921,18 @@ # 2.6 * A lot of improvement in IRC chat -* An Option GUI +* An Option GUI * A lot of settings added -# 2.5 +# 2.5 -* IRC Chat integrated +* IRC Chat integrated * Lynx dependances does exists any more * Install menu bug fixed # 2.3 -* New install menu +* New install menu * Lot of bugs fixed # 2.2.1 @@ -939,7 +947,7 @@ * New menu more user friendly * Autorun automated installer * Community and workonlinux doesn't exists anymore -* Ask_For_cdrom improved +* Ask_For_cdrom improved * Fixed bugs in package manager * Lot of translations * Lot of commands translated in english @@ -953,7 +961,7 @@ * Hungarian translation * .pol package manager * A new logo -* LiveInstall is called "Manual installation" +* LiveInstall is called "Manual installation" * Bug corrected in icons installation * Wine GIT in wineversion menu @@ -1002,7 +1010,7 @@ # 2.0.2 -* Wine GIT added +* Wine GIT added * Wine Booster 2 Added # 2.0.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/Makefile new/playonlinux/Makefile --- old/playonlinux/Makefile 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/Makefile 2018-11-20 23:04:47.000000000 +0100 @@ -24,6 +24,7 @@ CC = gcc $(CFLAGS) PYTHON = python2 -m py_compile GZIP = gzip +SHELL := /bin/bash PREFIX ?= /usr DESTDIR ?= # root dir diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/bash/install_wver new/playonlinux/bash/install_wver --- old/playonlinux/bash/install_wver 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/bash/install_wver 2018-11-20 23:04:47.000000000 +0100 @@ -15,16 +15,17 @@ # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. [ "$PLAYONLINUX" = "" ] && exit 0 -source "$PLAYONLINUX/lib/sources" +source "$PLAYONLINUX/lib/sources" POL_SetupWindow_Init [ "$2" = "" ] && POL_System_SetArch "auto" || POL_System_SetArch "$2" -version=$1 +[ "$3" = "" ] && distribution="upstream" || distribution="$3" +version="$1" TITLE="Wine $version ($2) installer" POL_SetupWindow_free_presentation "Wine $1" "$(eval_gettext "This wizard will help you to install Wine: ")$version ($2) $(eval_gettext 'on the $APPLICATION_TITLE environment.')" -POL_Wine_InstallVersion "$1" +POL_Wine_InstallVersion "$1" "$3" POL_SetupWindow_Close -exit 0 \ No newline at end of file +exit 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/bash/startup_after_server new/playonlinux/bash/startup_after_server --- old/playonlinux/bash/startup_after_server 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/bash/startup_after_server 2018-11-20 23:04:47.000000000 +0100 @@ -24,13 +24,13 @@ source "$PLAYONLINUX/lib/sources" -export XQUARTZ_VERSION="2.7.7" +export XQUARTZ_VERSION="2.7.11" install_x11() { - XQuartzUrl="http://xquartz.macosforge.org/downloads/SL/XQuartz-$XQUARTZ_VERSION.dmg" + XQuartzUrl="http://dl.bintray.com/xquartz/downloads/XQuartz-$XQUARTZ_VERSION.dmg" FilePrefix="XQuartz" STEP_TITLE="XQuartz" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/lib/wine.lib new/playonlinux/lib/wine.lib --- old/playonlinux/lib/wine.lib 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/lib/wine.lib 2018-11-20 23:04:47.000000000 +0100 @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # wine.lib # -------- @@ -513,7 +513,7 @@ NoErrors="True" shift fi - + if [ ! "$(POL_Config_Read NO_FSCHECK)" = "TRUE" ]; then if [ "$1" = "start" ]; then if [ "$2" = "/unix" ]; then @@ -569,7 +569,7 @@ errors=$? fi else - # FIXME + # FIXME $BEFORE_WINE $(POL_Config_Read BEFORE_WINE) wine "$@" 2> "$WINEPREFIX/playonlinux.log" > "$WINEPREFIX/playonlinux.log" errors=$? fi @@ -597,7 +597,7 @@ else touch "$WINEPREFIX/playonlinux.cfg" 2> /dev/null fi - + ## In fact it's a bad idea #if [ "$(POL_Config_PrefixRead ARCH)" = "x86" ]; then ## Comme ca, pas de conflits # export WINEARCH=win32 @@ -658,6 +658,19 @@ # Install a wineversion # Usage: POL_Wine_InstallVersion [VERSION] [ ! "$1" = "" ] && export POL_WINEVERSION="$1" + [ ! "$2" = "" ] && export POL_WINEDISTRIBUTION="$2" || export POL_WINEDISTRIBUTION="upstream" + + if [[ "$POL_WINEVERSION" == *"-staging"* ]]; then + POL_WINEVERSION="${POL_WINEVERSION/-staging/}" + POL_WINEDISTRIBUTION="staging" + else + POL_WINEVERSION_INSTALL="$POL_WINEVERSION" + fi + + if [ "$POL_WINEDISTRIBUTION" == "staging" ]; then + POL_WINEVERSION_INSTALL="$POL_WINEVERSION-staging" + fi + [ "$POL_WINEVERSION" = "" ] && POL_Debug_Fatal "No POL_WINEVERSION set" [ "$POL_ARCH" = "" ] && POL_System_SetArch "auto" POL_Debug_Message "Installing wine version path: $POL_WINEVERSION, $POL_ARCH" @@ -670,7 +683,15 @@ touch "$WINEDIR/installing" if [ ! -e "$WINEDIR/$POL_WINEVERSION" ] then - WINE_ADDRESS=$($POL_WGET "$WINE_SITE/$WINE_SECTION.lst" -O- | grep ";$POL_WINEVERSION;" | tail -n 1 | cut -d ";" -f1) + POL_Debug_Message "Wine site: $WINE_SITE" + echo $POL_WGET "$WINE_SITE" -O- + WINEDATA="$($POL_WGET "$WINE_SITE" -O- |jq -r ".[] | select(.name==\"$POL_WINEDISTRIBUTION-$ARCH_PREFIX-$POL_ARCH\") | .packages | .[] | select(.version==\"$POL_WINEVERSION\")")" + POL_Debug_Message "Winebuild data: $WINEDATA" + + WINE_ADDRESS="$(echo "$WINEDATA" | jq '.url' -r)" + POL_Debug_Message "Wine address found: $WINE_ADDRESS" + #WINE_ADDRESS=$($POL_WGET "$WINE_SITE/$WINE_SECTION.lst" -O- | grep ";$POL_WINEVERSION;" | tail -n 1 | cut -d ";" -f1) + if [ "$WINE_ADDRESS" = "" ] && [ "$POL_ARCH" = "amd64" ] then POL_Debug_Warning "Wine $1 amd64 does not exist. Switching to x86" @@ -685,11 +706,12 @@ fi cd "$POL_USER_ROOT/tmp" - POL_SetupWindow_download "$(eval_gettext "Downloading Wine: ")$POL_WINEVERSION" "$TITLE" "$WINE_SITE/$WINE_SECTION/$WINE_ADDRESS" + filename="$PWD/PlayOnLinux-wine-$POL_WINEVERSION-$POL_WINEDISTRIBUTION-$ARCH_PREFIX-$POL_ARCH.tar.gz" + POL_SetupWindow_download "$(eval_gettext "Downloading Wine: ")$POL_WINEVERSION" "$TITLE" "$WINE_ADDRESS" POL_SetupWindow_wait_next_signal "$(eval_gettext "Downloading Wine: ")$POL_WINEVERSION" "$TITLE" sleep 1 - sha1=$($POL_WGET "$WINE_SITE/$WINE_SECTION/$WINE_ADDRESS.sha1" -O- | awk '{print $1}') - sha1_file=$(shasum "./$WINE_ADDRESS" | awk '{print $1}') + sha1="$(echo "$WINEDATA" | jq '.sha1sum' -r)" + sha1_file=$(shasum "$filename" | awk '{print $1}') echo "Server sha1 : $sha1" echo "Client sha1 : $sha1_file" @@ -698,16 +720,19 @@ POL_SetupWindow_message "$(eval_gettext 'The download seems to have failed.')" "$TITLE" else POL_SetupWindow_wait "$(eval_gettext 'Extracting Wine...')" "$TITLE" - bash "$PLAYONLINUX/playonlinux-pkg" -i "$PWD/$WINE_ADDRESS" + mkdir -p "$POL_USER_ROOT/wine/$ARCH_PREFIX-$POL_ARCH/$POL_WINEVERSION_INSTALL" + cd "$POL_USER_ROOT/wine/$ARCH_PREFIX-$POL_ARCH/$POL_WINEVERSION_INSTALL" + tar -xvf "$filename" fi - rm "$WINE_ADDRESS" - POL_Wine_Install_resources gecko "$POL_WINEVERSION" "$POL_ARCH" - POL_Wine_Install_resources mono "$POL_WINEVERSION" "$POL_ARCH" + rm "$filename" + # POL_Wine_Install_resources gecko "$POL_WINEVERSION" "$POL_ARCH" + # POL_Wine_Install_resources mono "$POL_WINEVERSION" "$POL_ARCH" fi fi rm "$WINEDIR/installing" - + } + POL_Wine_InstallCDROM() { POL_Wine_InstallCDROMCustom "$1" "$CDROM" @@ -753,7 +778,7 @@ resourceamd64="$(cut -d ';' -f3 <<< $found)" md5x86="$(cut -d ';' -f4 <<< $found)" md5amd64="$(cut -d ';' -f5 <<< $found)" - + cd "$resource_dir" if [ "$resourcex86" ]; then if [ -e "$resourcex86" ]; then @@ -763,7 +788,7 @@ POL_Download "$(resource_download_url $resource x86 $resourcex86)" "$md5x86" fi fi - + if [ "$arch" = "amd64" ]; then if [ "$resourceamd64" ]; then if [ -e "$resourceamd64" ]; then @@ -832,6 +857,8 @@ POL_Wine_InstallVersion "$POL_WINEVERSION" fi export PATH="$WINEDIR/$POL_WINEVERSION/bin/:$PATH" + export DYLD_FALLBACK_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/" + export FREETYPE_PROPERTIES="truetype:interpreter-version=35" export LD_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/:$WINEDIR/$POL_WINEVERSION/lib64/:$LD_LIBRARY_PATH" [ "$POL_OS" = "FreeBSD" ] && export LD_32_LIBRARY_PATH="$WINEDIR/$POL_WINEVERSION/lib/:$LD_32_LIBRARY_PATH" fi @@ -886,7 +913,7 @@ else POL_Debug_Message "No version specified. Using system version ($(wine --version))" fi - + POL_Debug_Message "Creating prefix ($POL_WINEVERSION)..." [ "$POL_ARCH" = "" ] && POL_System_SetArch "auto" [ "$WINEPREFIX" = "" ] && POL_Debug_Fatal "WINEPREFIX is not set!" @@ -951,10 +978,10 @@ fi POL_Debug_Message "Setting WINEARCH to $WINEARCH" fi - + wine wineboot POL_Debug_InitPrefix - + if [ -e "$WINEPREFIX/drive_c/windows/syswow64" ] # It is a 64 bits prefix then POL_Config_PrefixWrite "ARCH" "amd64" @@ -973,9 +1000,9 @@ POL_Config_PrefixWrite "ARCH" "$POL_ARCH" POL_Config_PrefixWrite "VERSION" "$POL_WINEVERSION" POL_Wine_AutoSetVersionEnv - + POL_Debug_InitPrefix - + which wineprefixcreate && [ "$(POL_MD5_file "$(which wineprefixcreate)")" != "5c0ee90682746e811698a53415b4765d" ] && [ ! "$(which wineprefixcreate | grep $APPLICATION_TITLE)" = "" ] && wine wineprefixcreate wine wineboot fi @@ -1110,28 +1137,28 @@ # Lock bash commands until wine is exited # Usage : POL_Wine_WaitBefore [Program title] (--allow-kill) SOFTNAME="$1" - if [ "$2" = "--allow-kill" ] + if [ "$2" = "--allow-kill" ] then allowKill="true" else allowKill="false" fi - + [ "$1" = "" ] && message="$(eval_gettext "Please wait...")" || message="$(eval_gettext 'Please wait while $SOFTNAME is installed...')" - + if [ "$allowKill" = "true" ] then POL_SetupWindow_wait_button "$message" "$TITLE" "$(eval_gettext 'Install is done')" "wineserver -k" "$(eval_gettext 'Be careful! This will kill install process. If it is not finished, you will have to reinstall $SOFTNAME')" else POL_SetupWindow_wait "$message" "$TITLE" fi - + } POL_Wine_WaitExit () { # Lock bash commands until wine is exited # Usage : POL_Wine_WaitExit (--force-input) [Program title] (--allow-kill) - if [ "$1" = "--force-input" ] + if [ "$1" = "--force-input" ] then forceInput="true" shift @@ -1140,13 +1167,13 @@ fi SOFTNAME="$1" - if [ "$2" = "--allow-kill" ] + if [ "$2" = "--allow-kill" ] then allowKill="true" else allowKill="false" fi - + [ "$1" = "" ] && message="$(eval_gettext "Please wait...")" || message="$(eval_gettext 'Please wait while $SOFTNAME is installed...')" if [ "$allowKill" = "true" ] then @@ -1177,11 +1204,11 @@ } POL_Wine_GetBaseName() { - perl -e '$release=$ARGV[0]; $release =~ s/^([0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?)-?.*$/$1/; print "$release\n"' "$1" + perl -e '$release=$ARGV[0]; $release =~ s/^([0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?)-?.*$/$1/; print "$release\n"' "$1" } POL_Wine_GetPatchName() { - perl -e '$release=$ARGV[0]; $release =~ s/^[0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?-?//; print "$release\n"' "$1" + perl -e '$release=$ARGV[0]; $release =~ s/^[0-9]+\.[0-9]+(\.[0-9]+)?(-rc[0-9]+)?-?//; print "$release\n"' "$1" } POL_Lnk_Read() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/python/guiv3.py new/playonlinux/python/guiv3.py --- old/playonlinux/python/guiv3.py 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/python/guiv3.py 2018-11-20 23:04:47.000000000 +0100 @@ -23,7 +23,7 @@ import lib.Variables as Variables import lib.lng, lib.playonlinux as playonlinux lib.lng.Lang() -urllib.URLopener.version = Variables.userAgent # Arg ... +urllib.URLopener.version = Variables.userAgent # Arg ... class Download(threading.Thread): def __init__(self, url, local): @@ -45,7 +45,7 @@ def download(self): try: urllib.urlretrieve(self.url, self.local, reporthook = self.onHook) - except: + except Exception as e: self.failed = True self.finished = True @@ -83,7 +83,7 @@ if(Arg3 == "protect"): self.ProtectedWindow = True self.oldfichier = "" - + self.make_gui() wx.EVT_CLOSE(self, self.Cancel) @@ -101,7 +101,7 @@ self.panel = wx.Panel(self, -1, pos=(0,0), size=((520, 398+Variables.windows_add_size))) self.header = wx.Panel(self.panel, -1, style=Variables.widget_borders, size=(522,65)) self.header.SetBackgroundColour((255,255,255)) - self.footer = wx.Panel(self.panel, -1, size=(522,45), pos=(-1,358), style=Variables.widget_borders) + self.footer = wx.Panel(self.panel, -1, size=(522,45), pos=(-1,358)) # Panels self.MainPanel = wx.Panel(self.panel, -1, pos=(150,0), size=(370,356)) @@ -123,7 +123,7 @@ self.titre = wx.StaticText(self.header, -1, "",pos=(20,30), size=(340,356),style=wx.ST_NO_AUTORESIZE) self.titre.SetForegroundColour((0,0,0)) # For dark themes - self.texteP = wx.StaticText(self.MainPanel, -1, "",pos=(5,50)) + self.texteP = wx.StaticText(self.MainPanel, -1, "",pos=(5,50),size=(340, 500)) self.texteP.SetForegroundColour((0,0,0)) # For dark themes self.titreP = wx.StaticText(self.MainPanel, -1,"",pos=(5,5), size=(340,356)) @@ -135,7 +135,7 @@ # Buttons - + if(os.environ["POL_OS"] != "Mac"): self.CancelButton = wx.Button(self.footer, wx.ID_CANCEL, _("Cancel"), pos=(430,0),size=(85,37)) @@ -143,11 +143,11 @@ else: self.CancelButton = wx.Button(self.footer, wx.ID_CANCEL, _("Cancel"), pos=(420,-3),size=(85,37)) self.NextButton = wx.Button(self.footer, wx.ID_FORWARD, _("Next"), pos=(330,-3),size=(85,37)) - + if(self.ProtectedWindow == True): self.CancelButton.Enable(False) - - + + self.InfoScript = wx.StaticBitmap(self.footer, -1, wx.Bitmap(os.environ['PLAYONLINUX']+"/resources/images/setups/about.png"), pos=(10,8)) self.InfoScript.Hide() self.script_ID = 0 @@ -165,8 +165,8 @@ self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), pos=(340,0), size=(85,37)) else: self.NoButton = wx.Button(self.footer, wx.ID_NO, _("No"), pos=(420,-3),size=(85,37)) - self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), pos=(330,-3), size=(85,37)) - + self.YesButton = wx.Button(self.footer, wx.ID_YES, _("Yes"), pos=(330,-3), size=(85,37)) + self.browse = wx.Button(self.panel, 103, _("Browse"), size=(130,40)) self.browse_text = wx.StaticText(self.panel, -1, "") self.browse_image = wx.StaticBitmap(self.panel, -1, wx.Bitmap(os.environ['PLAYONLINUX']+"/etc/playonlinux.png")) @@ -186,16 +186,16 @@ self.gauge = wx.Gauge(self.panel, -1, 50, size=(375, 20)) self.WaitButton = wx.Button(self.panel, 310, "", size=(250,25)) - - + + self.animation = wx.StaticBitmap(self.panel, -1, self.GetLoaderFromAngle(1), (228,170)) self.current_angle = 1 - + self.images = wx.ImageList(22, 22) self.MenuGames = wx.TreeCtrl(self.panel, 111, style=wx.TR_HIDE_ROOT|wx.TR_FULL_ROW_HIGHLIGHT|Variables.widget_borders, pos=(25,105),size=(460,220)) self.MenuGames.SetImageList(self.images) self.MenuGames.SetSpacing(0) - + # Login self.login = wx.StaticText(self.panel, -1, _("Login: "),pos=(20,120),size=(460,20)) @@ -223,19 +223,19 @@ self.Result = "" self.animation.Show() self.footer.Hide() - + # Set the timer self.timer = wx.Timer(self, 3) self.Bind(wx.EVT_TIMER, self.TimerAction, self.timer) self.timer.Start(100) self.Timer_downloading = False self.Timer_animate = True - + def GetLoaderFromAngle(self, angle): if(angle >= 1 and angle <= 12): image = wx.Image(Variables.playonlinux_env+"/resources/images/setups/wait/"+str(angle)+".png") return image.ConvertToBitmap() - + def Destroy_all(self): self.footer.Show() self.Result = None @@ -280,13 +280,13 @@ self.debugZone.Hide() self.Refresh() - + def getResult(self): if(self.Result == None): return False else: return self.Result - + def TimerAction(self, event): ## If the setup window is downloading a file, it is a good occasion to update the progress bar if(self.Timer_downloading == True): @@ -298,12 +298,12 @@ # may be -1 on older FTP servers which do not return a file size in response to a retrieval request if self.downloader.taille_fichier >= 0: self.gauge.SetRange(self.downloader.taille_fichier) - + try: self.gauge.SetValue(downloaded) except wx._core.PyAssertionError: pass - + tailleFichierB = self.downloader.taille_fichier / 1048576.0 tailleFichierN = str(round(tailleFichierB, 1)) else: @@ -322,7 +322,7 @@ if(self.Timer_animate == True): self.current_angle = ((self.current_angle + 1) % 12) self.animation.SetBitmap(self.GetLoaderFromAngle(self.current_angle + 1)) - + ### Theses methods command the window. There are called directly by the server def POL_SetupWindow_message(self, message, title): self.Destroy_all() @@ -347,7 +347,7 @@ wx.EVT_BUTTON(self, wx.ID_FORWARD, self.release) self.DrawImage() - + def POL_SetupWindow_SetID(self, script_id): self.InfoScript.Show() self.script_ID = script_id @@ -407,7 +407,7 @@ self.texte_bis.Show() self.SendBash() - def POL_SetupWindow_download(self, message, title, url, localfile): + def POL_SetupWindow_download(self, message, title, url, localfile): self.Destroy_all() self.DrawDefault(message, title) self.space = message.count("\\n")+1 @@ -436,20 +436,20 @@ self.DrawDefault(message, title) self.NextButton.Enable(False) - + self.space = message.count("\\n")+1 self.gauge.SetPosition((70,95+self.space*16)) self.gauge.Show() - + self.DrawCancel() self.DrawNext() self.NextButton.Enable(False) self.SendBash() - + def POL_SetupWindow_wait_b(self, message, title, button_value, command, alert): - self.POL_SetupWindow_wait(message, title) + self.POL_SetupWindow_wait(message, title) self.WaitButton.Show() - self.WaitButton.SetLabel(button_value) + self.WaitButton.SetLabel(button_value) self.space = message.count("\\n")+1 self.WaitButton.SetPosition((135,115+self.space*16)) self.Bind(wx.EVT_BUTTON, lambda event: @@ -667,7 +667,7 @@ self.texte_panel.SetLabel(open(filetoread,"r").read()) except: self.texte_panel.SetLabel("E. File not found") - + self.texte_panel.Wrap(400) self.texte_panel.Show() @@ -749,7 +749,7 @@ self.release_yes(event) else: self.release_no(event) - + def release_login(self, event): self.SendBash(self.loginbox.GetValue().encode("utf-8","replace")+"~"+self.passbox.GetValue().encode("utf-8","replace")) self.NextButton.Enable(False) @@ -781,7 +781,7 @@ self.SendBash("Ok") self.NextButton.Enable(False) - def release_menugame(self,event): + def release_menugame(self,event): self.SendBash(self.MenuGames.GetItemText(self.MenuGames.GetSelection()).encode("utf-8","replace")) self.NextButton.Enable(False) @@ -837,7 +837,7 @@ def add_menu_icons(self, items, cut, icon_list, icon_folder): elements = items.split(cut) icons = icon_list.split(cut) - + #self.games.sort() self.images.RemoveAll() self.MenuGames.DeleteAllItems() @@ -876,12 +876,12 @@ if(self.FileDialog.GetPath() != ""): filePath = self.FileDialog.GetPath().encode("utf-8","replace") filePathBaseName = filePath.split("/")[filePath.count("/")] - self.champ.SetValue(filePath) + self.champ.SetValue(filePath) self.NextButton.Enable(True) self.browse_text.Show() self.browse_text.SetLabel(filePathBaseName) self.browse_text.SetPosition(((520-self.browse_text.GetSize()[0])/2,180)) - + if(".exe" in filePathBaseName and os.path.getsize(filePath) <= 30*1024*1024): try: tmpPath = os.environ['POL_USER_ROOT']+"/tmp/browse"+self.bash_pid+".png" @@ -896,11 +896,11 @@ browse_image = wx.Image(os.environ['PLAYONLINUX']+"/etc/playonlinux.png") else: browse_image = wx.Image(os.environ['PLAYONLINUX']+"/etc/playonlinux.png") - + if(browse_image.GetWidth() >= 48): browse_image.Rescale(48,48,wx.IMAGE_QUALITY_HIGH) browse_image = browse_image.ConvertToBitmap() - + self.browse_image.SetBitmap(browse_image) self.browse_image.SetPosition(((520-self.browse_image.GetSize()[0])/2,220)) self.browse_image.Show() @@ -937,4 +937,3 @@ self.MenuGames.Show() self.Menu.Hide() self.Refresh() - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/python/lib/Variables.py new/playonlinux/python/lib/Variables.py --- old/playonlinux/python/lib/Variables.py 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/python/lib/Variables.py 2018-11-20 23:04:47.000000000 +0100 @@ -4,6 +4,7 @@ import os, random, sys, string import wx, lib.playonlinux as playonlinux +from lib.dpiFetcher import dpiFetcher # Un ptit check try: @@ -16,9 +17,8 @@ os.environ["POL_PORT"] = "0" os.environ["PLAYONLINUX"] = os.path.realpath(os.path.realpath(__file__)+"/../../../") os.environ["SITE"] = "http://repository.playonlinux.com" -os.environ["VERSION"] = "4.2.12" +os.environ["VERSION"] = "4.3.3" os.environ["POL_ID"] = str(random.randint(1, 100000000)) -os.environ["WINE_SITE"] = "http://wine.playonlinux.com/binaries" os.environ["GECKO_SITE"] = "http://wine.playonlinux.com/gecko" os.environ["MONO_SITE"] = "http://wine.playonlinux.com/mono" homedir = os.environ["HOME"] @@ -33,25 +33,27 @@ os.environ["PLAYONMAC"] = os.environ["PLAYONLINUX"] os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/Library/PlayOnMac/" os.environ["APPLICATION_TITLE"] = "PlayOnMac" + os.environ["WINE_SITE"] = "https://phoenicis.playonlinux.com/index.php/wine?os=darwin" os.environ["POL_DNS"] = "playonmac.com" windows_add_size = 20; windows_add_playonmac = 1; widget_borders = wx.SIMPLE_BORDER os_name = "darwin" - os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q" + os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q --no-check-certificate" # Variables PlayOnLinux if os.environ["POL_OS"] == "Linux": os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/.PlayOnLinux/" os.environ["APPLICATION_TITLE"] = "PlayOnLinux" os.environ["POL_DNS"] = "playonlinux.com" + os.environ["WINE_SITE"] = "https://phoenicis.playonlinux.com/index.php/wine?os=linux" if playonlinux.VersionLower(wx.VERSION_STRING, "3.0.0"): windows_add_size = 0 windows_add_playonmac = 0 else: - windows_add_size = 25 + windows_add_size = dpiFetcher().fetch_extra_pixel() windows_add_playonmac = 0 - + widget_borders = wx.RAISED_BORDER os_name = "linux" try: @@ -64,10 +66,11 @@ os.environ["POL_WGET"] = "env LD_LIBRARY_PATH=\"\" wget -q" else: os.environ["POL_WGET"] = "env LD_LIBRARY_PATH=\"\" wget --prefer-family=IPv4 -q" - + if os.environ["POL_OS"] == "FreeBSD": os.environ["POL_USER_ROOT"] = os.environ["HOME"]+"/.PlayOnBSD/" os.environ["APPLICATION_TITLE"] = "PlayOnBSD" + os.environ["WINE_SITE"] = "https://phoenicis.playonlinux.com/index.php/wine?os=freebsd" os.environ["POL_DNS"] = "playonlinux.com" windows_add_size = 0 windows_add_playonmac = 0 @@ -77,14 +80,14 @@ os.environ["POL_WGET"] = "wget -q" else: os.environ["POL_WGET"] = "wget --prefer-family=IPv4 -q" - - + + os.environ["POL_CURL"] = "curl" archi = string.split(os.environ["MACHTYPE"], "-") archi = archi[0] -if archi == "x86_64" and os.environ["POL_OS"] == "Linux": +if archi == "x86_64": os.environ["AMD64_COMPATIBLE"] = "True" else: os.environ["AMD64_COMPATIBLE"] = "False" @@ -134,7 +137,7 @@ os.environ["LD_32_PATH_ORIGIN"] = os.environ["LD_32_LIBRARY_PATH"] except KeyError: os.environ["LD_32_PATH_ORIGIN"] = "" - + os.environ["DYLDPATH_ORIGIN"] = os.environ["DYLD_LIBRARY_PATH"] playonlinux_env = os.environ["PLAYONLINUX"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/python/lib/dpiFetcher.py new/playonlinux/python/lib/dpiFetcher.py --- old/playonlinux/python/lib/dpiFetcher.py 1970-01-01 01:00:00.000000000 +0100 +++ new/playonlinux/python/lib/dpiFetcher.py 2018-11-20 23:04:47.000000000 +0100 @@ -0,0 +1,16 @@ +import subprocess + +class dpiFetcher(): + def fetchDPI(self): + try: + process = subprocess.Popen("xrdb -query|grep Xft.dpi|awk '{print $2}'", stdout=subprocess.PIPE, shell=True) + (output, err) = process.communicate() + return int(output) + except ValueError: + return 96 + + # Should be fixed as possible... + def fetch_extra_pixel(self): + factor = self.fetchDPI() / 96 + print(factor) + return 68.75 * factor - 50 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/python/mainwindow.py new/playonlinux/python/mainwindow.py --- old/playonlinux/python/mainwindow.py 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/python/mainwindow.py 2018-11-20 23:04:47.000000000 +0100 @@ -87,7 +87,7 @@ self.sendPercentage(int(line)) except ValueError: pass - + self.updating = False if(playonlinux.VersionLower(os.environ["VERSION"],self.WebVersion)): self.sendToStatusBar(_('An updated version of {0} is available').format(os.environ["APPLICATION_TITLE"])+" ("+self.WebVersion+")",False) @@ -116,8 +116,8 @@ def __init__(self, frame): wx.aui.AuiManager.__init__(self, frame) self.startPerspective = self.SavePerspective() - - + + def _getPerspectiveName(self): name = self.SavePerspective().split("=") name = name[1].split(";") @@ -126,15 +126,15 @@ def getPerspective(self): return self.SavePerspective().replace(self._getPerspectiveName(),"PERSPECTIVE_NAME") - + def savePosition(self): playonlinux.SetSettings("PANEL_PERSPECTIVE", self.getPerspective()) - + def restorePosition(self): self.startPerspective = self.SavePerspective() - + self.Update() - + try: setting = playonlinux.GetSettings("PANEL_PERSPECTIVE") if(setting.count("Actions") < 2 or setting.count("dock_size") < 2 or not "PERSPECTIVE_NAME" in setting): @@ -143,19 +143,19 @@ setting = setting.replace("PERSPECTIVE_NAME",self._getPerspectiveName()) if(setting != ""): self.LoadPerspective(setting) - + except wx._core.PyAssertionError: self.LoadPerspective(self.startPerspective) - - + + self.Update() - + def AddPane(self, data, settings): wx.aui.AuiManager.AddPane(self, data, settings) - + def Destroy(self): self.savePosition() - + class MainWindow(wx.Frame): def __init__(self,parent,id,title): @@ -171,7 +171,7 @@ self.updater = POLWeb() self.updater.start() - # These lists contain the dock links and images + # These lists contain the dock links and images self.menuElem = {} self.menuImage = {} @@ -230,9 +230,9 @@ self._mgr = PanelManager(self) self._mgr.AddPane(self.list_game, wx.CENTER) self._mgr.AddPane(self.menu_gauche, wx.aui.AuiPaneInfo().Name('Actions').Caption('Actions').Left().BestSize((200,400)).Floatable(True).CloseButton(False).TopDockable(False).BottomDockable(False)) - - - + + + self.filemenu = wx.Menu() ### On MacOS X, preference is always on the main menu if(os.environ["POL_OS"] == "Mac"): @@ -275,7 +275,7 @@ self.expertmenu.Append(108, _("Run a local script")) self.expertmenu.Append(109, _("{0} console").format(os.environ["APPLICATION_TITLE"])) - + self.expertmenu.Append(115, _('Close all {0} software').format(os.environ["APPLICATION_TITLE"])) self.expertmenu.AppendSeparator() @@ -337,7 +337,7 @@ self.option_item_p = wx.MenuItem(self.pluginsmenu, 214, _("Plugin manager")) self.option_item_p.SetBitmap(wx.Bitmap(Variables.playonlinux_env+"/etc/onglet/package-x-generic.png")) - + self.pluginsmenu.AppendItem(self.option_item_p) @@ -370,7 +370,7 @@ self.menubar.Append(self.help_menu, "&Help") #self.menubar.Append(self.help_menu, _("About")) - + self.SetMenuBar(self.menubar) iconSize = (32,32) @@ -386,7 +386,7 @@ self.toolbar.AddSeparator() self.toolbar.AddLabelTool(121, _("Configure"), wx.Bitmap(Variables.playonlinux_env+"/resources/images/toolbar/configure.png")) - try: + try: self.toolbar.AddStretchableSpace() self.SpaceHack = False except: @@ -452,14 +452,14 @@ wx.EVT_MENU(self, 402, self.runSupport) wx.EVT_MENU(self, 403, self.runSupport) wx.EVT_MENU(self, 404, self.runSupport) - + # PlayOnLinux main timer self.timer = wx.Timer(self, 1) self.Bind(wx.EVT_TIMER, self.TimerAction, self.timer) self.timer.Start(1000) self.Timer_LastShortcutList = None self.Timer_LastIconList = None - + # SetupWindow timer. The server is in another thread and GUI must be run from the main thread self.SetupWindowTimer = wx.Timer(self, 2) self.Bind(wx.EVT_TIMER, self.SetupWindowAction, self.SetupWindowTimer) @@ -482,7 +482,7 @@ def ResizeWindow(self, e): self.UpdateGaugePos() self.UpdateSearchHackSize() - + def UpdateSearchHackSize(self): if(self.SpaceHack == True): self.dirtyHack.SetLabel("") @@ -500,7 +500,7 @@ while(self.SetupWindowTimer_action != None): time.sleep(0.1) self.SetupWindowTimer_action = recvData - + def SetupWindow_TimerRestart(self, time): if(time != self.SetupWindowTimer_delay): self.SetupWindowTimer.Stop() @@ -518,7 +518,7 @@ def TimerAction(self, event): self.StatusRead() - + # We read shortcut folder to see if it has to be rescanned currentShortcuts = os.path.getmtime(Variables.playonlinux_rep+"/shortcuts") currentIcons = os.path.getmtime(Variables.playonlinux_rep+"/icones/32") @@ -572,7 +572,7 @@ self.installFrame.Refresh() except: pass - + if(self.updater.sendAlertStr != self.sendAlertStr): wx.MessageBox(self.updater.sendAlertStr, os.environ["APPLICATION_TITLE"], wx.OK|wx.CENTER, self) self.sendAlertStr = self.updater.sendAlertStr @@ -648,26 +648,26 @@ url = urlPrefix+"/forums.html" if(urlId == 4): url = urlPrefix+"/bugs.html" - + if(urlId == 5): if(os.environ["POL_OS"] == "Mac"): url = "https://twitter.com/PlayOnMac" else: url = "https://twitter.com/PlayOnLinux" - + if(urlId == 6): if(os.environ["POL_OS"] == "Mac"): url = "http://plus.google.com/u/0/105992880311102680198" else: url = "https://plus.google.com/+playonlinux" - + if(urlId == 7): if(os.environ["POL_OS"] == "Mac"): url = "https://www.facebook.com/playonmac" else: url = "https://www.facebook.com/playonlinux" - - + + playonlinux.POL_Open(url) def iconDisplay(self, event): @@ -779,13 +779,13 @@ self.menuGaucheAddLink("pol_prgm_kill", _("Close"), i,Variables.playonlinux_env+"/resources/images/menu/media-playback-stop.png",self.RKill) i+=1 self.menuGaucheAddLink("pol_prgm_rundebug", _("Debug"), i,Variables.playonlinux_env+"/resources/images/menu/bug.png",self.RunDebug) - + game_exec = self.GetSelectedProgram() game_log = playonlinux.getLog(game_exec) if(game_log): i+=1 self.menuGaucheAddLink("pol_prgm_reportproblem", _("Send a feedback"), i,Variables.playonlinux_env+"/resources/images/menu/bug.png",self.sendfeedback) - + i+=1 self.menuGaucheAddLink("pol_prgm_configure", _("Configure"), i,Variables.playonlinux_env+"/resources/images/menu/run.png",self.Configure) i+=1 @@ -860,8 +860,8 @@ #self.menuElem[id].SetNormalColour(wx.Colour(0,0,0)) #self.menuElem[id].SetVisitedColour(wx.Colour(0,0,0)) #self.menuElem[id].SetHoverColour(wx.Colour(100,100,100)) - - + + if(evt != None): wx.lib.hyperlink.EVT_HYPERLINK_LEFT(self, 10000+pos, evt) @@ -874,12 +874,12 @@ def Reload(self, event): self.games = os.listdir(Variables.playonlinux_rep+"shortcuts/") self.games.sort(key=str.upper) - + try: self.games.remove(".DS_Store") except: pass - + self.list_game.DeleteAllItems() self.images.RemoveAll() root = self.list_game.AddRoot("") @@ -903,7 +903,7 @@ self.images.Add(self.bitmap) except: pass - + item = self.list_game.AppendItem(root, game, self.i) self.i += 1 self.generate_menu(None) @@ -1020,7 +1020,7 @@ def GetSelectedProgram(self): return self.list_game.GetItemText(self.list_game.GetSelection()).encode("utf-8","replace") - + def Run(self, event, s_debug=False): game_exec = self.GetSelectedProgram() @@ -1109,7 +1109,7 @@ playonlinux.SetSettings("MAINWINDOW_HEIGHT",str(self.SizeToSave[1]-Variables.windows_add_playonmac*56)) playonlinux.SetSettings("MAINWINDOW_X",str(self.PositionToSave[0])) playonlinux.SetSettings("MAINWINDOW_Y",str(self.PositionToSave[1])) - + self._mgr.Destroy() self.POLDie() @@ -1147,7 +1147,7 @@ subprocess.call(["bash", Variables.playonlinux_env+"/bash/startup"]) self.systemCheck() - + for f in sys.argv[1:]: self.MacOpenFile(f) if(".exe" in f or ".EXE" in f): @@ -1165,7 +1165,7 @@ # Gui Server self.POLServer = gui_server.gui_server(self.frame) self.POLServer.start() - + i = 0 while(os.environ["POL_PORT"] == "0"): time.sleep(0.01) @@ -1173,12 +1173,12 @@ wx.MessageBox(_("{0} is not able to start PlayOnLinux Setup Window server.").format(os.environ["APPLICATION_TITLE"]),_("Error")) os._exit(0) break - i+=1 + i+=1 subprocess.Popen(["bash", Variables.playonlinux_env + "/bash/startup_after_server"]) - + self.SetTopWindow(self.frame) self.frame.Show(True) - + return True def _executableFound(self, executable): @@ -1263,7 +1263,7 @@ self.singleCheckFatal("convert", package="ImageMagick") self.singleCheckFatal("wget", package="Wget") self.singleCheckFatal("curl", package="cURL") - + self.singleCheckFatal("gpg", package="GnuPG") # FIXME: now that PoL can use a range of terminal emulators, xterm is no longer @@ -1275,10 +1275,11 @@ self.singleCheck("wrestool", package="icoutils") self.singleCheck("wine", package="Wine") self.singleCheck("unzip", package="InfoZIP") + self.singleCheck("jq", package="jq") self.singleCheck("7z", package="P7ZIP full") # p7zip-full on Debian if(os.environ["POL_OS"] == "FreeBSD"): self.singleCheck("gsed", package="GNU Sed") - + def BringWindowToFront(self): try: # it's possible for this event to come when the frame is closed self.GetTopWindow().Raise() @@ -1314,7 +1315,7 @@ subprocess.Popen(["bash", Variables.playonlinux_env + "/bash/playonlinux-pkg", "-i", filename]) else: playonlinux.open_document(filename,file_extension.lower()) - + def MacOpenURL(self, url): if(os.environ["POL_OS"] == "Mac" and not "playonmac://" in url): wx.MessageBox(_("You are trying to open a script design for {0}! It might not work as expected").format("PlayOnLinux or PlayOnBSD"), os.environ["APPLICATION_TITLE"]) @@ -1322,7 +1323,7 @@ wx.MessageBox(_("You are trying to open a script design for {0}! It might not work as expected").format("PlayOnMac or PlayOnBSD"), os.environ["APPLICATION_TITLE"]) if(os.environ["POL_OS"] == "FreeBSD" and not "playonbsd://" in url): wx.MessageBox(_("You are trying to open a script design for {0}! It might not work as expected").format("PlayOnMac or PlayOnLinux"), os.environ["APPLICATION_TITLE"]) - + subprocess.Popen(["bash", Variables.playonlinux_env + "/bash/playonlinux-url_handler", url]) def MacReopenApp(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/playonlinux/python/wine_versions.py new/playonlinux/python/wine_versions.py --- old/playonlinux/python/wine_versions.py 2017-06-19 21:03:38.000000000 +0200 +++ new/playonlinux/python/wine_versions.py 2018-11-20 23:04:47.000000000 +0100 @@ -18,7 +18,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -import wxversion, os, getopt, sys, urllib, signal, socket, codecs, string, shutil, time, urllib, urllib2 +import wxversion, os, getopt, sys, urllib, signal, socket, codecs, string, shutil, time, urllib, urllib2, json import subprocess import wx, wx.animate @@ -125,34 +125,42 @@ self.thread_running = True while(self.thread_running): if(self.thread_message == "get"): - wfolder = os_pref+"-"+self.architecture try : + url = os.environ["WINE_SITE"] + wfolder = "-".join([os_pref, self.architecture]) + - url = os.environ["WINE_SITE"]+"/"+wfolder+".lst" - - #print(url) - req = urllib2.Request(url, None, {'User-Agent': Variables.userAgent}) handle = urllib2.urlopen(req, timeout = 5) time.sleep(1) - available_versions = handle.read() - available_versions = string.split(available_versions,"\n") - - self.i = 0 + available_distributions = json.loads(handle.read()) self.versions_ = [] - while(self.i < len(available_versions) - 1): - informations = string.split(available_versions[self.i], ";") - version = informations[1] - package = informations[0] - sha1sum = informations[2] - if(not os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version)): - self.versions_.append(version) - self.i += 1 + for distribution in available_distributions: + if(distribution["name"] == "-".join(["upstream", os_pref, self.architecture])): + for package in distribution["packages"]: + version = package["version"] + packageUrl = package["url"] + sha1sum = package["sha1sum"] + if(not os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version)): + self.versions_.append(version) + else: + print("Directory: %s exists" % (Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version)) + elif(distribution["name"] == "-".join(["staging", os_pref, self.architecture])): + for package in distribution["packages"]: + version = package["version"] + if(not os.path.exists(Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version+"-staging")): + self.versions_.append(version+"-staging") + else: + print("Directory: %s exists" % (Variables.playonlinux_rep+"/wine/"+wfolder+"/"+version+"-staging")) + else: + print(distribution["name"] + " does not match") + + self.versions_.sort(key=keynat) self.versions_.reverse() self.versions = self.versions_[:] - self.thread_message = "Ok" - except : + except Exception, e: + print(e) time.sleep(1) self.thread_message = "Err" self.versions = ["Wine packages website is unavailable"] @@ -197,14 +205,14 @@ self.list_ver_installed[arch].SetSpacing(0); wx.StaticText(self.panelFenp[arch], -1, _("Installed Wine versions: "),(395,10)) wx.StaticText(self.panelFenp[arch], -1, _("Available Wine versions: "),(5,10)) - + if(os.environ["POL_OS"] == "Mac"): self.button_rm[arch] = wx.Button(self.panelFenp[arch], 108+add, "<", pos=(333, 175), size=(50,30)) self.button_in[arch] = wx.Button(self.panelFenp[arch], 109+add, ">", pos=(333, 125), size=(50,30)) else: self.button_rm[arch] = wx.Button(self.panelFenp[arch], 108+add, "<", pos=(340, 175), size=(50,30)) self.button_in[arch] = wx.Button(self.panelFenp[arch], 109+add, ">", pos=(340, 125), size=(50,30)) - + self.button_rm[arch].Enable(False) self.button_in[arch].Enable(False) self.AddPage(self.panelFenp[arch], _("Wine versions")+" ("+arch+")", imageId=0) @@ -334,7 +342,7 @@ message += "\n" + _('This version is CURRENTLY IN USE') if(wx.YES == wx.MessageBox(message.decode("utf-8","replace"), os.environ["APPLICATION_TITLE"], style=wx.YES_NO | wx.ICON_QUESTION)): shutil.rmtree(Variables.playonlinux_rep+"/wine/"+os_pref+"-"+arch+"/"+version) - + def install32(self, event): self.install_common(event, "x86") @@ -395,7 +403,7 @@ root2 = self.onglets.list_ver_installed[arch].AddRoot("") wfolder = os_pref+"-"+arch - + used_version = self.checkVersionUse(arch) # Get the set of wine version used by wineprefix installed_versions = os.listdir(Variables.playonlinux_rep+"/wine/"+wfolder)