Skip to content
Snippets Groups Projects
  • Jonathon Hall's avatar
    bea8aec5
    functions: Fix support for modern-style arch:all with foreign bootstrap · bea8aec5
    Jonathon Hall authored
    
    Commit 5fa79061 ("Implement support for repos with modern-style
    arch:all support") added support for modern-style arch:all - where the
    architecture-specific release files do not list packages for arch all;
    they're in a separate list.
    
    However, it did not work for foreign bootstrap when the second stage is
    performed separately.  The second stage relied on a global
    "ARCH_ALL_SUPPORTED" being set by the first stage, which doesn't happen
    when they are executed separately.  This caused PureOS Crimson to fail
    a foreign bootstrap, because dpkg could not record the selection of
    cron-daemon-common (an arch:all pre-dependency of cron).
    
    Additionally, it appears this would not have been precisely correct for
    multiple suites.  Most logic would use the ARCH_ALL_SUPPORTED value of
    the last suite for all suites.  download_release_indices would have
    carried over the 'all' from prior suites to later suites, possibly
    duplicating it if more than one suite supports all.
    
    Don't use global state for this.  Check support for each suite when
    needed.
    
    Signed-off-by: default avatarJonathon Hall <jonathon.hall@puri.sm>
    bea8aec5
    History
    functions: Fix support for modern-style arch:all with foreign bootstrap
    Jonathon Hall authored
    
    Commit 5fa79061 ("Implement support for repos with modern-style
    arch:all support") added support for modern-style arch:all - where the
    architecture-specific release files do not list packages for arch all;
    they're in a separate list.
    
    However, it did not work for foreign bootstrap when the second stage is
    performed separately.  The second stage relied on a global
    "ARCH_ALL_SUPPORTED" being set by the first stage, which doesn't happen
    when they are executed separately.  This caused PureOS Crimson to fail
    a foreign bootstrap, because dpkg could not record the selection of
    cron-daemon-common (an arch:all pre-dependency of cron).
    
    Additionally, it appears this would not have been precisely correct for
    multiple suites.  Most logic would use the ARCH_ALL_SUPPORTED value of
    the last suite for all suites.  download_release_indices would have
    carried over the 'all' from prior suites to later suites, possibly
    duplicating it if more than one suite supports all.
    
    Don't use global state for this.  Check support for each suite when
    needed.
    
    Signed-off-by: default avatarJonathon Hall <jonathon.hall@puri.sm>