Skip to content
Snippets Groups Projects
  1. Dec 04, 2024
  2. Dec 01, 2024
    • Oliver Smith's avatar
      main/postmarketos-base: pmb_recommends: add doas-sudo-shim (MR 5867) · d0567293
      Oliver Smith authored
      Fix the following error during "pmbootstrap install":
      
        ERROR: unable to select packages:
          sudo-1.9.16_p1-r1:
            conflicts: doas-sudo-shim-0.1.1-r1[cmd:sudo=1.9.16_p1-r1]
            breaks: doas-sudo-shim-0.1.1-r1[!sudo]
            satisfies: postmarketos-base-38-r0[sudo-virt]
                       postmarketos-base-nofde-38-r0[sudo-virt]
          doas-sudo-shim-0.1.1-r1:
            conflicts: sudo-1.9.16_p1-r1[cmd:sudo=0.1.1-r1]
            satisfies: postmarketos-base-doas-38-r0[doas-sudo-shim]
                       postmarketos-base-38-r0[sudo-virt]
                       postmarketos-base-nofde-38-r0[sudo-virt]
      
      How the error gets triggered:
      * postmarketos-base depends on sudo-virt. During "pmbootstrap install",
        pmbootstrap has to resolve this to a sudo implementation (sudo, doas,
        ...).
      * pmbootstrap does this by looking at the packages that get installed
        at the same time. Before this patch we did not install doas-sudo-shim
        directly through _pmb_recommends, only indirectly through a
        postmarketos-base-doas subpackage that pulls doas-sudo-shim in via
        install_if.
      * pmbootstrap cannot look at install_if as it resolves dependencies,
        so it has to pick one and goes for "sudo".
      * pmbootstrap tells apk to install a list of packages including "sudo",
        and because apk also resolves install_if correctly, the solver fails
        at the conflict between "doas-sudo-shim" and "sudo". (This only fails
        since apk-tools-static 2.14.6-r0, apparently beforehand apk just
        installed "doas-sudo-shim" in this scenario.)
      
      Teaching pmbootstrap to look at install_if while resolving packages
      would be one way to fix this. But it would be a lot of effort, not
      feasible to quickly stop the problem at hand that breaks "pmbootstrap
      install" for all edge installs. IMHO it is not worth implementing this
      at all in pmbootstrap, as it is just supposed to do some more or less
      basic package resolving until apk takes over and does it properly.
      
      Put doas-sudo-shim in _pmb_recommends so pmbootstrap knows that this is
      the sudo implementation we want without looking at install_if.
      
      Remove the now obsolete postmarketos-base-doas subpackage. This will
      lead to doas-sudo-shim getting removed for old installations on upgrade,
      but it can easily be installed back (doas add doas-sudo-shim). I'll make
      an edge post about it and put it in the v24.12 release notes. If we
      don't remove it here, we would need to keep this legacy subpackage
      around forever and I'd rather avoid that to reduce maintenance effort.
      
      Another alternative to this was removing sudo-virt from depends="". But
      that would lead to sudo getting uninstalled for users upgrading from
      old releases from before we had doas in pmb_recommends, so I've decided
      against it.
      
      Fixes: pmaports issue 3340
      Unverified
      d0567293
  3. Nov 30, 2024
  4. Nov 29, 2024
    • Richard Acayan's avatar
      linux-postmarketos-qcom-sdm670: enable null tty (MR 5856) · 8834db0f
      Richard Acayan authored and Alexey Minnekhanov's avatar Alexey Minnekhanov committed
      The Google Pixel 3a automatically appends console=null to the command
      line. In the kernel, the preferred console is set to ttynull. Since
      ttynull is not automatically enabled, a warning is currently emitted:
      
      	[    0.909853] Warning: unable to open an initial console.
      
      This also causes stdin, stdout, and stderr to be missing from the init
      process.
      
      In the busybox implementation, syslogd creates the /dev/log socket and
      opens /dev/kmsg. This happens just before daemonizing, which opens
      /dev/null and aliases stdin, stdout, and stderr to it. After daemonizing
      and potentially closing the socket, stdin is aliased to the socket to
      save stack memory. If the program starts without stdin under Linux, the
      socket gains the constant STDIN_FILENO file descriptor, which is cleared
      when daemonizing.
      
      Syscalls when the 0, 1, 2 file descriptors aren't open:
      
      	socket(AF_UNIX, SOCK_DGRAM, 0)    = 0
      	openat(AT_FDCWD, "/dev/kmsg", O_WRONLY|O_LARGEFILE) = 1
      	openat(AT_FDCWD, "/dev/null", O_RDWR|O_LARGEFILE) = 2
      
      Enable the CONFIG_NULL_TTY option and update the configuration to allow
      the kernel to open stdin, stdout, and stderr for the init and (by
      inheritance) syslogd processes. It's technically an expert option but
      isn't enabled by default (and can be enabled in config fragments).
      
      Closes #3269
      [ci:skip-build]: already built successfully in CI
      Verified
      8834db0f
  5. Nov 28, 2024
  6. Nov 27, 2024
  7. Nov 26, 2024
  8. Nov 25, 2024
  9. Nov 24, 2024
Loading