这是indexloc提供的服务,不要输入任何密码
Skip to content

[DO NOT MERGE] [TRACKER] Apt 3.1.x #24212

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 13 commits into
base: master
Choose a base branch
from
Draft

Conversation

TomJo2000
Copy link
Member

@TomJo2000 TomJo2000 commented Apr 8, 2025

Currently fails with:

FAILED: apt-pkg/CMakeFiles/apt-pkg.dir/edsp.cc.o 
/home/builder/.termux-build/_cache/android-r27c-api-24-v1/bin/clang++ --target=aarch64-none-linux-android --gcc-toolchain=/home/builder/.termux-build/_cache/android-r27c-api-24-v1 --sysroot=/home/builder/.termux-build/_cache/android-r27c-api-24-v1/sysroot -D_WITH_GETLINE=1 -Dapt_pkg_EXPORTS -I/home/builder/.termux-build/apt/build/include -I/home/builder/.termux-build/apt/build/include/apt-pkg -fstack-protector-strong -Oz -Wno-c++11-narrowing --target=aarch64-linux-android24  -isystem/data/data/com.termux/files/usr/include/c++/v1 -isystem/data/data/com.termux/files/usr/include -O3 -DNDEBUG -std=gnu++17 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wcast-align -Wredundant-decls -Wmissing-declarations -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wmissing-include-dirs -Wsign-promo -Wundef -Wdouble-promotion -Wsuggest-override -Werror=suggest-override -Werror=return-type -Wp,-D_GLIBCXX_ASSERTIONS -MD -MT apt-pkg/CMakeFiles/apt-pkg.dir/edsp.cc.o -MF apt-pkg/CMakeFiles/apt-pkg.dir/edsp.cc.o.d -o apt-pkg/CMakeFiles/apt-pkg.dir/edsp.cc.o -c /home/builder/.termux-build/apt/src/apt-pkg/edsp.cc
In file included from /home/builder/.termux-build/apt/src/apt-pkg/edsp.cc:10:
In file included from /home/builder/.termux-build/apt/build/include/apt-pkg/algorithms.h:32:
In file included from /home/builder/.termux-build/apt/build/include/apt-pkg/cachefilter.h:9:
/home/builder/.termux-build/apt/build/include/apt-pkg/pkgcache.h:638:39: warning: unknown attribute 'unavailable' ignored [-Wunknown-attributes]
  638 |    map_pointer<Version> VersionList [[gnu::unavailable("not yet available")]];
      |                                       ^~~~~~~~~~~~~~~~
/home/builder/.termux-build/apt/build/include/apt-pkg/pkgcache.h:639:51: warning: unknown attribute 'unavailable' ignored [-Wunknown-attributes]
  639 |    map_pointer<SourceVersion> NextSourceVersion [[gnu::unavailable("not yet available")]];
      |                                                   ^~~~~~~~~~~~~~~~

@TomJo2000 TomJo2000 requested a review from Grimler91 as a code owner April 8, 2025 23:31
@TomJo2000
Copy link
Member Author

TomJo2000 commented Apr 8, 2025

That part of apt-pkg/pkgcache.h does seem to have changed between 2.8.1 (which we ship now) and 3.0.0, here's the hunk:

@@ -611,8 +619,27 @@ struct pkgCache::DescFile
    map_pointer<DescFile> NextFile;
    /** \brief position in the file */
    map_filesize_t Offset;         // File offset
-   /** @TODO document pkgCache::DescFile::Size */
-   map_filesize_t Size;
+};
+									/*}}}*/
+// SourceVersion structure					 	/*{{{*/
+/** \brief information for a single version of a source package
+
+    The version list is always sorted from highest version to lowest
+    version by the generator. Equal version numbers are either merged
+    or handled as separate versions based on the Hash value. */
+struct pkgCache::SourceVersion
+{
+   /** \brief unique sequel ID */
+   map_id_t ID;
+   /** \brief Group the source package belongs too */
+   map_pointer<pkgCache::Group> Group;
+   /** \brief complete version string */
+   map_stringitem_t VerStr;
+   map_pointer<Version> VersionList [[gnu::unavailable("not yet available")]];
+   map_pointer<SourceVersion> NextSourceVersion [[gnu::unavailable("not yet available")]];
+
+   /** \brief Private pointer */
+   map_pointer<void> d;
https://salsa.debian.org/apt-team/apt/-/blob/3.0.0/apt-pkg/pkgcache.h?ref_type=tags#L638

@TomJo2000 TomJo2000 marked this pull request as draft April 8, 2025 23:42
@TomJo2000
Copy link
Member Author

Thanks for the help @licy183, I just saw this now.

@TomJo2000
Copy link
Member Author

TomJo2000 commented Apr 12, 2025

I'm doing on-device testing with the DEBs from this PR now.

I have already encountered one issue.

Warning: Could not execute pager - PagerSetup (2: No such file or directory)

Edit: Okay this is "newly" introduced in 2.9.181, and defaults to pager, which we don't ship.
Should be as simple as passing a build option.
Making it default to less seems sensible.

Footnotes

  1. https://salsa.debian.org/apt-team/apt/-/blob/3.0.0/debian/changelog?ref_type=tags#L392-404

@TomJo2000
Copy link
Member Author

TomJo2000 commented Apr 23, 2025

Okay, that fixed apt-file but now I'm getting the following two things.

~$ pkg up                                                                                                                                                          
Checking availability of current mirror:
[*] https://packages-cf.termux.dev/apt/termux-main: ok
CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable
CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable
CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable
CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable
Error: Method https has died unexpectedly!
Error: Sub-process https returned an error code (1)
Error: Method /data/data/com.termux/files/usr/lib/apt/methods/https did not start correctly
Error: Method https has died unexpectedly!
Error: Sub-process https returned an error code (1)
Error: Method /data/data/com.termux/files/usr/lib/apt/methods/https did not start correctly
Error: Method https has died unexpectedly!
Error: Sub-process https returned an error code (1)
Error: Method /data/data/com.termux/files/usr/lib/apt/methods/https did not start correctly
Error: Method https has died unexpectedly!
Error: Sub-process https returned an error code (1)
Error: Method /data/data/com.termux/files/usr/lib/apt/methods/https did not start correctly
Error: Failed to fetch https://packages-cf.termux.dev/apt/termux-main/dists/stable/InRelease  
Error: Failed to fetch https://packages-cf.termux.dev/apt/termux-root/dists/root/InRelease  
Error: Failed to fetch https://tur.kcubeterm.com/dists/tur-packages/InRelease  
Error: Failed to fetch https://packages-cf.termux.dev/apt/termux-x11/dists/x11/InRelease  
Error: Some index files failed to download. They have been ignored, or old ones used instead.
Notice: Some sources can be modernized. Run 'apt modernize-sources' to do so.

Edit: looks like a missing dependency.

~$ apt modernize-sources 
The following files need modernizing:
  - /data/data/com.termux/files/usr/etc/apt/sources.list
  - /data/data/com.termux/files/usr/etc/apt/sources.list.d/root.list
  - /data/data/com.termux/files/usr/etc/apt/sources.list.d/tur.list
  - /data/data/com.termux/files/usr/etc/apt/sources.list.d/x11.list

Modernizing will replace .list files with the new .sources format,
add Signed-By values where they can be determined automatically,
and save the old files into .list.bak files.

This command supports the 'signed-by' and 'trusted' options. If you
have specified other options inside [] brackets, please transfer them
manually to the output files; see sources.list(5) for a mapping.

For a simulation, respond N in the following prompt.
Rewrite 4 sources? [Y/n] N
Simulating only...
Modernizing /data/data/com.termux/files/usr/etc/apt/sources.list...

# Would write to: /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources
# Modernized from /data/data/com.termux/files/usr/etc/apt/sources.list
Types: deb
URIs: https://packages-cf.termux.dev/apt/termux-main/
Suites: stable
Components: main 
Signed-By: 
Warning: Could not determine Signed-By for URIs: https://packages-cf.termux.dev/apt/termux-main/, Suites: stable

Modernizing /data/data/com.termux/files/usr/etc/apt/sources.list.d/root.list...

# Would write to: /data/data/com.termux/files/usr/etc/apt/sources.list.d/root.sources
Types: deb
URIs: https://packages-cf.termux.dev/apt/termux-root/
Suites: root
Components: stable 
Signed-By: 
Warning: Could not determine Signed-By for URIs: https://packages-cf.termux.dev/apt/termux-root/, Suites: root

Modernizing /data/data/com.termux/files/usr/etc/apt/sources.list.d/tur.list...

# Would write to: /data/data/com.termux/files/usr/etc/apt/sources.list.d/tur.sources
Types: deb
URIs: https://tur.kcubeterm.com/
Suites: tur-packages
Components: tur  tur-on-device tur-continuous
Signed-By: /data/data/com.termux/files/usr/etc/apt/trusted.gpg.d/tur.gpg

Modernizing /data/data/com.termux/files/usr/etc/apt/sources.list.d/x11.list...

# Would write to: /data/data/com.termux/files/usr/etc/apt/sources.list.d/x11.sources
Types: deb
URIs: https://packages-cf.termux.dev/apt/termux-x11/
Suites: x11
Components: main 
Signed-By: 
Warning: Could not determine Signed-By for URIs: https://packages-cf.termux.dev/apt/termux-x11/, Suites: x11

Edit: gonna have to look into that, we'll probably wanna migrate the repo files.

@Biswa96
Copy link
Member

Biswa96 commented Apr 23, 2025

CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable

Probably, seccomp need to be removed from cmake https://salsa.debian.org/apt-team/apt/-/blob/3.0.0/CMakeLists.txt?ref_type=tags#L137

@TomJo2000
Copy link
Member Author

TomJo2000 commented Apr 23, 2025

CANNOT LINK EXECUTABLE "/data/data/com.termux/files/usr/lib/apt/methods/https": library "libseccomp.so" not found: needed by main executable

Probably, seccomp need to be removed from cmake https://salsa.debian.org/apt-team/apt/-/blob/3.0.0/CMakeLists.txt?ref_type=tags#L137

It was missing as a dependency.
Works after I manually installed it.

@Biswa96
Copy link
Member

Biswa96 commented Apr 23, 2025

It was missing as a dependency.

libseccomp is still downloaded in CI and cmake picks it up.

@TomJo2000
Copy link
Member Author

TomJo2000 commented Apr 23, 2025

It was missing as a dependency.

libseccomp is still downloaded in CI and cmake picks it up.

Yes. I force pushed the branch to fix that.
https://github.com/termux/termux-packages/compare/52fdcd8e0051a4dc1272a58828fb8c89116bc542..8bd692dd9f45492681947d39f4938553113fab7a

@TomJo2000
Copy link
Member Author

I'm having some trouble wrapping my head around the new deb822 format for package sources (e.g. repos).
https://repolib.readthedocs.io/en/latest/deb822-format.html#deb822-style-format

If I run apt modernize-sources it converts all the $repo.list files into $repo.sources files
But there is still a $TERMUX__PREFIX/etc/apt/sources.list file (and it places a termux-main-stable.sources into sources.list.d).

# ~$ tree $TERMUX__PREFIX/etc/apt
/data/data/com.termux/files/usr/etc/apt
├── apt.conf.d
│   └── 50apt-file.conf
├── preferences.d
├── sources.list
├── sources.list.bak
├── sources.list.d
│   ├── root.list.bak
│   ├── root.sources
│   ├── termux-main-stable.sources
│   ├── tur.list.bak
│   ├── tur.sources
│   ├── x11.list.bak
│   └── x11.sources
├── sources.list.dpkg-old
├── trusted.gpg
└── trusted.gpg.d
    ├── 2096779623.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/2096779623.gpg
    ├── agnostic-apollo.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/agnostic-apollo.gpg
    ├── grimler.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/grimler.gpg
    ├── kcubeterm.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/kcubeterm.gpg
    ├── landfillbaby.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/landfillbaby.gpg
    ├── mradityaalok.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/mradityaalok.gpg
    ├── termux-autobuilds.gpg -> /data/data/com.termux/files/usr/share/termux-keyring/termux-autobuilds.gpg
    └── tur.gpg

5 directories, 20 files

And it's complaining about duplicates and missing Signed-By entries.

Checking availability of current mirror:
[*] https://packages-cf.termux.dev/apt/termux-main: ok
Hit:1 https://turdl.kcubeterm.com tur-packages InRelease                     
Hit:2 https://packages-cf.termux.dev/apt/termux-main stable InRelease
Hit:3 https://packages-cf.termux.dev/apt/termux-root root InRelease
Hit:4 https://packages-cf.termux.dev/apt/termux-x11 x11 InRelease
All packages are up to date.    
Warning: Target Packages (main/binary-aarch64/Packages) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Packages (main/binary-all/Packages) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Contents-deb (main/Contents-aarch64) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Contents-deb (main/Contents-all) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Packages (main/binary-aarch64/Packages) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Packages (main/binary-all/Packages) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Contents-deb (main/Contents-aarch64) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Warning: Target Contents-deb (main/Contents-all) is configured multiple times in /data/data/com.termux/files/usr/etc/apt/sources.list:1 and /data/data/com.termux/files/usr/etc/apt/sources.list.d/termux-main-stable.sources:1
Notice: Missing Signed-By in the sources.list(5) entry for 'https://packages-cf.termux.dev/apt/termux-main'
Notice: Missing Signed-By in the sources.list(5) entry for 'https://packages-cf.termux.dev/apt/termux-root'
Notice: Missing Signed-By in the sources.list(5) entry for 'https://packages-cf.termux.dev/apt/termux-x11'
Summary:                        
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

@TomJo2000
Copy link
Member Author

We'll probably need to change the apt sources handling in:

I'll prep a PR for termux-tools.

@TomJo2000
Copy link
Member Author

That's the repos moved over to deb822.

@TomJo2000
Copy link
Member Author

Also updated dpkg as part of this PR now.

@TomJo2000
Copy link
Member Author

dpkg and libapt-pkg-perl are now being built from tarballs provided from Debian's upstream GitLab instance.
This should help avoid build failures due to versions having been removed from http://ftp.debian.org/debian/pool/main/

@TomJo2000 TomJo2000 added the help wanted Help is wanted in order to solve the issue label May 4, 2025
@TomJo2000
Copy link
Member Author

Thanks for the patch to get Apt 3.1.2 building @Biswa96

@TomJo2000 TomJo2000 force-pushed the apt-3.0.0 branch 2 times, most recently from bde4140 to 8b289ec Compare June 16, 2025 16:06
Copy link
Member Author

Choose a reason for hiding this comment

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

Biswa mentioned wanting to upstream this, so this might not be needed in future releases of apt.

Copy link
Member

Choose a reason for hiding this comment

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

I have sent the patch to this merge request in upstream https://salsa.debian.org/apt-team/apt/-/merge_requests/497

Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

I'll replace it with the patch from the official commit then.

# apt-key requires utilities from coreutils, findutils, gpgv, grep, sed.
TERMUX_PKG_DEPENDS="coreutils, dpkg, findutils, gpgv, grep, libandroid-glob, libbz2, libc++, libiconv, libgcrypt, libgnutls, liblz4, liblzma, sed, termux-keyring, termux-licenses, xxhash, zlib, zstd"
TERMUX_PKG_BUILD_DEPENDS="docbook-xsl,libdb"
TERMUX_PKG_DEPENDS="coreutils, dpkg, findutils, grep, libandroid-glob, libbz2, libc++, libiconv, liblz4, liblzma, libseccomp, openssl, sed, sequoia-sqv | gpgv, termux-keyring, termux-licenses, xxhash, zlib, zstd"
Copy link
Member Author

@TomJo2000 TomJo2000 Jun 16, 2025

Choose a reason for hiding this comment

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

gpgv/gnupg remain supported, but sqv should be preferred.
I'm not sure if TERMUX_PKG_DEPENDS=...sequoia-sqv | gpgv adequately expresses this relation.

@agnostic-apollo
Copy link
Member

E.g what needs to be rolled back, and how are we getting the DEBs for that?

I think we can backup debs of older version of the packages and provide curl commands to download debs and install and restore backed up repos.

@TomJo2000
Copy link
Member Author

That's essentially what I have in my not-yet-commited apt/emergency-rollback.sh script.

@TomJo2000
Copy link
Member Author

TomJo2000 commented Jun 25, 2025

I've now rebased this PR to apt 3.1.3 and included an initial draft version of the proposed emergency-restore.sh script for rolling back the Apt 3 update on a user system.

It's not yet functional or included in the package, but it's in a good enough state for an initial round of feedback.

Edit:
And I forgot to run git rebase -i with the --autosquash flag so it's in it's own commit for now...

@TomJo2000 TomJo2000 force-pushed the apt-3.0.0 branch 2 times, most recently from 56a25c1 to 9adb36d Compare June 29, 2025 01:59
@TomJo2000 TomJo2000 mentioned this pull request Jun 29, 2025
8 tasks
TomJo2000 and others added 2 commits July 2, 2025 09:38
Co-authored-by: Jia Yuan Lo <jylo06g@gmail.com>
Co-authored-by: Robert Kirkman <rkirkman@termux.dev>
Co-authored-by: Twaik Yont <9674930+twaik@users.noreply.github.com>
Co-authored-by: Chongyun Lee <45286352+licy183@users.noreply.github.com>
Co-authored-by: Biswapriyo Nath <nathbappai@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Help is wanted in order to solve the issue tracker
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Auto update failing for synaptic
8 participants