termux / termux-create-package

Python script to create Termux packages easily.
https://termux.com
Apache License 2.0
417 stars 95 forks source link

[Feature Request] Support custom multiple archs, please. #28

Closed theaungmyatmoe closed 3 years ago

theaungmyatmoe commented 3 years ago

Binary files in binary-all of apt-mirror can't work for all architectures, so , please support custom multiple arch array not only for one arch (ex: arch:"aarch64").

{
 "arch":["aarch64","and"]
}
agnostic-apollo commented 3 years ago

Support will be added when I get time to release next version. For now, disabling the check should be enough. Open the file, like with nano $PREFIX/bin/termux-create-package and remove line 66 and 67

theaungmyatmoe commented 3 years ago

Support will be added when I get time to release next version. For now, disabling the check should be enough. Open the file, like with nano $PREFIX/bin/termux-create-package and remove line 66 and 67

Sound good but removing the some code is not work. I wait for the next version of this.

ghost commented 3 years ago

Binary files in binary-all of apt-mirror can't work for all architectures

?

Always used to mirror (via apt-mirror tool) binary-all when Termux has been hosted on Bintray.

DEB file format can support only one architecture: either CPU-specific, e.g. i686, or all. So if your package runs on all architectures, you need to specify all, otherwise specify a CPU-specific architecture.

Reference (Debian package format control fields): https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-architecture

Depending on context and the control file used, the Architecture field can include the following sets of values:

  • A unique single word identifying a Debian machine architecture as described in Architecture specification strings.
  • An architecture wildcard identifying a set of Debian machine architectures, see Architecture wildcards. any matches all Debian machine architectures and is the most frequently used.
  • all, which indicates an architecture-independent package.
  • source, which indicates a source package.

So, there is no such thing as array in architecture field.

theaungmyatmoe commented 3 years ago

Binary files in binary-all of apt-mirror can't work for all architectures

?

Always used to mirror (via apt-mirror tool) binary-all when Termux has been hosted on Bintray.

DEB file format can support only one architecture: either CPU-specific, e.g. i686, or all. So if your package runs on all architectures, you need to specify all, otherwise specify a CPU-specific architecture.

Reference (Debian package format control fields): https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-architecture

Depending on context and the control file used, the Architecture field can include the following sets of values:

  • A unique single word identifying a Debian machine architecture as described in Architecture specification strings.
  • An architecture wildcard identifying a set of Debian machine architectures, see Architecture wildcards. any matches all Debian machine architectures and is the most frequently used.
  • all, which indicates an architecture-independent package.
  • source, which indicates a source package.

Yes, I know it. When defined with binary-all , apt did not download from dists/termux/extras/binary-all directory.

ghost commented 3 years ago

There is something wrong with your apt repository.

ghost commented 3 years ago

Check this example with binary-all: https://termux.net/dists/stable/main/

https://github.com/its-pointless/its-pointless.github.io/tree/master/files/24/dists/termux also hosts binary-all packages successfully.

theaungmyatmoe commented 3 years ago

Check this example with binary-all: https://termux.net/dists/stable/main/

https://github.com/its-pointless/its-pointless.github.io/tree/master/files/24/dists/termux also hosts binary-all packages successfully.

It is not work for me. In my case I host my deb files on GitHub.

https://github.com/amm834/meow

When I install the package named lamp , apt is finding at

https://amm834.github.io/meow/dists/dists/termux/extras/binary-aarch64/lamp_1.1.1_aarch64.deb

.

apt should find to https://github.com/amm834/meow/tree/main/dists/dists/termux/extras/binary-all.

But it is not working.

Error

➜  ~ apt install lamp
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  lamp
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 2064 B of archives.
After this operation, 0 B of additional disk space will be used.
Err:1 https://amm834.github.io/meow/dists termux/extras aarch64 lamp aarch64 1.1.1
  404  Not Found [IP: 185.199.108.153 443]
E: Failed to fetch https://amm834.github.io/meow/dists/dists/termux/extras/binary-aarch64/lamp_1.1.1_aarch64.deb  404  Not Found [IP: 185.199.108.153 443]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

So, how can I solve this?

ghost commented 3 years ago

Screenshot_20210508-123853

apt update maybe?

theaungmyatmoe commented 3 years ago

Oh! It work on your device. Why is it not working on aarch64.

ghost commented 3 years ago

My device is aarch64.

Try

apt clean
apt update
apt install lamp
theaungmyatmoe commented 3 years ago

Thank it is work now.

agnostic-apollo commented 3 years ago

@amm834 Sorry, I misread your question, I didn't read the array part. I thought by custom arch you meant support for architectures outside the 5 currently supported. As xeffyr mentioned, you can only specify one arch for a deb file. My updated script just allows other archs as well, if installation prefix is not under /data/data/[^/]+/files/.

But glad its working for you now.