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

ci: implement auto-update groups #24344

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

ci: implement auto-update groups #24344

wants to merge 1 commit into from

Conversation

twaik
Copy link
Member

@twaik twaik commented Apr 15, 2025

This change make it possible to:

  1. Perform package updates in separate PR (and perform building for all archs, unlike auto-update workflow where package is build only for one arch).
  2. Update all packages in update-group in a single step (and ensure all versions are aligned if needed).
  3. Perform auto-updating big packages in separate run, no matter what uptime in auto-update workflow is.

Also this PR implements 2 new package variables:

  1. TERMUX_PKG_ALIGN_VERSION_WITH for version guards. If versions of package being built and the package the variable refers not match build will fails with error like ERROR: Version mismatch between mpv and mpv-x..
  2. TERMUX_PKG_AUTO_UPDATE_GROUP: all packages in same update group will be updated together, in separate PR created by @termuxbot2 . Auto-merging PR in the case of successful build is not a part of this PR.

All version guards are removed in prior to TERMUX_PKG_ALIGN_VERSION_WITH.

Also this PR implements 5 auto-update groups: x11/firefox, x11/thunderbird (because these 2 are big packages), x11/mpv, x11/kframeworks6 (because their versions should be aligned) and x11/webkit (both because these packages building takes 2 hours each and their versions must be aligned).

[no ci]

@twaik twaik force-pushed the ci-auto-update-groups branch 4 times, most recently from cd1991a to 0d47560 Compare April 18, 2025 03:36
@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

Now it seems to be fine.

@twaik twaik marked this pull request as ready for review April 18, 2025 03:44
@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

All valuable changes are under scripts directory, all other files have minor changes.

Copy link
Member

@TomJo2000 TomJo2000 left a comment

Choose a reason for hiding this comment

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

I'd also like to split the package build changes into separate commits, 1 per group.

@@ -85,13 +85,6 @@ termux_step_host_build() {
}

termux_step_pre_configure() {
# Version guard to keep flang in sync
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't this have a mutual TERMUX_PKG_ALIGN_VERSION_WITH=flang to coincide with Flang's TERMUX_PKG_ALIGN_VERSION_WITH=libllvm?
I wouldn't expect any issues from such a "loop" in alignment.

And if that does cause an issue, it should be handled by the alignment solver.

It should be visible from every package that has an alignment with another package that that alignment exists.
Just as every package in an update group should visibly be part of said update group.

Copy link
Member Author

Choose a reason for hiding this comment

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

TERMUX_PKG_ALIGN_VERSION_WITH handling code check package referenced in this variable and all packages referencing current package in their TERMUX_PKG_ALIGN_VERSION_WITH if any. So it is kinda being checked both ways.

Update group does not mean all packages in update group must have same versions. It only means they should be updated in single push/pull_request to avoid dependency update hell.

Copy link
Member

Choose a reason for hiding this comment

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

I would still prefer to have a visual/text indicator of alignment or group membership in every package with such a relation.

Makes it significantly easier to search for such relations.
So in this case adding a,

TERMUX_PKG_ALIGN_VERSION_WITH=flang

makes it obvious from both package's build script that they require alignment with the other.

We should probably also turn TERMUX_PKG_ALIGN_VERSION_WITH into a comma separated list like TERMUX_PKG_LICENSE for example, since more than 2 packages may need to be version aligned with each other.

Copy link
Member Author

Choose a reason for hiding this comment

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

Ofc you can do that to make it obvious, but it is not required. Anyway when you will try to update one of them without updating another one you will get version mismatch error.

Copy link
Member

Choose a reason for hiding this comment

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

Please cross-reference it for all packages that we're adding this to at the inception of the feature so we don't have to track these down later.
I'm even considering adding a linter rule to enforce full cross-referencing of alignments so this doesn't become a mess to figure out.

Note

Also in case you didn't catch it earlier,
Turning TERMUX_PKG_ALIGN_VERSION_WITH into a comma separated list
like TERMUX_PKG_LICENSE would be helpful since more than 2 packages may need to have their versions aligned.

Copy link
Member Author

Choose a reason for hiding this comment

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

Probably it will be better to make checking code to find all packages referencing same package in TERMUX_PKG_ALIGN_VERSION_WITH to make sure version guard works for all of them.

Otherwise we might end up with referencing 60+ packages in every 60 buildscripts of them. And it will end up with a tree wide updating buildscripts if we add more kframeworks6 libraries.

like TERMUX_PKG_LICENSE would be helpful since more than 2 packages may need to have their versions aligned.

I solved this by mentioning same package in all of packages requiring version aligning.

Copy link
Member

Choose a reason for hiding this comment

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

Probably it will be better to make checking code to find all packages referencing same package in TERMUX_PKG_ALIGN_VERSION_WITH to make sure version guard works for all of them.

Otherwise we might end up with referencing 60+ packages in every 60 buildscripts of them. And it will end up with a tree wide updating buildscripts if we add more kframeworks6 libraries.

That's where the update group comes in though, no?
It doesn't imply version alignment, but it does imply a grouping.

like TERMUX_PKG_LICENSE would be helpful since more than 2 packages may need to have their versions aligned.

I solved this by mentioning same package in all of packages requiring version aligning.

Thanks. I feel like this is gonna be a mess otherwise so I wanna get ahead of it.

Copy link
Member Author

Choose a reason for hiding this comment

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

That's where the update group comes in though, no? It doesn't imply version alignment, but it does imply a grouping.

Yep. TERMUX_PKG_ALIGN_VERSION_WITH should come in separate PR, but it changes same files so I not decided if I should move it away from this PR. And also it helps us make sure nobody will break packages with randoms PRs updating specific packages despite of existing (or not yet existing) version guards.

@@ -6,7 +6,8 @@ TERMUX_PKG_MAINTAINER="Joshua Kahn @TomJo2000"
TERMUX_PKG_VERSION="0.40.0"
TERMUX_PKG_SRCURL=https://github.com/mpv-player/mpv/archive/v${TERMUX_PKG_VERSION}.tar.gz
TERMUX_PKG_SHA256=10a0f4654f62140a6dd4d380dcf0bbdbdcf6e697556863dc499c296182f081a3
TERMUX_PKG_AUTO_UPDATE=false
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_AUTO_UPDATE_GROUP=x11/mpv
Copy link
Member

Choose a reason for hiding this comment

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

Right, so how did you choose the names for the update groups?
Because It's obviously not based on the file paths.
And I'd prefer to not bring channel information into the group names.

If the update group names are "arbitrary" I'd prefer them to follow the project name or a suitable proxy like kf6

Suggested change
TERMUX_PKG_AUTO_UPDATE_GROUP=x11/mpv
TERMUX_PKG_AUTO_UPDATE_GROUP="mpv"

Copy link
Member Author

Choose a reason for hiding this comment

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

Name of update group is copied directly to PR description and, as a consequence, to git commit in the case if you squash two commits after PR reviewing.

Copy link
Member

Choose a reason for hiding this comment

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

I think it'd probably be better to not put semantic meaning into the name of the update group.

What would the current commit messages be anyway?
I'd expect it to just bundle up a set of bump($CHANNEL/$PKG_NAME): $NEW_VERSION commits into a PR under the title of:

if  (( "${#versions[*]}" == 1 )); then
	title="bump(${group}): ${versions[@]}"
else
	title="bump(${group}): group update"
fi

In which case bump(x11/kframeworks6): group update vs. bump(kf6): group update is a purely cosmetic difference in the PR title.

Copy link
Member

Choose a reason for hiding this comment

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

There may also be a case where a package may be part of multiple autoupdate groups.
Although that is probably best left for when it actually happens.

Copy link
Member Author

Choose a reason for hiding this comment

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

In which case bump(x11/kframeworks6): group update vs. bump(kf6): group update is a purely cosmetic difference in the PR title.

All packages under kf6 group have version aligning enabled so commit message will be, i.e., bump(x11/kf6): 6.14.0 which complies with commit messages we had before.
Currently all other update groups or have single package (big package) or have version aligning.

There may also be a case where a package may be part of multiple autoupdate groups.

It should not happen. It is not designed this way.

Copy link
Member

Choose a reason for hiding this comment

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

In which case bump(x11/kframeworks6): group update vs. bump(kf6): group update is a purely cosmetic difference in the PR title.

All packages under kf6 group have version aligning enabled so commit message will be, i.e., bump(x11/kf6): 6.14.0 which complies with commit messages we had before. Currently all other update groups or have single package (big package) or have version aligning.

I don't think the versions always matching or all packages in a group always being updated at the same time is a particularly good assumption to make.
Say I'd like to make an update group for tree-sitter later for example,
those versions don't match, and they're often but not always updated at the same time.
Although I suppose I shouldn't be conflating this with a "rebuilds group".

There may also be a case where a package may be part of multiple autoupdate groups.

It should not happen. It is not designed this way.

Not right now.
But yeah no point implementing a feature we don't have a need for yet.

Copy link
Member Author

@twaik twaik Apr 18, 2025

Choose a reason for hiding this comment

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

In my understanding auto-update group definition is similar to rebuild group: group of packages which are required to be updated in the same PR/push because of version or ABI mismatch. I planned to implement something like creating autoupdate group for, i.e. boost with automatic revbumping of all revdeps (because of possible ABI mismatch of newer boost version).

But yeah no point implementing a feature we don't have a need for yet.

As I said before my understanding of update group is similar to rebuild group so I do not see the point.

Copy link
Member Author

Choose a reason for hiding this comment

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

Suggested change
TERMUX_PKG_AUTO_UPDATE_GROUP=x11/mpv
TERMUX_PKG_AUTO_UPDATE_GROUP="mpv"

Since these two packages exist in different repos we can omit the x11/ preffix. But PR title will be less fine after this 😞 .

Copy link
Member

Choose a reason for hiding this comment

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

I'm gonna reiterate that I don't think repo channel information should be part of the update group names.

Copy link
Member Author

Choose a reason for hiding this comment

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

Probably it should be in the case if all packages in update group exist in the same repo. Just for consistency with other bump commits.

@twaik twaik force-pushed the ci-auto-update-groups branch from 0d47560 to b449aac Compare April 18, 2025 05:25
@robertkirkman
Copy link
Contributor

ffplay should have TERMUX_PKG_ALIGN_VERSION_WITH=ffmpeg in it in this, right?

# Please align the version with `ffmpeg` package.

Or maybe it is here somewhere in the large list of changes and I just can't find it on my screen, I am sorry if that is the case.

@twaik twaik force-pushed the ci-auto-update-groups branch from b449aac to 3ce3d95 Compare April 18, 2025 07:22
@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

ffplay should have TERMUX_PKG_ALIGN_VERSION_WITH=ffmpeg in it in this, right?

Yep. Added v4l-utils to the list as well.

@robertkirkman
Copy link
Contributor

Oh ok, and if that one is added, then maybe brotli and python-brotli should be added as well. I'm not sure if I can remember any others right now

@TomJo2000
Copy link
Member

Oh ok, and if that one is added, then maybe brotli and python-brotli should be added as well. I'm not sure if I can remember any others right now

I remember you brought up making python-brotli a subpackage of brotli when it got initially migrated from the TUR.
Maybe that's a better approach in this specific case.

@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

I remember you brought up making python-brotli a subpackage of brotli when it got initially migrated from the TUR.
Maybe that's a better approach in this specific case.

Probably I can open PR for this.

@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

Ok, I filed PR for brotli: #24397.

This change make it possible to:
1. Perform package updates in separate PR (and perform building for all archs, unlike auto-update workflow where package is build only for one arch).
2. Update all packages in update-group in a single step (and ensure all versions are aligned if needed).
3. Perform auto-updating big packages in separate run, no matter what uptime in auto-update workflow is.
[no ci]
@twaik twaik force-pushed the ci-auto-update-groups branch from 3ce3d95 to 9c349a6 Compare April 18, 2025 09:22
@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

I wrote a small script to check if there are more packages that might need version aligning, but results are not as useful as I thought.

#!/usr/bin/env bash
shopt -s extglob

readarray -t BUILD_SH_A < <(find packages x11-packages root-packages -mindepth 2 -maxdepth 2 -name build.sh)
declare -A pkgs
declare -A rev
i=0

for build_sh in "${BUILD_SH_A[@]}"; do
    (( ++i % 100 == 0 )) && echo Processed $i packages
    name="$(basename "$(dirname "${build_sh}")")"
    version="$(. "${build_sh}" &>/dev/null; echo "${TERMUX_PKG_VERSION##*:}")"
    pkgs["${name}"]="${version}"
done

for pkg in "${!pkgs[@]}"; do
    ver=${pkgs[$pkg]}
    rev["$ver"]+="$pkg "
done

for ver in $(sort < <(printf '%s\n' "${!rev[@]}")); do
    IFS=' ' declare -a 'list=(${rev[$ver]})'
    if (( ${#list[@]} > 1 )); then
        printf 'Version %s: %s\n' "$ver" "${list[*]}"
    fi
done
result
Version 0.0.3: carbonyl vulkan-loader carbonyl-host-tools
Version 0.1: libandroid-execinfo libandroid-posix-semaphore libandroid-sysv-semaphore vulkan-icd libandroid-wordexp
Version 0.10.0: cookcli asm-lsp sccache swtpm libtpms shellcheck reptyr pastel
Version 0.10.1: libmesode ncmpcpp gumbo-parser vivid
Version 0.10.3: waypipe librinutils xrdp
Version 0.10.4: ayatana-ido cava libpluto
Version 0.1.1: lxqt-wayland-session matchbox-keyboard
Version 0.11.0: rnote bubblewrap neovim
Version 0.11.1: libssh rage libjxl
Version 0.1.12: lxtask id3v2
Version 0.1.2: okc-agents e2tools xmppc termux-gui-bash ninvaders
Version 0.12: opusfile startup-notification minisign
Version 0.12.0: range-v3 mautrix-whatsapp termux-create-package renameutils
Version 0.1.3: libxcvt libsoxr termux-gui-c pong2 libvo-amrwbenc lipl libsfdo rdrview
Version 0.13: xclip termux-services 6tunnel
Version 0.13.0: restic-server libusbredir
Version 0.14: c-script libdaemon vifm
Version 0.14.0: zls hidapi zig quassel libstrophe
Version 0.15: liburcu dvtm
Version 0.15.0: qtkeychain tectonic mdbook-mermaid zk profanity litespeedtest
Version 0.15.1: dnote alacritty
Version 0.15.2: libspice-server libtorrent rtorrent check
Version 0.1.6: libopencore-amr anewer termux-gui-package lxmenu-data
Version 0.16: trurl libnova gatling 0verkill
Version 0.16.0: gum hexyl
Version 0.16.1: toxic crowbook
Version 0.17: libpciaccess progress bsd-finger uftrace
Version 0.18: hicolor-icon-theme json-c
Version 0.18.0: patchelf restic elinks
Version 0.18.1: lychee gopls
Version 0.18.2: codon git-delta wlroots
Version 0.1.9: mdbook-pikchr ripsecrets
Version 0.2: posixvala opus-tools libcrypt libandroid-complex-math cpulimit
Version 0.2.0: libdisplay-info helm-ls gluelang
Version 0.20.0: distant restish zola
Version 0.20.1: aerc blogc
Version 0.2.1: mdbook-graphviz morse2ascii fcp libopusenc
Version 0.21.0: thrift elvish python-torchvision eza
Version 0.2.2: ebook-tools libdecor libsamplerate kibi mdbook-svgbob
Version 0.2.4: weggli pdf2svg cliaoke corgi
Version 0.24: iwyu gettext stfl
Version 0.24.1: lux gnunet
Version 0.2.6: pingme marisa
Version 0.26: libisl cadaver mlocate
Version 0.27.0: pocketbase gitui
Version 0.2.8: bed doge
Version 0.29.0: aichat miniserve
Version 0.3: binutils-is-llvm libandroid-spawn opencl-vendor-driver gnuski 2bwm toilet libfakekey ldd
Version 0.3.0: libaml libdbusmenu-lxqt libgedit-gfls mdbook-svgbob2 tree-sitter-lua termux-core
Version 0.3.1: minesweeper mdbook-presentation-preprocessor gomuks
Version 0.3.2: keybinder libgxps sssnake
Version 0.33: python-xlib libowfat
Version 0.3.4: libtranscript utfdecode subtitleripper
Version 0.35.0: fclones zsh-completions
Version 0.37: antiword dmagnetic
Version 0.38: libregexp-assemble-perl nwipe
Version 0.4: ttyc libandroid-utimes up
Version 0.4.0: libtwolame libwren lhasa wren pup recordmydesktop
Version 0.40.0: mpv dconf mpv-x
Version 0.4.1: senpai xf86-video-dummy gpg-crypter wush websocketd xcb-util xcb-util-keysyms tree-sitter-markdown libt3window xcb-util-image
Version 0.4.2: imgflo nerdfix openttd-msx xcb-util-wm
Version 0.4.3: peaclock xfce4-docklike-plugin liblqr
Version 0.43.0: wtfutil dufs
Version 0.4.41: libzen liborc
Version 0.4.6: libxcomposite locustdb
Version 0.5: mp3wrap libandroid-shmem seccure odt2txt termux-apt-repo vtutils mdns-scan mp3cat
Version 0.5.0: wuzz libt3highlight kubecolor wlr-randr tree-sitter-vim ta-lib python-pynvim cmusfm rnr cgif xfce4-pulseaudio-plugin
Version 0.5.1: jcal aha libfixposix libmpeg2 tree-sitter-query mdbook-tera steghide
Version 0.51.0: jump intltool
Version 0.5.12: dash wasm-component-ld
Version 0.5.2: lxde-icon-theme dns2tcp
Version 0.5.3: silicon thunar-archive-plugin bore
Version 0.59.1: vitetris termux-api
Version 0.6: libandroid-glob abduco ired getconf play-audio abootimg cuse
Version 0.6.0: eww procyon-decompiler squashfuse amber hut libsecp256k1 bk lyrebird
Version 0.6.1: cavez-of-phear rush glulxe liblrdf
Version 0.6.2: sxhkd libzix zsync mate-applet-brisk-menu abook
Version 0.6.3: florence docopt
Version 0.6.4: xfce4-wavelan-plugin game-music-emu lxappearance
Version 0.6.5: mousepad atomvm ollama
Version 0.7.0: git-crypt fdroidcl loqui libfcl libpngwriter
Version 0.7.1: wol gron librav1e magic-wormhole-rs google-glog myman zeronet
Version 0.7.2: gimp-lqr-plugin dvdauthor
Version 0.7.3: gforth xfce4-calculator-plugin jftui
Version 0.7.5: cboard python-tldp
Version 0.7.6: libgts xwallpaper dmtx-utils
Version 0.7.8: optipng libdmtx
Version 0.8: wordgrinder avahi tabbed
Version 0.8.0: cgdb qrsspig python-skia-pathops termux-am liba52 diskus iodine libyaml-cpp mdbook-plantuml
Version 0.8.1: sheldon duf par2 mangohud nali
Version 0.8.2: labwc hors knockd simde jigdo
Version 0.8.3: appstream-glib xfce4-datetime-plugin xxhash
Version 0.8.5: spek libcap-ng
Version 0.9: osmctools dtach vis
Version 0.9.0: thin-provisioning-tools libcpufeatures below soju slides
Version 0.9.1: rgbds wayvnc libseat gtk-layer-shell libportal pdfcpu
Version 0.9.15: gauche libvncserver
Version 0.9.2: st libmp3splt lua-lgi tea
Version 0.9.3: taplo mcfly mdbook-katex rip2 freecolor
Version 0.9.33: liblmdb librasqal
Version 0.9.4: libayatana-indicator libneatvnc
Version 0.95: mtr catdoc
Version 0.9.6: wavemon fritzing
Version 0.9.7: zoxide libosl hz xfce4-notifyd
Version 1.0: fzy glibc-repo srt2vobsub bgrep id3ted stdoutisatty
Version 1.0.0: sd termux-gui-pm tergent sun stag liblog4cxx libt3config
Version 1.0.1: libxpresent rw mdbtools pet aterm libmicrohttpd glm no-more-secrets skate arqiver tur-repo virglrenderer-android lxqt-composer-settings virustotal-cli
Version 1.0.10: wireproxy xorg-iceauth xorg-xhost gptfdisk
Version 1.0.12: libxau xorg-twm
Version 1.0.15: xfce4-panel-profiles libde265 mdp
Version 1.0.16: fribidi libxaw
Version 1.0.2: zrok libnfnetlink console-bridge woff2 fasd ciso
Version 1.0.28: libusb jira-go
Version 1.0.3: libzopfli lexter task-spooler 2048-c openttd-sfx
Version 1.0.4: sdl2-gfx rq libtatsu music-file-organizer appstream xorg-fonts-100dpi xorg-fonts-75dpi
Version 1.0.5: libimtui libmnl libnetfilter-queue microsocks xorg-fonts-alias
Version 1.0.6: fdkaac hexer
Version 1.07: wmctrl uucp
Version 1.0.8: await libbz2 xorg-xlsfonts ttyrec
Version 1.0.9: mdbook-cat-prep xcb-imdkit
Version 1.1.0: brotli sudo simulavr libdvbcsa libmd virglrenderer fm lua-lpeg librttopo blink python-msgpack tudo libsysstat awesomeshot libtllist capnproto rapidjson python-brotli xorg-fonts-encodings
Version 1.10.0: amfora arp-scan octomap deadbeef gleam liblz4
Version 1.10.15: panda3d ant
Version 1.10.5: libpcap libsixel
Version 1.10.8: unar graphene
Version 1.1.1: libvidstab cicada polipo menu-cache libtheora teseq xorg-luit xorg-xclock libwslay
Version 1.11: rig ccrypt cabextract
Version 1.1.10: xcompmgr libime
Version 11.1.0: python-pillow harfbuzz
Version 1.11.1: libssh2 dte xfce4-screenshooter dnslookup
Version 1.11.2: 1oom xfce4-notes-plugin tinyproxy
Version 1.11.3: libzip scdoc
Version 1.1.2: libice liboggz libudfread xorg-xcalc paruz libmariadbcpp bdftopcf urdfdom-headers
Version 1.12.1: ninja scrot
Version 1.12.2: dunst libvigra libmaxminddb
Version 1.1.3: libxkbfile tilde xorg-xsetroot xbitmaps
Version 1.13.0: walk maxcso
Version 1.13.1: librime taglib
Version 1.13.2: rbw doxygen
Version 1.1.4: libxdrfile xorg-xauth pystring kvantum clpeak
Version 1.14: gzip perl-rename
Version 1.14.0: websocat gspell
Version 1.14.1: libpoco brogue
Version 1.14.5: libcairomm-1.0 subversion chafa
Version 1.1.5: lsd libxinerama libxdmcp xfce4-terminal qrupdate-ng
Version 1.15: lzlib libpugixml
Version 1.15.0: tigervnc-viewer libvpx tigervnc
Version 1.15.2: python-scipy libspdlog googletest
Version 1.1.6: libxxf86dga libxdamage xfce4-battery-plugin xorg-xwininfo libxxf86vm
Version 1.16: dx potrace darkhttpd
Version 1.1.7: cmocka mtdev libresolv-wrapper
Version 1.17: ladspa-sdk automake
Version 1.17.0: plasma-wayland-protocols libxcb shell2http xcb-proto
Version 1.1.8: libfontenc trzsz-go
Version 1.18: libiconv cppi
Version 1.18.0: bindfs osmium-tool libcairomm-1.16
Version 1.1.9: libunqlite libopencc
Version 1.19: eltclsh libpopt
Version 1.19.0: gping hyperfine
Version 1.2: libforestdb fortune rubiks-cube xcape samurai ctypes-sh libucontext
Version 1.2.0: tasksh lxqt-archiver pass-otp gw dust libhiredis php-psr cfm
Version 12.0.0: llvm-mingw-w64-tools flacon
Version 1.2.1: libspeex xsel speexdsp exhale libxmu xdg-utils swaybg age termimage
Version 12.1.0: flameshot qpdf
Version 1.2.2: wdiff libxlsxwriter ncspot-mpris libsnappy ncspot libduckdb libxres xorg-xrdb libsndfile libt3widget desed libao
Version 1.22: ncdu hollywood
Version 1.22.0: foot libunbound
Version 1.2.3: xorg-mkfontscale libxcursor clipp germanium libxdg-basedir
Version 1.23: leveldb libdeflate
Version 1.2.4: liblog4c libxss
Version 1.24: clifm gdbm sendxmpp
Version 1.24.1: v4l-utils libv4l
Version 1.24.2: gpgme golang delve
Version 1.25: lzip ncdc 8086tiny
Version 1.2.6: libsm xorg-xev runc xournalpp libebur128
Version 1.26.0: gst-libav gst-plugins-good matterbridge gst-plugins-ugly gst-python gstreamer gst-plugins-base gst-plugins-bad
Version 1.28.0: mate-common mate-session-manager libmatekbd mate-settings-daemon pycairo libmateweather mate-menus caja
Version 1.28.1: atril marco mate-terminal
Version 1.2.9: libwv libnftnl
Version 1.3: xcb-util-xrm resolv-conf netsed libunistring pacman4console libwebrtc-audio-processing pcaudiolib libnet
Version 1.3.0: libgf2x yasm libtommath viddy vera passphrase2pgp curseofwar
Version 1.3.1: libxt zlib libmpc feathernotes pinentry-gtk pinentry cbonsai libminizip libimobiledevice-glue
Version 1.3.10: serf ncpamixer
Version 1.3.2: libfm jp2a squashfs-tools-ng libcddb python-contourpy xfce4-mailwatch-plugin libfm-extra
Version 1.32.3: kubectl kubelogin
Version 1.3.3: minidlna scrypt libdvbpsi libxshmfence
Version 1.3.4: csview xorg-setxkbmap xorg-xdpyinfo libbluray
Version 1.3.6: choose libxext rcm libtirpc
Version 1.3.7: fluxbox libvorbis libcln xmlsec xvidcore
Version 137.0.2: firefox thunderbird
Version 1.4: libsoldout quazip inkscape
Version 1.4.0: cherrytree borgbackup nexttrace robin-map dbus-python tty-solitaire mosh pcmanfm
Version 1.4.1: dotconf libei cuetools xorg-font-util telegram-cli
Version 1.4.2: xf86-input-void xfce4-netload-plugin clamav pixiewps vorbis-tools bvi avra
Version 1.42: libidn tinyscheme
Version 1.4.309.0: spirv-headers spirv-tools
Version 1.4.312: vulkan-loader-generic vulkan-headers vulkan-tools vulkan-utility-libraries vulkan-extension-layer
Version 1.4.4: gpsbabel diff-so-fancy
Version 1.4.5: grex rhash duc libebml irssi
Version 1.4.7: xorg-xkbcomp libmaa libcolord
Version 1.5: hr mplayer snmptt
Version 1.5.0: libwebp agg has argp termux-auth libflac gotty git-sizer termux-am-socket
Version 1.50.0: hcloud libuv
Version 1.5.1: libosmpbf libdav1d viu pastebinit rsnapshot isync
Version 1.5.2: libprotobuf-c nyancat libopus
Version 1.5.3: xorg-xrandr fennel
Version 1.5.4: libsrt libxrandr
Version 1.5.6: libisoburn libburn cavif-rs
Version 1.5.7: zstd xorriso
Version 1.5.8: xfce4-taskmanager libpipeline
Version 1.6: hexedit libnpth paperkey lr
Version 1.6.0: csol tere xtrans ttyper
Version 1.6.1: libmypaint lastpass-cli xmlstarlet libccid timg featherpad aptly nitrogen
Version 1.6.2: dopewars mp3gain unshield ossp-uuid
Version 1.6.3: libxls clblast apr-util keyutils
Version 1.6.5: fact++ hw-probe
Version 1.6.7: xfce4-clipman-plugin libksba
Version 1.7.0: kf6-kirigami-addons rdfind macchanger mkp224o libliquid-dsp libglvnd php-zephir-parser
Version 17.0: postgresql openjdk-17 pulseaudio
Version 1.7.1: ttyplot libprotozero timewarrior movit libmatroska jq
Version 1.71.0: python-grpcio libgrpc
Version 1.7.2: libadwaita dtc cronie hunspell tealdeer
Version 1.7.3: xfce4-timer-plugin libconfig
Version 1.7.4: rc libgeotiff pass shiori
Version 1.7.8: daemonize rofi
Version 1.8: datamash nmh convertlit codecrypt
Version 1.8.0: libnfc libdevil sse2neon libtd
Version 1.8.1: python-lameenc libxkbcommon b3sum
Version 1.8.2: libxi curlie
Version 1.8.3: browsh libhandy
Version 1.8.4: xfce4-places-plugin clutter-gtk ldns
Version 1.8.6: fsmon erofs-utils
Version 1.8.8: alembic guile18
Version 1.9: recutils qt5ct time innoextract jo
Version 1.9.0: libnghttp3 libgit2
Version 1.9.1: znc lsix
Version 1.9.4: ranger goaccess
Version 1.9.6: tilix jsoncpp
Version 2.0: geany lazyread geany-plugins cmatrix frobtads libvbisam tcllib corkscrew
Version 2.0.0: libpcsclite gbt mindforger lxqt alass tilda libgfshare megacmd markdown-flashcards libfreexl
Version 2.0.1: pforth tut
Version 20.1.3: libllvm mympd flang
Version 2.0.2: lowdown qb64 oshu stylua mypaint-brushes
Version 2020.12.07: aspell-en chibicc
Version 2022.11.07: rappel snake
Version 2023.01.29: libtvision go-findimagedupes
Version 2023.01.30: tsmuxer tsmuxergui
Version 2023.02.02: ratt gomp photon-rss
Version 2024.10.24: opencl-clhpp opencl-headers
Version 20250402: llvm-mingw-w64 llvm-mingw-w64-libcompiler-rt llvm-mingw-w64-ucrt
Version 2.0.3: ices libfdk-aac
Version 2.1: surf komorebi xfce4 libccd libobjc2 termux-licenses
Version 2.1.0: glow libspatialindex lcal yajl lxqt-openssh-askpass lxqt-qtplugin
Version 2.10: qgit vamp-plugin-sdk liblzo minicom
Version 2.10.0: utf8proc nlopt net-tools
Version 2.10.1: monolith gtypist
Version 2.10.3: heyu youtubedr
Version 2.1.1: apache-orc beanshell libxcfun lximage-qt lxqt-session lxqt-config qcustomplot osm2pgsql tweego dnote-server
Version 2.11.0: snowflake feroxbuster
Version 2.1.2: runit libunibilium
Version 2.12.1: hello libsigc++-2.0
Version 2.1.3: unicorn libcunit
Version 2.13: yuma123 vnstat autoconf213
Version 2.14.1: libjansson ssdeep python-qscintilla libxml2 qscintilla
Version 2.14.14: finch pidgin
Version 2.15: cpio i3status samefile
Version 2.15.0: luvi timidity++
Version 2.1.6: traceroute sslscan
Version 2.16.2: hexchat fontconfig
Version 2.2: fff libsophia sfeed fdm
Version 2.2.0: acr qterminal libfann glew lxqt-globalkeys silversearcher-ag pdfgrep lxqt-panel lxqt-menu-data sdl2-net pavucontrol-qt libceres-solver qtermwidget lxqt-notificationd lxqt-build-tools libstemmer pcmanfm-qt authbind liblxqt lxqt-about libfm-qt lxqt-themes wget2 lxqt-runner
Version 2.21: ansifilter shellinabox
Version 2.2.2: nim libgsasl gflags
Version 2.22: dirb libmpdclient
Version 2.2.3: uget html2text liblightning
Version 2.23: gengetopt which
Version 2.24.0: navi onefetch sdl2-ttf
Version 2.2.6: rdiff-backup libpaper
Version 2.2.7: electric-fence miniflux
Version 2.3: udftools wego tty-clock
Version 2.3.0: libzxing-cpp polyphone watchexec mtd-utils surfraw termux-exec uthash libcue
Version 2.3.1: base16384 predict libacl boxes
Version 2.3.2: miniupnpc zipios
Version 2.3.3: ocl-icd libgd libsoundtouch vde2 slang frei0r-plugins libsignal-protocol-c
Version 2.3.7: libidn2 adms
Version 2.3.8: motif libxft
Version 2.4: bcal shared-mime-info root-repo dex2jar stone
Version 2.4.0: command-not-found fdupes bombadillo tmate termshark gpac torsocks asciinema lexbor whitebox-tools
Version 24.05.0: poppler-qt poppler
Version 2.4.1: libjansi stow rustscan
Version 2.4.2: libtalloc opencolorio
Version 2.4.3: lyx ptex mdbook-open-on-gh
Version 2.44: xkeyboard-config binutils-libs
Version 2.4.5: gnupg fluidsynth
Version 2.4.6: jwm libshout
Version 2.48.0: webkit2gtk-4.1 webkitgtk-6.0 at-spi2-atk atk
Version 2.5: wcalc pomodoro-curses geographiclib
Version 25.03: libmediainfo mediainfo
Version 25.04.0: kdenlive filelight kdegraphics-mobipocket
Version 2.5.1: pkgtop gocryptfs
Version 2.5.12: tig teckit
Version 2.55: frotz k2pdfopt
Version 2.56.1: at-spi2-core libpangomm-2.48
Version 2.6: rtmpdump ol plotutils inetutils
Version 2.6.0: spglib libplist openh264 python-torchaudio python-torch
Version 2.6.2: ytfzf libtinyxml mp3splt sfml
Version 2.6.4: flex zile
Version 2.7.0: libduktape fvwm catimg
Version 2.7.1: kbd libexpat boinctui
Version 2.7.5: z-push libcryptsetup
Version 27c: libc++ vulkan-loader-android ndk-multilib libandroid-stub ndk-sysroot
Version 2.8: patch ncdu2 pigz gsl bochs
Version 2.8.1: seanime apt dasel sdl2-mixer
Version 2.8.8: composer sdl2-image libhyphen
Version 2.9.1: artalk caddy
Version 2.9.2: minizinc xfce4-whiskermenu-plugin
Version 2.9.9: xmake libfuse2
Version 3.0.0: hping3 python-apt libvmaf
Version 30.0: protobuf-static libprotobuf
Version 3.0.1: nsnake cups-pdf tree-sitter-vimdoc termux-elf-cleaner libassuan
Version 30.1: emacs emacs-x
Version 3.0.2: gimp svt-av1
Version 3.0.21: vlc vlc-qt
Version 3.0.9: guile testssl.sh
Version 3.1: pounce secure-delete hstr gperf
Version 3.1.0: chocolate-doom lxc xdelta3 libbs2b libjpeg-turbo
Version 3.10.1: matplotlib libnettle libnats-c
Version 3.10.3: gdal feh
Version 3.1.1: n2n libtree-ldd openbabel
Version 3.11: netsurf nsis
Version 3.11.0: shfmt libnl
Version 3.12: grep termux-keyring diffutils spotify-qt
Version 3.2: scrcpy gnucobol
Version 3.2.0: libphysfs quick-lint-js python-greenlet libsearpc cccc
Version 3.22.0: python-pycryptodomex logrotate valgrind
Version 3.2.4: glslviewer libknot openexr
Version 3.2.6: wxwidgets hfsutils
Version 3.3: bsd-games libconfuse tcplay-veracrypt hash-slinger apt-file redir
Version 3.3.0: mruby btfs2
Version 33.0.1: apksigner d8
Version 3.3.1: double-conversion libfcft
Version 3.4.1: htop taskwarrior openssl pika rsync ruby
Version 3.5.0: scc libvxl yadm
Version 3.5.2: postgis cairo-dock-core
Version 3.6: crunch rsgain parted
Version 3.6.0: freeglut opensubdiv libsigc++-3.0
Version 3.6.1: git-lfs openbox
Version 3.6.7: nethack dcmtk
Version 3.7.3: dart audacity sshfs
Version 3.8.1: ack-grep libretls
Version 3.9.9: screenfetch maven
Version 4.0: rp-pppoe kermit bmon
Version 4.0.0: pick railway-cli rubberband
Version 4.0.1: pgroonga fish bdsup2sub urdfdom
Version 4.0.3: libzita-convolver shc
Version 4.0.6: transmission utf8cpp emscripten mangal transmission-gtk
Version 4.1: libx265 kainjow-mustache re2c build-essential xvkbd gcal
Version 4.1.1: libqrencode libotr
Version 4.11.0: opencv pcal
Version 4.14.0: gap sleuthkit
Version 4.15.2: qt-creator sharutils
Version 4.18.0: iso-codes gtkmm4
Version 4.2.0: oorexx qtxdg-tools gotop libqtxdg wrk
Version 4.20.0: tumbler xfwm4 xfconf xfce4-dev-tools garcon xfce4-appfinder xfce4-goodies libtasn1 exo
Version 4.20.1: xfdesktop xfce4-settings libxfce4util libxfce4ui
Version 4.20.2: xfce4-session libxfce4windowing thunar
Version 4.2.1: libczmq libuber-h3 libmpfr xfce4-genmon-plugin
Version 4.2.5: libjasper angband
Version 4.3: greed poke
Version 4.3.0: python-bcrypt ipv6calc
Version 4.3.1: shellharden swig
Version 4.3.2: libvoikko zmap
Version 4.3.5: libwebsockets libzmq
Version 4.4: i2c-tools hashdeep
Version 4.4.0: toml11 httping
Version 4.4.1: make-guile make godot
Version 44.1: gnome-desktop4 gnome-desktop3
Version 4.4.2: audacious audacious-plugins
Version 4.5: opengl libtins google-drive-upload
Version 4.5.1: 2ping musescore sabnzbd
Version 4.6.1: weechat sqlcipher chrony ravencoin
Version 46.2: ghex adwaita-icon-theme-legacy
Version 48.0: gnome-font-viewer orca epiphany gsettings-desktop-schemas evince adwaita-icon-theme
Version 48.1: gnome-calculator mutter gedit
Version 4.9: ani-cli sed
Version 4.99.4: lsof tcpdump
Version 5.0: ncompress raylib glpk
Version 5.0.0: nudoku screen upx librtmidi
Version 5.0.5: capstone qbittorrent
Version 5.1: nnn docbook-xml
Version 5.15.16: qt5-qttools qt5-qtscript qt5-qtsvg qt5-qtlocation qt5-qtwebchannel qt5-qtserialport qt5-qtwebsockets qt5-qtmultimedia qt5-qtdeclarative qt5-qtbase qt5-qtx11extras qt5-qtxmlpatterns qt5-qtsensors
Version 5.1.9: fcitx5-configtool fcitx5-qt
Version 5.2.2: giflib phpmyadmin
Version 5.4: direvent libxklavier
Version 5.4.0: etsh chicken
Version 5.8.1: libwavpack liblzma
Version 5.9: zsh ugit
Version 5.9.1: libgedit-amtk polyml
Version 6.0.1: lenmus libxfixes cgal
Version 6.0.2: libnfs gnuplot libftxui
Version 6.1: pavucontrol llbuild libdispatch swift
Version 6.1.0: ctags libmsgpack
Version 6.1.1: libdvdnav antibody
Version 6.13.0: kf6-qqc2-desktop-style kf6-kconfig kf6-karchive kf6-kitemviews kf6-kauth kf6-kitemmodels kf6-kcrash kf6-sonnet kf6-kcompletion kf6-kglobalaccel kf6-kpackage kf6-kxmlgui kf6-kio kf6-kdbusaddons kf6-attica kf6-syndication kf6-kfilemetadata kf6-kwallet kf6-kconfigwidgets kf6-kwindowsystem kf6-solid miller kf6-knotifyconfig kf6-purpose kf6-kwidgetsaddons kf6-ktextwidgets kf6-knewstuff kf6-ki18n kf6-kservice kf6-breeze-icons kf6-kirigami kf6-kcodecs kf6-kcolorscheme kf6-kiconthemes kf6-kguiaddons extra-cmake-modules kf6-kjobwidgets kf6-kcoreaddons kf6-knotifications kf6-kbookmarks
Version 6.14: ethtool strace
Version 6.14.0: iproute2 mono
Version 6.15.0: qtutilities libdart
Version 6.2.0: gecode onigmo php-redis
Version 6.2.9: et gnuchess
Version 6.4.0: keybase macchina
Version 6.9.0: qt6-qttools qt6-shadertools qt6-qtwebsockets qt6-qtlanguageserver qt6-qtmultimedia qt6-qt5compat qt6-qtsvg qt6-qtdeclarative qt6-qtcharts qt6-qtscxml qt6-qtimageformats qt6-qttranslations qt6-qtnetworkauth qt6-qtbase qt6-qtwayland
Version 7.0.0: libcec unpaper pacman libmsgpack-cxx
Version 7.0.3: libchipmunk bc-gh
Version 7.1: openttd-gfx testdisk
Version 7.1.1: ffplay ffmpeg
Version 7.3.0: sundials ugrep
Version 8.2.6: qemu-system-x86-64-headless qemu-system-x86-64
Version 8.4: nano x11-repo
Version 8.6.14: tcl tk
Version 9.0: biboumi dotnet-host netstandard-targeting-pack-2.1
Version 9.0.4: dotnet9.0 findomain
Version 9.1.1300: vim vim-gtk
Version 9.4.0: octave-x octave

@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

BTW after merging this somebody should add some info about TERMUX_PKG_ALIGN_VERSION_WITH and TERMUX_PKG_AUTO_UPDATE_GROUP to https://github.com/termux/termux-packages/wiki/Creating-new-package#package-build-script-variables.

@finagolfin
Copy link
Member

Seems useful, 👍 thanks for working on this.

@finagolfin finagolfin removed their request for review April 18, 2025 10:49
@robertkirkman
Copy link
Contributor

robertkirkman commented Apr 18, 2025

I wrote a small script to check if there are more packages that might need version aligning, but results are not as useful as I thought.

probably such a script would be more helpful if it also takes into consideration the TERMUX_PKG_SRCURL, but one that stands out to me already from that version's generated list is the set of QEMU packages, should those be aligned (unless they are here already and I don't see them)?

@twaik
Copy link
Member Author

twaik commented Apr 18, 2025

QEMU packages, should those be aligned

I do not think so since they can not be installed simultaneously, they are replacing each other.

@robertkirkman
Copy link
Contributor

Ok, I filed PR for brotli: #24397.

Unfortunately it turns out that maybe brotli and python-brotli being combined in one build.sh might not have been a good idea after all because very unfortunately, it broke scripts/run-docker.sh ./build-package.sh python without -I, explained in

I am sorry, it is kind of my fault because I did not notice it until someone else found the error.

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.

4 participants