Linux Linux build failure (PSCP/SCP command) using YYC build?

Discussion in 'GameMaker Studio 2 Community Tech Support' started by Japster, Jan 2, 2020.

Tags:
  1. Japster

    Japster Member

    Joined:
    Aug 5, 2017
    Posts:
    83
    Hi guys! - Finally got a Linux box set up, configured, and able to build my games for Linux!

    They build fine using VM! - it's cool to see them running on Linux, ready for adding to Steam.... ...BUT...

    ...when I select YYC as the build method, the Linux build fails with the following:-


    Code:
    ...
    cd /home/japster/GameMakerStudio2/yyc/FromPC/TetraLogical; chmod +x execute.sh
    pscp Y:\TetraLogical_7250E04E_YYC\Game\ /home/japster/GameMakerStudio2/yyc/FromPC/TetraLogical/Game/
    Renci.SshNet.Common.ScpException: scp: error: unexpected filename:
       at Renci.SshNet.ScpClient.CheckReturnCode(Stream input)
       at Renci.SshNet.ScpClient.Upload(DirectoryInfo directoryInfo, String path)
       at ..(String , String , Boolean )
       at Igor.LinuxBuilder.pscp(String local, String remote, Boolean recursive)
       at Igor.LinuxBuilder.LinuxSendAndBuildMakefile(String _dir)
       at Igor.LinuxBuilder.Run()
    Igor complete.
    elapsed time 00:02:46.4094898s for command "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.1.287/bin/Igor.exe" -j=8 -options="C:\Users\A\AppData\Local\GameMakerStudio2\GMS2TEMP\build.bff" -q -- Linux Run started at 01/02/2020 17:27:22
    "cmd"  /c subst Z: /d
    
    elapsed time 00:00:00.0369018s for command "cmd" /c subst Z: /d started at 01/02/2020 17:30:08
    "cmd"  /c subst Y: /d
    
    elapsed time 00:00:00.0359034s for command "cmd" /c subst Y: /d started at 01/02/2020 17:30:08
    "cmd"  /c subst X: /d
    
    elapsed time 00:00:00.0369012s for command "cmd" /c subst X: /d started at 01/02/2020 17:30:08
    FAILED: Run Program Complete
    If anyone has seen errors similar to this before, or can help, I'd really appreciate it! - so close, but so far, and Linux is NOT my forte! - Took me way too long just to find out how to check the box's IP address! :(

    No specific info given either :( :-

    Renci.SshNet.Common.ScpException: scp: error: unexpected filename:
    at Renci.SshNet.ScpClient.CheckReturnCode(Stream input)


    Cheers all...
     
  2. Japster

    Japster Member

    Joined:
    Aug 5, 2017
    Posts:
    83
    Googled just in case it's a generic issue in Linux or MacOS, and it seems it might be related to security being tightened up...

    https://superuser.com/questions/1403473/scp-error-unexpected-filename

    @Nocturne - sorry to tag you mate, but the solution that some people have found that works is a slight modification to the command line in question, in their case:-

    scp -r $(pwd) <remote_server>:<remote_folder>


    ...but obviously as it's part of the Linux build automated process within GMS2, I can't implement this? - does this look like a solution, or perhaps there's an app grab command to replace 'pscp' with a different one, in case I can get around it that way?

    BTW, it's not project related, as my other project does the exact same thing:-

    Code:
    pscp Y:\GSRR_77EA4AB8_YYC\Game\ /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/Game/
    Renci.SshNet.Common.ScpException: scp: error: unexpected filename: 

    Cheers....
     
  3. Japster

    Japster Member

    Joined:
    Aug 5, 2017
    Posts:
    83
    ....and... I forgot to mention - It's a Linux Mint 19.3 box...

    Cheers...

    EDIT - Just tried again after re-doing all steps in @Nocturne 's excellent Linux VM and YYC builds guide... still no joy - Complete output log here (PS - I can compile my Windows YYC just fine on this same dev machine) - I do note some JSON parse warnings earlier in the log, not sure if they're normal:-

    Code:
    "cmd"  /c subst Z: "C:\Users\A\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE"
    
    elapsed time 00:00:00.0538561s for command "cmd" /c subst Z: "C:\Users\A\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE" started at 01/04/2020 21:30:41
    "cmd"  /c subst Y: "C:\Users\A\AppData\Local\GameMakerStudio2\GMS2TEMP"
    
    elapsed time 00:00:00.0508641s for command "cmd" /c subst Y: "C:\Users\A\AppData\Local\GameMakerStudio2\GMS2TEMP" started at 01/04/2020 21:30:41
    "cmd"  /c subst X: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.1.287"
    
    elapsed time 00:00:00.0498665s for command "cmd" /c subst X: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.1.287" started at 01/04/2020 21:30:41
    Saving project to: C:\Users\A\Documents\GameMakerStudio2\GSRR\GSRR.yyp
    Loaded Macros from C:\Users\A\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE\GSRR_4139FE54\macros.json
    Options: X:/bin\platform_setting_defaults.json
    Options: C:\Users\A\AppData\Roaming/GameMakerStudio2\japsters.cavern_944082\local_settings.json
    Options: C:\Users\A\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE\GSRR_4139FE54\targetoptions.json
    Reading project file....C:\Users\A\Documents\GameMakerStudio2\GSRR
    Reading project file....X:\BaseProject
    Reading config delta 'C:\Users\A\Documents\GameMakerStudio2\GSRR\options\main\inherited\options_main.inherited.yy'
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    finished.
    
    
    X://bin/GMAssetCompiler.exe DONE (0)
    Release build
    Options: Z:/GSRR_4139FE54\MainOptions.json
    Options: C:\Users\A\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE\GSRR_4139FE54\steam_options.yy
    mkdir -p ~/.ssh
    cat ~/.ssh/authorized_keys
    pwd
    mkdir -p ~/.ssh
    Options: Z:/GSRR_4139FE54\PlatformOptions.json
    PlatformOptions
    [Compile] Run asset compiler
    Reading project file....C:\Users\A\Documents\GameMakerStudio2\GSRR
    Reading project file....X:\BaseProject
    Reading config delta 'C:\Users\A\Documents\GameMakerStudio2\GSRR\options\main\inherited\options_main.inherited.yy'
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    GMFont - Unable to parse json entry - glyphOperations - text - 0
    GMFont - Unable to parse json entry - hinting - text - 0
    GMFont - Unable to parse json entry - interpreter - text - 0
    GMFont - Unable to parse json entry - maintainGms1Font - text - False
    GMFont - Unable to parse json entry - pointRounding - text - 0
    finished.
    Compile Constants...finished.
    Remove DnD...finished.
    Compile Scripts...finished.
    Compile Objects...finished.
    Compile Timelines...finished.
    Compile Triggers...finished.
    Compile Rooms...finished.
    Compile Extensions...finished.
    Global scripts...finished.
    collapsing enums.
    Final Compile...finished.
    Looking for built-in particle images in X:\bin\ParticleImages
    Writing Chunk... GEN8
    option_game_speed=60
    Writing Chunk... OPTN
    Writing Chunk... LANG
    Writing Chunk... EXTN
    Writing Chunk... SOND
    Converting Thrusters to Ogg with bit rate 256, quality 4, mono @ 44100Hz
    Converting SND_Beep to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting Race_Complete to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting Race_Start to Ogg with bit rate 128, quality 2, mono @ 44100Hz
    Converting Hit_Wall to Ogg with bit rate 128, quality 2, mono @ 44100Hz
    Converting Thrust to Wav 16bit mono @ 44100Hz
    Converting Best_Beaten to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting Hit_Beacon to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting Checkpoint to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting SND_Alarm to Wav 16bit mono @ 44100Hz
    Converting SND_Turret_Mine to Wav 16bit mono @ 44100Hz
    Converting SND_Player_Shot to Wav 16bit mono @ 44100Hz
    Converting Splash to Wav 16bit mono @ 44100Hz
    Converting SND_Hit_Shield to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Converting SND_Turret_Shot to Wav 16bit mono @ 44100Hz
    Converting SND_Confirm to Ogg with bit rate 128, quality 2, stereo @ 44100Hz
    Writing Chunk... AGRP
    Writing Chunk... SPRT
    Writing Chunk... BGND
    Writing Chunk... PATH
    Writing Chunk... SCPT
    Writing Chunk... GLOB
    Writing Chunk... SHDR
    Writing Chunk... FONT
    Writing Chunk... TMLN
    Writing Chunk... OBJT
    Writing Chunk... ROOM
    Writing Chunk... DAFL
    Writing Chunk... EMBI
    Writing Chunk... TPAGE
    Texture Group - Default
    Writing Chunk... TGIN
    Writing Chunk... STRG
    Writing Chunk... TXTR
    0 Compressing texture... writing texture texture_0.png...
    1 Compressing texture... writing texture texture_1.png...
    2 Compressing texture... writing texture texture_2.png...
    3 Compressing texture... writing texture texture_3.png...
    4 Compressing texture... writing texture texture_4.png...
    5 Compressing texture... writing texture texture_5.png...
    6 Compressing texture... writing texture texture_6.png...
    Writing Chunk... AUDO
    saving file Y:/GSRR_1B490CAF_YYC\GSRR.zip
    Stats : GMA : Elapsed=15510.819
    Stats : GMA : sp=45,au=16,bk=0,pt=0,sc=30,sh=1,fo=3,tl=0,ob=52,ro=5,da=0,ex=3,ma=132,fm=0xC200B30D6CEC02B0
    
    
    X://bin/GMAssetCompiler.exe DONE (0)
     [ -d "/home/japster/GameMakerStudio2/yyc/FromPC/GSRR" ] || mkdir -p "/home/japster/GameMakerStudio2/yyc/FromPC/GSRR"
    pscp Y:\GSRR_1B490CAF_YYC\GameAssetsLinux.zip /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp Y:\GSRR_1B490CAF_YYC\YYGML.h /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp Y:\GSRR_1B490CAF_YYC\Ref.h /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp Y:\GSRR_1B490CAF_YYC\YYStd.h /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp Y:\GSRR_1B490CAF_YYC\libyoyo_yyc-x64.a /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp Y:\GSRR_1B490CAF_YYC\makefile /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    pscp X:/linux\execute.sh /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/
    cd /home/japster/GameMakerStudio2/yyc/FromPC/GSRR; chmod +x execute.sh
    pscp Y:\GSRR_1B490CAF_YYC\Game\ /home/japster/GameMakerStudio2/yyc/FromPC/GSRR/Game/
    Renci.SshNet.Common.ScpException: scp: error: unexpected filename:
       at Renci.SshNet.ScpClient.CheckReturnCode(Stream input)
       at Renci.SshNet.ScpClient.Upload(DirectoryInfo directoryInfo, String path)
       at ..(String , String , Boolean )
       at Igor.LinuxBuilder.pscp(String local, String remote, Boolean recursive)
       at Igor.LinuxBuilder.LinuxSendAndBuildMakefile(String _dir)
       at Igor.LinuxBuilder.Run()
    Igor complete.
    elapsed time 00:01:02.9841251s for command "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.1.287/bin/Igor.exe" -j=8 -options="C:\Users\A\AppData\Local\GameMakerStudio2\GMS2TEMP\build.bff" -q -- Linux Run started at 01/04/2020 21:30:42
    "cmd"  /c subst Z: /d
    
    elapsed time 00:00:00.0508649s for command "cmd" /c subst Z: /d started at 01/04/2020 21:31:45
    "cmd"  /c subst Y: /d
    
    elapsed time 00:00:00.0478718s for command "cmd" /c subst Y: /d started at 01/04/2020 21:31:45
    "cmd"  /c subst X: /d
    
    elapsed time 00:00:00.0478720s for command "cmd" /c subst X: /d started at 01/04/2020 21:31:45
    FAILED: Run Program Complete
    
     
    Last edited: Jan 4, 2020
  4. Japster

    Japster Member

    Joined:
    Aug 5, 2017
    Posts:
    83
    Well, it seems that there is a known issue, fixed in a later version (2.2.2.236 onwards) of the runtime:-

    https://bugs.yoyogames.com/view.php?id=30513

    ...that I can't update to because of a 'data type corruption returning from recursive calls' issue that is ironically *INTRODUCED* in 2.2.2.236 (it still works fine when I test this in 2.2.1.291, although I was using 2.2.1.287 because of the alarm[x] 'set to <1' rounding down issue) (I've since followed Russell's advice and popped a 'min(1, room_speed * .03)' etc in all of the tight timing alarm setting code, but obviously, this recursion bug is now my showstopper to moving forwards to a newer runtime with the Linux YYC fix, aaaarrrgh!!!...

    ...great..... :( So this means that I still cannot release my TetraLogical game on the Linux platform, as it requires building via YYC to be able to calculate endgames in an acceptable time...

    I've raised a bug report, for this parameter/data type corruption when using recursion, that someone else also mentioned about somewhere on the forums a while ago:-

    https://forum.yoyogames.com/index.php?threads/recursion-depth-limit.35212/

    The returned value is fine until a point, and the watched variable is as expected, then suddenly it's no longer a valid data type. Deffo seems like corruption, or possibly stack limits have been reduced since 2.2.1.x? - and in my case, no, YYC builds do not fix the issue... :(

    Incidentally, I read that GM didn't originally handle great recursion depth (32, 50, etc), but my routine only goes down about 10 levels max before returning, and doesn't actually even go that far down unless close to endgame scenarios (and like I say, it WORKS fine, in older runtimes), so I'm stumped...

    The standard response seems to be 'don't use recursion' - that's not a fix, and tbh, I doubt many people could re-write this routine in as manageable or speed optimised etc way (I certainly couldn't - it's not even my code, but a genius's who I luckily know), in none-recursive form, given what it's having to do - it is literally having to perform millions of checks, trial placements, piece assignments, etc in order to get a guaranteed list of optimised pieces for puzzle completions.

    So, as I REALLY think I'm stuck with the recursion logic route, and it DID work up until 2.2.2.xxx, surely it's easier to track down and repair?!

    ...Could really do with some help please here guys, or at least acknowledgement that anyone from YoYo is even listening/able to look into this?
     
    Last edited: Jan 5, 2020
  5. Japster

    Japster Member

    Joined:
    Aug 5, 2017
    Posts:
    83
    I have to say, hats off to Scott at YoYo for helping me out so quickly - Seems the new versions are stricter, and I was apparently getting away with something that got by that on the old versions.

    Sooo.... ...Looks like I need to re-work my code, but just to say, looks like it isn't recursion at fault after all (which I'm VERY happy with!), just array bounds checking tightened up - Thanks again guys, really fast help, and I know what to tackle next in order to sort this... :)
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice