Skip to content

feat(libSceSaveData): declare sceSaveDataGetProgress with its known signature - #10674

Merged
oneandonlydean merged 3 commits into
boykopovar:mainfrom
MarcZX10:marc/signatures-libscesavedata
Nov 2, 2026
Merged

oneandonlydean merged 3 commits into
boykopovar:mainfrom
MarcZX10:marc/signatures-libscesavedata

Conversation

@MarcZX10

Copy link
Copy Markdown
Contributor

What

Gives sceSaveDataGetProgress, declared with no parameters, its float* progress parameter. It still throws through NotImplemented_nid_no_patch; nothing else changes.

The signature is the same in the public OpenOrbis headers (include/orbis/SaveData.h) and in shadPS4 (sceSaveDataGetProgress(float*), GPLv2, used only as a reference); it is not measured on a PS5. The debt entry in docs/dev/debt/libSceSaveData.md takes the function out of the list of parameterless pending declarations and records the source and the lack of measurement. Two commits: declaration, debt entry.

No open PR touches libSceSaveData.

Tested

Linux, GCC, cmake --build --target libSceSaveData builds. tools/check_conventions.py --base upstream/main --head HEAD passes apart from the existing debt-length warning on the long pending-declarations entry; git diff --check is clean. No title or hardware run: throwing stub, same behaviour as before.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@wachi35676

Copy link
Copy Markdown
Contributor

Merged this head onto main 14eb2cda22. git merge-tree is clean, but libSceSaveData no longer compiles, on Windows 11 (WinLibs GCC 15.2.0) and on WSL2 Ubuntu 24.04 (GCC 13.3):

core/libs/prx/libSceSaveData/Export.cpp:266:15: error: conflicting declaration of C function 'int sceSaveDataGetProgress(float*)'

main now has the canonical public header from f38d29fd0 (refactor(sdk): add canonical headers for remaining libraries), and it still has the old prototype: core/libs/prx/libSceSaveData/include/Api.hpp:50: int APS5_VABI sceSaveDataGetProgress();. This PR changes the definition but not that declaration. The new signature needs to go into include/Api.hpp too, after a rebase or merge of main.

AI-assisted: yes (Claude Code); results above were run on this machine.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

@MarcZX10 Your definition of sceSaveDataGetProgress now takes float*, but on current main its only declaration, core/libs/prx/libSceSaveData/include/Api.hpp:50, still has an empty parameter list, and Export.cpp includes that header, so the two conflict once this is merged with main (wachi35676's build above shows the error). Replacing the no-arg placeholder with your sourced signature is fine. Could you rebase onto main and change that declaration to match your definition? The header audit only counts declarations, not parameter lists, so please also build libSceSaveData on the rebased branch.

@MarcZX10
MarcZX10 force-pushed the marc/signatures-libscesavedata branch from 62b1aad to 931fe90 Compare October 27, 2026 00:34
@MarcZX10

Copy link
Copy Markdown
Contributor Author

Rebased onto current main and changed the declaration in libSceSaveData/include/Api.hpp to int APS5_VABI sceSaveDataGetProgress(float* progress);, so it matches the definition (fix(libSceSaveData): give sceSaveDataGetProgress its signature in the public header, head 931fe9001a). Built libSceSaveData on the rebased tree (it links), and the public header audit and tools/check_conventions.py --base upstream/main pass.

@babyhuey

Copy link
Copy Markdown
Contributor

Windows run of this head 931fe9001a3, merged onto main 27ad7244d22 (clean merge, local only), with the selection CI's skipped Windows product job uses: Windows 11, Ryzen 7 5800X, RTX 3080, WinLibs GCC 15.2, Release, BUILD_TESTING=ON. The tree was configured fresh after the merge, then select_tests.py select / ninja -f select.ninja selected / --target libs / select_tests.py ctest --parallel 4 --timeout 120.

  • Selected 420 tests: 414 pass, 0 fail, 6 skip. No failures.

AI-assisted: yes (Claude Code)

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 28, 2026
@MarcZX10
MarcZX10 force-pushed the marc/signatures-libscesavedata branch from 931fe90 to 1842be8 Compare October 28, 2026 14:14
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 28, 2026
@zaryabzip

Copy link
Copy Markdown
Contributor

@MarcZX10 Merge order note (CONTRIBUTING, overlap rule): #12625 implements sceSaveDataInitialize2 and edits the same pending-declarations line in docs/dev/debt/libSceSaveData.native.md. To avoid asking anything of this PR, I built #12625 on this branch's head with current main merged in, and marked it Depends on: #10674. So this one goes first, unchanged, and #12625 follows.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 14150 core/libs/prx/libSceSaveData/include/Api.hpp L49-50
PR 14908 docs/dev/debt/libSceSaveData.native.md L24

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 14212 docs/dev/debt/libSceSaveData.native.md

@MarcZX10

Copy link
Copy Markdown
Contributor Author

The new PR-overlap check identifies #12699 as editing the same libSceSaveData.native/Export.cpp and docs/dev/debt/libSceSaveData.native.md paths. I fetched both current heads and ran a pairwise merge preview: Export.cpp auto-merges, but the debt file has a content conflict. Both checklists currently say Depends on: none.

This makes the PR description's “No open PR touches libSceSaveData” statement stale. Please coordinate with #12699's author on which change lands first. If this PR goes first, ask the second PR to declare Depends on: #10674; if #12699 goes first, record that dependency here and rebase after it lands. Keep the existing #12625 dependency/order intact. I have not run either PR's code or tests locally for this overlap check.

…ignature

It still throws through NotImplemented_nid_no_patch; the parameter is the
float* of the OpenOrbis headers and shadPS4.
… public header

main declares it with an empty parameter list in Api.hpp, which conflicts with the definition.
@MarcZX10
MarcZX10 force-pushed the marc/signatures-libscesavedata branch from 1842be8 to 351bb88 Compare October 31, 2026 22:50
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 31, 2026
@MarcZX10

MarcZX10 commented Nov 1, 2026

Copy link
Copy Markdown
Contributor Author

Re-checked — new head, declaration matches the definition

The concern about sceSaveDataGetProgress was a stale declaration; head 351bb88ef4 (rebased onto current main) declares int APS5_VABI sceSaveDataGetProgress(float* progress); in libSceSaveData/include/Api.hpp:50, matching the definition at libSceSaveData.native/Export.cpp:1310, which includes that header.

The earlier reports refer to older heads: the Windows run and the compile error were on 931fe9001a and 14eb2cda22, so they do not cover this head.

Checked on 351bb88ef4: g++ -std=gnu++20 -fsyntax-only on libSceSaveData.native/Export.cpp with the repository's include directories passes, and the pending-declarations bullet no longer names sceSaveDataGetProgress. Not run: a full build or a Windows run on this head.

Dependency: #12625 is listed as depending on this PR in the comment above, but its description has no Depends on: line, so it should get one.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

The declaration and definition of sceSaveDataGetProgress(float* progress) match on 351bb88ef4; thanks for fixing the signature.

The earlier request also asked for a build of the library on the rebased head, since the declaration audit does not check parameter compatibility. The latest report explicitly covers a syntax check only, and the Windows build covers older head 931fe9001a. Could you build the SaveData library target on 351bb88ef4 and record the exact head and result? A new runtime behavior test is not needed for this signature-only change.

@BunnyFl BunnyFl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Windows 11, WinLibs GCC 15.2.0 r7, Release. Head 351bb88 merged into upstream/main 93dbd0f: libSceSaveData and libSceSaveData.native build, and public_headers passes. tools/check_conventions.py --base upstream/main --head 351bb88ef4 reports only the existing debt-length warning on the long pending-declarations entry, no errors. #12625 splits that entry.

The float* signature matches the OpenOrbis and shadPS4 declarations, and the export still throws, so behaviour is unchanged.

Small correction to the description: it names docs/dev/debt/libSceSaveData.md, but the change edits docs/dev/debt/libSceSaveData.native.md (where the entry lives).

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed — signature matches, build and PR text still open

The float* signature matches at this head, but no build of the library on this exact head is on record and the PR description names the wrong debt file.

What I ran

Live head 351bb88ef4d5b57c71374e11dec7e4b892baff3c (matches batch). gh pr view for statusCheckRollup, mergeability and body; gh pr diff file list via gh pr view --json files; gh api reads of comments and reviews; git show <head>:<path> on Api.hpp, Export.cpp and the debt doc. Nothing was built or run.

Results

Check Result Note
conventions SUCCESS hosted
library-portability SUCCESS hosted
windows SUCCESS hosted
eligibility, labels, report SUCCESS hosted
linux SKIPPED hosted skip

Findings

  • Signature (1 Nov): matches. libSceSaveData/include/Api.hpp:50 and libSceSaveData.native/Export.cpp:1310 both take float* progress.
  • Build on the head (1 Nov, oneandonlydean): not on record for this head. I did not build. The 2 Nov BunnyFl build was on this head merged with upstream/main 93dbd0f82a, which is a merge, not the head alone. The author should build the library target on 351bb88ef4 and record the head and result.
  • Debt file (2 Nov, BunnyFl): correct. The PR body names docs/dev/debt/libSceSaveData.md, but the PR changes docs/dev/debt/libSceSaveData.native.md. The body needs the fix.

Sources

Not verified

  • That the library builds on this head.
  • The OpenOrbis and shadPS4 signature claims: external sources, not checked.

@oneandonlydean
oneandonlydean merged commit cb0f84e into boykopovar:main Nov 2, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants