There are audio issues on the RPI with the current HEAD version. But also we have had to update this
scriptmodule a fair amount due to upstream changes, and it would be better now to stick to the latest
stable version. Previously there were less frequent "stable" releases also.
The v3.5 version seems to work without issue.
Use "Last Changed Rev:" rather than "Revision:" as we want the last revision for the URL/branch/tag
rather than the last revision for the repository.
Don't just compare commits if the commit is HEAD (used for svn repos) as it's not a static commit but
references the latest commit.
Adds an option to show some of the main retropie.pkg information for an installed package.
Will be expanded in the future, but it's useful to see more information about what is installed now we have it.
Copy retropie.pkg to archive folder named as $md_id.pkg and use this in rp_hasNewerModule if no installed
package is found. Adjust the builder code to check for a newer source package to utilise this so we only
rebuild binaries as are needed.
Previously the location of the sfml-pi repo would be used as it was called first on the RPI,
which would mean an update is always done as the sfml-pi hash would have been stored rather than the
main repository. Ideally we would handle it so if either repository updates, but that requires a fair
amount of additional code as with mupen64plus and it's not work it for this - the sfml-pi code doesn't
change that often and better to just base it on the core code
Some users reported issues and it was taking between 5 and 6 seconds - which points to an connectivity issue
really, as it's a small HEAD request. However increasing the timeout will help for these users.
This is a quick fix, as I will look into improving the error msgs also.
When the remote repository uses an annotated Git tag, the real commit is found
by looking for the "tag^{}" reference, since the the tag ref will point to the
tag object itself, instead of the tagged commit. See gitrevisions(7).
Seems an odd choice to use such a new upstream macro/function - but as we are on SDL 2.0.10
still while kms issues are still present with upstream code, for now it's easiest to rollback to an
earlier commit.
Also moved the retropie email used for checking to __gpg_retropie_key and use this rather than __gpg_signing_key
as we hardcode the install of the actual key - so the logic didn't make sense in the case of wanting to sign
with another key. But __gpg_signing_key can now be set to an empty string to bypass signing of binaries as used
by the build scripts. This is only useful for developers/testing binary creation on systems without our signing key.
Looks like GL2 compatibility has been kept for LZDoom versions post 3.86, so we can update to the latest 3.x release tag.
Other:
* Removed the CFLAGS manipulation, since the math optimizations have been removed in c3751a4f0e, but left the warning for building with `-funsafe-math-optimizations`
* Use the direct link to the license page
The message was overly verbose and cluttered the menu a bit. The red colour should be enough but choosing
the disabled package shows a dialog with information anyway.
The previous changes to check for an internet connection to avoid showing options to update failed
with these modules as they have install_bin functions which are handled by rp_hasBinary but don't
require an internet connection.
To workaround this, I have added a "nonet" flag, which if set, will force has_net to 1 in setup and packages
so the install options will show, and they can be removed and reinstalled even if no network connection is available.
runcommand can still fail due to not being able to install mesa-drm - which will be reported, but it's safer to allow
the main runcommand to be installed even without mesa-drm in case of accidental removal.
Reworked rp_loadPackageInfo to clear package information in __mod_info and defaulting pkg_origin to "unknown".
The pkg_origin was set on module load before, but this isn't enough as it was remembered when removing a package,
so wouldn't be set back to the default if no package information was found. This caused installing from a section
to install from the last pkg_origin rather than the default of "unknown" if installing a package that had been removed.
The default is best handled here also, so we have less related code in other functions.
Unless there is an error, cache the return result for rp_hasBinary and rp_hasNewerModule
and clear when running rp_setModuleInfo or removing a module.
Reworked the rp_hasNewerModule code to have a single return point to allow us to cache the result.
This speeds up navigating Setup menus.
If a module chooses a specific commit via rp_module_repo (directly or via a hook) using the first 8
characters of the git hash, only compare against the first 8 characters of our installed package hash.
This should fix any cases where an older commit is used for a module, but would not match, so a git ls-remote
would be called, which would get the last commit, and an update would be forced when not needed.
Split off the code to get the various repos depending on platform, adding default branch names.
Add a _pkg_info_mupen64plus function which takes get/newer/check parameters from the main packaging code.
If "get" is called, we check all used repositories, getting the last commit hash of each repo, and make
a md5 checksum which is stored in pkg_repo_extra.
If "newer" is called, we check the remote hashes of all repositories, make a md5 checksum and compare against
installed package pkg_repo_extra.
Switched the hash for GLideN64 for older cmake to a full hash, so we generate the same md5sum also.
If "check" is called (only currently used by our tools module for checking repo validity) it checks all the
repos, outputting any errors, and returns 1 if any of them failed.
This is a lot of extra code, but it's only this module which requires this complexity - we could have just
used the main repository, but as some of the plugins are more actively developed at times, it made sense to
want to update if any of the plugin repositories were changed also. This seemed the best way to do it, but
the additional hook functionality could be used with other modules in the future if it was needed.
If a module has a function hook for rp_module_repo then call it with the parameter "check"
The function should output any errors, and return 1 if an error is encountered after all checks are complete.
If the first parameter of rp_module_repo starts with a : it the following function will be called
when setting package information during source install, and when checking for a new source version.
The function takes the parameters "get" and "check".
"get" - should return code to set any packaging variables needed for the module hook later.
The pkg_repo_extra field has been added specifically for modules to store something different from the
standard fields also
"newer" will be called with pkg_repo_* vars set, and can be used by the function hook to determine if
a new version is available. If so, the function should return 0, or 1 if no update is required.
I also split off checking remote repo hash/commit to separate function and fix up an issue with checking
remote git hash, as previously a branch or tag could have multiple matches - we now specifically grep
the results for ref/heads and ref/tags
Mostly drivers and supplementary packages - most install to md_inst which should be handled better now,
but also adjusted sixaxis to use md_build rather than a subfolder in md_build as it didn't seem to require it.
rp_module_repo is currently in the format
TYPE URL BRANCH COMMIT
where type is file, git or svn
If rp_module_repo URL BRANCH or COMMIT starts with a : the rest is considered to be a function that
will return the URL, BRANCH, or COMMIT via an echo. This allows for using of the new rp_module_repo
by modules that use some logic to determine what branch / commit is used.
eg. Some modules will use an older branch based on the system they are running on.
These variables are resolved before use, as some modules query the net for information, so we only
want to check these just before they are used.