Skip to content

Conversation

@Thaodan
Copy link
Contributor

@Thaodan Thaodan commented Aug 6, 2025

Originally based on work by Frajo Haider but completely reworked
to use the existing interface system.

Contains #32, obsoletes #21.

vigejolla and others added 30 commits January 9, 2024 14:29
meson incorrectly tries to use ccache if it's accelerated even when it
does not exist

Signed-off-by: Ville Nummela <ville.nummela@jolla.com>
[sb2] Conditionally accelerate ccache. JB#61370
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
`egrep` and `fgrep` are deprecated, use `grep -E` or `grep -F` respectively.
Replace `$(...)`  notation instead of legacy backticks.
Avoid useless `cat` where `read` can do the job better.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
[sb2] Replace deprecated egrep, fgrep and cleanup
[sb2] Add gate for statx. JB#49501
Our sed is to old for the POSIX option.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
…ption

[sb2] Use GNU option for extended sed. JB#59434
Paths for ldconfig is relative to the root passed with -r.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Martin Kampas <martin.kampas@jolla.com>
Append to LD_PRELOAD instead of prepend, so that sb2, as the
virtualization layer, sits at the very bottom.

At least the Coverity scan build tool does not operate correctly if
libsb2.so takes its action first.

Signed-off-by: Martin Kampas <martin.kampas@jolla.com>
This (still) exists as a symlink to /usr/bin/env, so the rule should be
included as we do in other similar cases.
[sb2] Fix ldconfig use at build time. JB#61808
[sb2] Fix compatibility with LD_PRELOAD-based tools. JB#61781
Accelerate sh/bash installed under /usr and more cleanups
Signed-off-by: Björn Bidar <bjorn.bidar@thaodan.de>
lua.h isn't always inside in /usr/include, take LUA_CFLAGS
as taken from pkgconfig.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Fix declaration of tmpnam with glibc < 2.34 and gcc >= 11
i_virtualize_struct_statx was only implicitly defined in
vterm_statfuns.c as config.h which defines HAVE_STATX wasn't included.
Consistently include config.h before any other header to avoid issues
like these:
preload/vperm_filestatgates.c: In function ‘statx_gate’:
preload/vperm_filestatgates.c:272:17: error: implicit declaration of function ‘i_virtualize_struct_statx’; did you mean ‘i_virtualize_struct_stat’? [-Wimplicit-function-declaration]
  272 |                 i_virtualize_struct_statx(realfnname, buf);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                 i_virtualize_struct_stat

Also use consistent include order and naming in all files.

Fixes: 0ecaef5 ([sb2] Add gate for statx. JB#49501)
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>

[sb2] Fix implicit declaration of function ‘i_virtualize_struct_statx’. Fixes JB#62739
include/elf.h:25:14: error: expected ‘;’ before ‘typedef’
   25 | __BEGIN_DECLS
      |              ^
      |              ;

Fixes: 055cb96 (Incomplete OS X support)
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Fixes errors such as:
include/rule_tree.h:22:9: error: unknown type name ‘uint32_t’
   22 | typedef uint32_t ruletree_object_offset_t;

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
preload/vperm_statfuncts.c:122:5: warning: no previous prototype for ‘i_virtualize_struct_stat_internal’ [-Wmissing-prototypes]
 122 | int i_virtualize_struct_stat_internal(

Fixes: 0ecaef5 ([sb2] Add gate for statx. JB#49501)
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Thaodan and others added 9 commits August 6, 2025 12:25
To make it easier to detect where Scratchbox2 helper scripts
and binaries are found on the host and partially on the
tooling/target.
This is especially important for helper binaries such as sb2dctl.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
The version used in the Makefile and version header was extracted
using git with a phony target which resulted in unintended rebuilds.

Using the autoconf script avoids these as now the version only updates
when the autoconf script changes.

Further the version originally set in the autoconf was also out of
date. This change fixes both of these issues.
The script in build-aux was taken from Gnulib.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Previously config.status was also clean as part of the clean making
rebuilds impossible without calling configure again.
Clean isn't supposed to clean the generated build- or
distribution-system files.

Further somefiles that should be clean where not cleaned at all.
This change also aligns the name of the clean target which removes
the distribution to the one configure mentions when it fails.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
When configure.ac or config.mak.in change but not their output their
will be repeated rebuilds as the timestamp their output files such as
config.mak stay older than their dependency.

The timestamp file's timestamp will always update after the targets
dependency changed.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Co-authored-by: Matti Viljanen <matti.viljanen@jolla.com>
Co-authored-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
In case not available.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Sets basic indentation across editors and reviews on Github.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Thaodan added 5 commits August 6, 2025 12:56
The char arrays in sblog_vprintf_line_to_logfile where not initialized
which can cause the the call to vsnprintf can fail.
See for example the backtrace below:

   from ~/dev/vms/jolla/targets/SailfishOS-devel-i486/lib/libc.so.6
    level=9, format=0xf7f6c488 "%s gate: calling mapped syscall(%s) to %s",
    ap=0xffcd9f10 "\304\035\367\367\005")
    at ~/dev/sailfish/jolla/pkgs/pj_oss/scratchbox2/sblib/sb_log.c:318
    level=9, format=0xf7f6c488 "%s gate: calling mapped syscall(%s) to %s")
    at ~/dev/sailfish/jolla/pkgs/pj_oss/scratchbox2/sblib/sb_log.c:423
    realfnname=0xf7f71988 <__func__.292> "syscall", number=5, ap=0xffcd9fc4 "\034\240\004\b")
    at preload/syscallgate.c:91
Also remove some extra white space at end or in empty lines.
Originally based on work by Frajo Haider but completely reworked
to use the existing interface system.

Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
Signed-off-by: Björn Bidar <bjorn.bidar@jolla.com>
@Thaodan Thaodan force-pushed the syscall_forwarding_refactored_jb59837 branch from cf6e4fc to e4a0ced Compare August 6, 2025 09:58
@piggz
Copy link

piggz commented Oct 6, 2025

This appears to fix the issues building qt6, with file permission errors. See https://build.sailfishos.org/project/monitor/home:piggz:qt6sb2?arch_aarch64=1&defaults=0&repo_sailfish_latest_aarch64=1&succeeded=1 i had to fork and make some build fixes, minor printf formatting placeholders.

@vige
Copy link

vige commented Oct 10, 2025

You should rebase the PR on top of current master. It would still be a huge PR but at least a bit more comprehensible.

if (str) {
SB_LOG(SB_LOGLEVEL_NOISE,
"%s: %s='%s'", __func__, s_name, str, fldoffs);
"%s: %s='%s' o=%lu", __func__, s_name, str, fldoffs);
Copy link

@piggz piggz Oct 13, 2025

Choose a reason for hiding this comment

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

Should be %u for size_t

Copy link

Choose a reason for hiding this comment

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

Discussed with @mlehtima , %zu is probably better?

} else {
SB_LOG(SB_LOGLEVEL_NOISE,
"%s: No %s", __func__, s_name, fldoffs);
"%s: No %s o=%lu", __func__, s_name, fldoffs);
Copy link

Choose a reason for hiding this comment

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

Should be %u

uip = ruletree_get_pointer_to_boolean(offs);
SB_LOG(SB_LOGLEVEL_NOISE,
"%s: @%u = *%p = %d",
"%s: @%u = *%p = %d o=%lu",
Copy link

Choose a reason for hiding this comment

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

Should be %u

uip = ruletree_get_pointer_to_uint32(offs);
SB_LOG(SB_LOGLEVEL_NOISE,
"%s: @%u = *%p = %u",
"%s: @%u = *%p = %u o=%lu",
Copy link

Choose a reason for hiding this comment

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

Should be %u

eph.exec_policy_offset, r_name);
SB_LOG(SB_LOGLEVEL_NOISE,
"%s: @%u", __func__, offs, fldoffs);
"%s: @%u o=%lu", __func__, offs, fldoffs);
Copy link

Choose a reason for hiding this comment

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

Should be %u


SB_LOG(SB_LOGLEVEL_NOISE,
"%s: '%s' (%u), '%s' (%u) => %d (%s)",
"%s: '%s' (%lu), '%s' (%u) => %d (%s)",
Copy link

Choose a reason for hiding this comment

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

Should be %u


SB_LOG(SB_LOGLEVEL_NOISE,
"ruletree_test_path_match '%s' (%u), '%s' (%u) => %d (%s)",
"ruletree_test_path_match '%s' (%lu), '%s' (%u) => %d (%s)",
Copy link

Choose a reason for hiding this comment

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

Should be %u

if (write(ruletree_ctx.rtree_ruletree_fd, ptr, size) < (int)size) {
SB_LOG(SB_LOGLEVEL_ERROR,
"Failed to append a struct (%d bytes) to the rule tree", size);
"Failed to append a struct (%lu bytes) to the rule tree", size);
Copy link

Choose a reason for hiding this comment

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

Should be %u

if ((wr_result == -1) || ((size_t)wr_result < list_size_in_bytes)) {
SB_LOG(SB_LOGLEVEL_ERROR,
"Failed to append a list (%d items, %d bytes) to the rule tree",
"Failed to append a list (%d items, %lu bytes) to the rule tree",
Copy link

Choose a reason for hiding this comment

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

Should be %u


SB_LOG(SB_LOGLEVEL_NOISE,
"ruletree_find_inodestat (dev=%lld,ino=%lld,key=%llX)",
"ruletree_find_inodestat (dev=%lld,ino=%lld,key=%lu)",
Copy link

@piggz piggz Oct 13, 2025

Choose a reason for hiding this comment

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

Should be %llu

{
SB_LOG(SB_LOGLEVEL_NOISE,
"ruletree_set_inodestat (dev=%lld,ino=%lld,key=%llX))",
"ruletree_set_inodestat (dev=%lld,ino=%lld,key=%lu))",
Copy link

@piggz piggz Oct 13, 2025

Choose a reason for hiding this comment

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

Should be %llu

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants