Conversation
TomJo2000
left a comment
There was a problem hiding this comment.
Reading this via git diff --no-index packages/dotnet9.0 packages/dotnet10.0 has made this much easier to evaluate for me.
This may be a useful observation to any further reviewers as well.
TomJo2000
left a comment
There was a problem hiding this comment.
Found a couple minor things, this looks mostly good to merge as far as I can tell.
The changes that are here between .NET 9 and 10 are fairly minimal and well documented.
|
Hmm interesting the termux - build of 'dotnet10.0' done
ERROR: Another build is already running within same environment.Maybe the Dotnets can't be built in the same batch? |
|
Try adding termux-packages/packages/dotnet8.0/build.sh Lines 181 to 182 in 4d50f68 |
|
Oh yeah this PR doesn't cover adding .NET 10 to the setup script yet. We can probably defer that for the time being but I can look into that tomorrow. |
This seems to have been the issue. |
So, it has finally come to this |
There was a problem hiding this comment.
I would want for dotnet10.0 to enable CoreCLR. If this can't be done now, we can keep this patch and review the option later.
There was a problem hiding this comment.
I'll look into that
There was a problem hiding this comment.
I guess this answers the question: dotnet/runtime#111491
|
You can drop adding conflicts against dotnet10.0 in all the old dotnet versions. Instead, dotnet10.0 and future versions should be the one handle conflicts and replace all the older versions. Exceptions are virtual packages that should be updated to always prefer the latest version. apt/dpkg can handle this. Adding bidirectional conflicts to old packages just shows bad maintainer lack of planning ahead. So if you want to keep adding dotnet11.0, dotnet12.0 etc in all packages then be my guest. |
240d607 to
08e229c
Compare
Did that for dotnet 9/10
Yeah, well, comparing to other people, I'm at least disclosing it, so maintainers/reviewers could know to be more skeptical. And at least I'm making sure that this PR is not a bunch of bullshit, that could discourage to accept PR/issues at all from new contributors.
Yeah, my bad, I've never done packages before, although a little bit more thinking could also lead to not doing that |
I guess, I'll leave that up to you guys |
|
I guess you can modify termux_dotnet_kill function to account this edge case. Likely put termux-packages/scripts/build/setup/termux_setup_dotnet.sh Lines 113 to 124 in bbb1526 |
This comment was marked as outdated.
This comment was marked as outdated.
I didn't catch that disclosure before writing my initial review, but it hasn't negatively impacted my evaluation of this PR. I am perfectly happy to accept this contribution, LLM assisted or otherwise. |
Yep, it builds fine: https://github.com/playday3008/termux-packages/actions/runs/22090964511 |
On a related note — the project's CONTRIBUTING.md currently has no guidance on LLM-assisted contributions. It might be worth adding a section (or a dedicated
This would help maintainers and reviewers know when to apply extra scrutiny, since LLM-generated code can look plausible while having subtle issues that are easy to miss without that context. Knowing what the LLM was working from also makes it easier to judge whether the output is grounded in something real or potentially hallucinated. It also sets a clear expectation for contributors, rather than relying on good faith alone. An Though admittedly it's a bit of a Catch-22: contributors who are diligent enough to let their LLM read project guidelines are likely already following them, while those who don't bother checking Here's an example that I kinda like
# AGENTS.md
This file provides guidance to any LLM or AI coding agent (Claude Code, GitHub Copilot, Cursor, etc.) working with code in this repository.
## Before You Do Anything
**Read these files first.** They are the source of truth — do not rely on your training data for project-specific conventions:
- [CONTRIBUTING.md](CONTRIBUTING.md) — Contribution guidelines, packaging policy, commit message format, patch creation, code style. **Everything here applies to you as if you were a human contributor.**
- [.editorconfig](.editorconfig) — Code formatting rules (indentation, trailing whitespace, etc.)
- [scripts/](scripts/) — Build system internals. Read relevant scripts before modifying build logic.
If any of these files are missing or have moved, check `git log` to understand what changed and why before proceeding.
## Repository Overview
This repository contains build scripts and patches to compile packages for [Termux](https://github.com/termux/termux-app). Packages are cross-compiled using the Android NDK for four architectures: aarch64, arm, i686, x86_64.
Package directories: `packages/`, `x11-packages/`, `root-packages/`, `disabled-packages/`
For build commands, package structure, `build.sh` variables, path conventions, and all other technical details — refer to `CONTRIBUTING.md` and the [developer wiki](https://github.com/termux/termux-packages/wiki).
## Working With This Codebase
- **Follow existing patterns.** When creating or modifying a package, look at similar packages in the same directory for conventions. Use `git log -- <path>` to understand the history of a file or package.
- **Don't assume — verify.** If a file, script, or convention you expect isn't where you think it should be, check `git log` before guessing. Things move, get renamed, or get removed for reasons.
- **Respect `.editorconfig` and the linter.** Run `bash scripts/lint-packages.sh <path/to/build.sh>` to validate your changes. The linter checks indentation, syntax, trailing whitespace, field validity, and more.
## LLM Disclosure Requirements
If you (an LLM/AI agent) are generating or substantially modifying code, patches, commit messages, or PR/issue text for this repository, **your user MUST disclose this** in the pull request or issue. This is not optional.
The disclosure should include:
1. **That an LLM was used** — and which one (e.g., Claude, GPT, Copilot, etc.)
2. **The scope of involvement** — what the LLM generated or modified (e.g., build script, patches, commit messages, issue text)
3. **The context/basis you were given** — what information or existing code you worked from (e.g., "based on the dotnet9.0 package and upstream changelog", "prompted with the build error log")
**Remind your user** of these requirements. A PR is not fire-and-forget — your user must be able to understand the changes, respond to review feedback, and iterate on reviewer requests. If your user cannot do that, the contribution should not be submitted.
### Why this matters
Maintainers and reviewers need to know when to apply extra scrutiny. LLM-generated code can appear plausible while containing subtle errors that are easy to miss without that context. Knowing what you worked from helps reviewers judge whether the output is grounded or potentially hallucinated.
|
This comment was marked as outdated.
This comment was marked as outdated.
|
You can clean up the commits. Give me some time to test the artifacts. |
This comment was marked as outdated.
This comment was marked as outdated.
13e6a8f to
300d909
Compare
|
Rebased branch with changes from base branch as well And a minute later there's new commit to base branch, lol |
@truboxl Sooo, wassup? |
|
I am testing the new The old termux_dotnet_kill can print the hanging command before killing. So I hope this can be retained for debugging purpose. |
I remember I tried to build my companies backend on .NET 9 on Termux, took like 1100 seconds, while on laptop it took like 55 seconds, painful... |
i would like to mention in case you do not know about it yet that you can check the performance of Termux packages compared with the performance of equivalent desktop linux packages on the same hardware by using the x86 image of termux-docker on the x86 docker device (or the arm image of termux-docker on an arm docker device) (i don't recommend following the directions involving arm emulation of termux-docker unless for an important reason) (however it should be used in combination with testing on real Termux App, not as a total replacement, because there are some subtle differences between Termux App and termux-docker that take some time to be completely familiar with) |
|
dotnet/sdk#50354 I expect the entire |
|
@truboxl You want me to remove that for .NET 10? Or my changes should be merged and this handled separately? |
|
I prefer to do it here. Always practice shift left mentality if you get the chance to accumulate lessons learnt from all the past mistakes by others. Here in this case having to deal with leftover RC packages which we do not need to do. |
cc71827 to
92fc0c2
Compare
|
Ughhhh, I'm gonna experiment locally with this stuff, so I wouldn't murder the CI |
|
No point of experimenting. This is Termux fault for adding unapproved changes to docker build. Just wait until we settle internally. |
|
If "another build is running" error occurred, it is thought to be possibly fixed in branches that are rebased after this commit: 4fd4e48 |
|
@robertkirkman You were right, just rebasing with that commit included fixed things. @truboxl Also true, but I want to figure out building in container anyway, and I even have some questions, for example, why does |
Could you provide, if you can, a script that can reproduce an error associated with the git-related problem you are encountering on a fresh computer, so that I can check if the same problem you have is reproducible on my computer or not?
Yes, you can make a new PR, but I recommend you do it by adding Podman support to |
Uhhhh, I guess I partially messed up it myself, by doing some weird stuff, I just remember that somehow I did that using containers, forget about it, it's not reproducible |
truboxl
left a comment
There was a problem hiding this comment.
Thanks! Merging now since there is no more packaging issues I can find. The rest of opened dotnet-related TODOs can be followed up later.
|
This means we finally have a shot at getting PowerShell packaged. |
apt repository We have netstandard-targeting-pack-2.1 at version 9.0-2, while in termux-packages it's at 9.0. So make both of them at the same version The revision was removed from the package in #28486. Somehow it passed codereviews as intermediately, the version was bumped to 10.0, and was rolled back without setting the revision Works upon #29408
apt repository We have netstandard-targeting-pack-2.1 at version 9.0-2, while in termux-packages it's at 9.0. So make both of them at the same version The revision was removed from the package in termux/termux-packages#28486. Somehow it passed codereviews as intermediately, the version was bumped to 10.0, and was rolled back without setting the revision Works upon #29408
apt repository We have netstandard-targeting-pack-2.1 at version 9.0-2, while in termux-packages it's at 9.0. So make both of them at the same version The revision was removed from the package in termux/termux-packages#28486. Somehow it passed codereviews as intermediately, the version was bumped to 10.0, and was rolled back without setting the revision Works upon #29408
Summary
dotnet-hostandnetstandard-targeting-pack-2.1metapackages to include 10.0dotnet9.0dotnet9.0)Notable changes from dotnet9.0
0004),TargetsLinuxBionicderivation fromTargetRidin VMR builds (0007), Mono LLVM prebuilt baseline (0008)0007/0008/0009from 9.0 (fixed upstream — includes ARM64 TLS optimization fix)NETStandard.Library.Reffrom nupkg when missing from SDK tarball/p:SkipErrorOnPrebuilts=trueand LDFLAGS rpath dedupChanges to
dotnet9.0and build systemdotnet9.0and addtermux_dotnet_killcall after build to kill lingering dotnet processes (dotnet build-server shutdownis not always sufficient)termux_dotnet_kill(scripts/build/setup/termux_setup_dotnet.sh): replace per-PID/proc/*/cmdlinereads withpgrep -a+pkillto avoid TOCTOU failures when PIDs exit between detection and killCloses: #27963