It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
nightstrike_gog: You could probably reduce what gets logged (or make it an option). I don't think it's entirely useful to have so many updates of the download progress for example.
avatar
Kalanyr: It's extremely useful for the console output because it lets people know that stuff is happening but it's likely true that the frequency could be cut way down for the logs.
Yup, agreed on both counts.

Another question, is there a way to checkpoint a forceverify? Or clear all previously verified status so the normal verify can start over? In my case, I moved my repository to a new cloud location, and I'd like to reverify it cloud-side, but my session time is limited, and so I need to keep restarting.

EDIT: Followup question. What does the script do during a download operation between printing out the directory and printing out all the "pass" lines? In the aforementioned cloud setup, the first time through after starting the VM session, there's a large delay processing 1500 passes before downloading for instance 4 updates. If I run it again, it's as fast as running locally. I'm curious what I can do to speed it up. I tried for example stat'ing each file (ls -la */*), but that didn't improve performance. Thoughts?
Post edited October 17, 2023 by nightstrike_gog
avatar
nightstrike_gog: In my case, I moved my repository to a new cloud location, and I'd like to reverify it cloud-side, but my session time is limited, and so I need to keep restarting.
Use tmux to keep processes running in a tmux session even if you are disconnected:

Install tmux, then run:

tmux

Now you are inside the tmux session, run your gogrepoc commands as usual.

If you get disconnected, then reconnect and:

tmux attach

to resume the tmux session.

If you want to detach the tmux session for whatever reason while the command is running, do:
CTRL-B CTRL-D
then
tmux attach
to get back.
Post edited October 17, 2023 by lupineshadow
avatar
Kalanyr: It's extremely useful for the console output because it lets people know that stuff is happening but it's likely true that the frequency could be cut way down for the logs.
avatar
nightstrike_gog: Yup, agreed on both counts.

Another question, is there a way to checkpoint a forceverify? Or clear all previously verified status so the normal verify can start over? In my case, I moved my repository to a new cloud location, and I'd like to reverify it cloud-side, but my session time is limited, and so I need to keep restarting.

EDIT: Followup question. What does the script do during a download operation between printing out the directory and printing out all the "pass" lines? In the aforementioned cloud setup, the first time through after starting the VM session, there's a large delay processing 1500 passes before downloading for instance 4 updates. If I run it again, it's as fast as running locally. I'm curious what I can do to speed it up. I tried for example stat'ing each file (ls -la */*), but that didn't improve performance. Thoughts?
No, I have thought about logging the date of last verify though, so that eg rolling checks to guard against bit rot were possible.

I'd have to check the code , I didn't think it did anything that would have per session effects that major that wouldn't be equally effected by ls.
I have checked the code now and I suspect what's going on is that it's caching all the !info.txt files, since it checks them to see if anything has changed and only writes to them if it has. The other thing it does is ask the OS for the size of each existing file in the directory that matches an entry in the manifest for that game but your LS should be caching that.
avatar
nightstrike_gog: Second request, can you add a command line option to disable posix_fallocate? When I run this in a particular cloud environment, that call fails in an obscure way that results in a hang instead of an exception. I solved it by commenting out the 4 calls. As a general code observation, those 4 calls are similar enough that you could also refactor a bit. But back to my use case, I don't think there's a benefit to preallocating in every environment, and certainly not when the syscall is broken :)
avatar
timppu: I have an issue with that preallocation as well, when running gogrepoc on my Linux PCs, downloading the installers to a NTFS-formatted USB hard drive. I've also ended up commenting out all the lines about the preallocation.

I don't know where the issue is, something about Linux' NTFS driver implementation or whatever, but without preallocation it works fine on Linux. If I do the same on Windows (with the same USB HDD), then no issues with preallocation.

(Frankly I haven't tested it lately whether the preallocation would nowadays work on Linux as well, but last time I did, it didn't work. The script would just timeout or something to an error while it was attempting to preallocate.)
Preallocation hangs for my sometimes too. Apparently only when the file size is large like for cyberpunk*.21.bin.
Happened only after reinstalling WSL2 with new Debian inside. Starting gogrepoc.py in Debian (inside WSL2), writing to ext4 on a NAS. Will also comment out the lines later to make it work.
Post edited October 19, 2023 by chalice
avatar
timppu: I have an issue with that preallocation as well, when running gogrepoc on my Linux PCs, downloading the installers to a NTFS-formatted USB hard drive. I've also ended up commenting out all the lines about the preallocation.

I don't know where the issue is, something about Linux' NTFS driver implementation or whatever, but without preallocation it works fine on Linux. If I do the same on Windows (with the same USB HDD), then no issues with preallocation.

(Frankly I haven't tested it lately whether the preallocation would nowadays work on Linux as well, but last time I did, it didn't work. The script would just timeout or something to an error while it was attempting to preallocate.)
avatar
chalice: Preallocation hangs for my sometimes too. Apparently only when the file size is large like for cyberpunk*.21.bin.
Happened only after reinstalling WSL2 with new Debian inside. Starting gogrepoc.py in Debian (inside WSL2), writing to ext4 on a NAS. Will also comment out the lines later to make it work.
I'll add timeouts and make the Posix optional , I need to see if I can semi-reliably detect the target filesystem and current OS too.

I really don't like the timeouts because this is terrible behaviour from system calls and the state of the files and system handles is without guarantees in this scenario, should probably terminate and recommend disabling pre-alloc at that point probably v
avatar
chalice: Preallocation hangs for my sometimes too. Apparently only when the file size is large like for cyberpunk*.21.bin.
Happened only after reinstalling WSL2 with new Debian inside. Starting gogrepoc.py in Debian (inside WSL2), writing to ext4 on a NAS. Will also comment out the lines later to make it work.
avatar
Kalanyr: I'll add timeouts and make the Posix optional , I need to see if I can semi-reliably detect the target filesystem and current OS too.

I really don't like the timeouts because this is terrible behaviour from system calls and the state of the files and system handles is without guarantees in this scenario, should probably terminate and recommend disabling pre-alloc at that point probably v
Thanks. FWIIW commenting out works for me too. Downloading at the moment.
avatar
nightstrike_gog: In my case, I moved my repository to a new cloud location, and I'd like to reverify it cloud-side, but my session time is limited, and so I need to keep restarting.
avatar
lupineshadow: Use tmux to keep processes running in a tmux session even if you are disconnected:
Thanks. Though I'm quite familiar with tmux, it's not allowed in this environment. There's no way to bypass the limitations, or even break out of the environment into your own terminal.
Hi,

I am completely no to this, so I apologize if this was asked before: I have many items in my library (free games etc.) that I would like to omit from the library backup. What is the best way to do this, so that these specific games are not downloaded?

Thank you in advance!
avatar
babarian34: Hi,

I am completely no to this, so I apologize if this was asked before: I have many items in my library (free games etc.) that I would like to omit from the library backup. What is the best way to do this, so that these specific games are not downloaded?

Thank you in advance!
The easiest to do, in my opinion, is to hide the games you do not want to backup in your GOG library, then use the -skiphidden flag in your gogrepoc update command.
avatar
mrkgnao: The easiest to do, in my opinion, is to hide the games you do not want to backup in your GOG library, then use the -skiphidden flag in your gogrepoc update command.
Good suggestion. It might be important to know that the Galaxy flags and hidden status are not synchronized with the homepage, so one has to hide the game through the homepage.
That's great advice, thank you!
I have discovered html5lib is no longer being actively maintained, going to look into using the built in parser ( GOGrepo doesn't do much complex parsing at this level but the GOG html layout can be idiosyncratic and we do need to get some complex stuff from it so maybe it will work) but figured I'd ask here:

Does anyone know what (if any). the current standard actively maintained python advanced html parser module is ?

Some quick poking suggests there isn't really anything.
avatar
Kalanyr: I have discovered html5lib is no longer being actively maintained, going to look into using the built in parser
Just for curiosity, but.. why, did it stop working?
Or does it miss important features?
avatar
Kalanyr: I have discovered html5lib is no longer being actively maintained, going to look into using the built in parser ( GOGrepo doesn't do much complex parsing at this level but the GOG html layout can be idiosyncratic and we do need to get some complex stuff from it so maybe it will work) but figured I'd ask here:

Does anyone know what (if any). the current standard actively maintained python advanced html parser module is ?

Some quick poking suggests there isn't really anything.
Last commit dates from March: https://github.com/html5lib/html5lib-python

Its not bad. Its not a hot new project that lots of people are committing to daily, but I don't see a reason to believe urgent needed fixes wouldn't get done if such a need surfaced.

If you need something that is not getting done in the project, you could always fork it if you are feeling ambitious. Its not a tiny project, but it is not humongous either.

Otherwise, for html parsing in Python, for my use-case I had years ago, I used the standard library: https://docs.python.org/3/library/html.parser.html .

You need to grok your head around its inheritance model, but once you do, it is kind of elegant.