353 Commits

Author SHA1 Message Date
Tianling Shen
08471108f6
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-02-08 16:14:10 +08:00
Chukun Pan
e1451a53e1
tools: add xxhash package for ccache
The ccache build requires xxhash, which is download from
the Internet. So add host-build package for xxhash.

Fixes: #16851
Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
[ use git source proto ]
Link: https://github.com/openwrt/openwrt/pull/17700
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-02-06 12:55:21 +01:00
Tianling Shen
dd4624e1eb
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-07-02 15:42:18 +08:00
Robert Marko
843b51b26d tools: mtd-utils: use libuuid provided by util-linux
Now that util-linux is building libuuid we can simply use that instead
of manually pointing to e2fsprogs libuuid so we can disable building
libuuid in e2fsprogs.

Link: https://github.com/openwrt/openwrt/pull/15806
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-26 11:21:04 +02:00
Robert Marko
bd48ca1245 tools: e2fsprogs: use libuuid provided by util-linux
We are now using util-linux to provide libuuid so disable building it
in e2fsprogs and simply use the util-linux provided one.

Disabling libuuid removes the need for custom install recipe.

Link: https://github.com/openwrt/openwrt/pull/15806
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-26 11:21:04 +02:00
Robert Marko
54115ec22d tools: util-linux: use --disable-all-programs
util-linux supports passing --disable-all-programs configure flag to
disable building anything that isnt then manually enabled.

So, lets switch to using that instead of manually having to disable all
tools we dont need.

However, current drawback is that there is no upstream support for enabling
building hexdump so I included a patch that is pending upstream[0].

[0] https://github.com/util-linux/util-linux/pull/3101

Link: https://github.com/openwrt/openwrt/pull/15806
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-26 11:21:03 +02:00
Tianling Shen
e8c6664a26
Merge Offcial Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-06-07 16:37:21 +08:00
Michał Kępień
77106faa37 tools: remove kernel2minor
Since the Yafut tool is now used for both updating the kernel on
MikroTik devices with NAND flash and preparing firmware images for
MikroTik devices with NOR flash, remove the kernel2minor utility from
the tree as it is no longer used for anything.

Signed-off-by: Michał Kępień <openwrt@kempniu.pl>
Link: https://github.com/openwrt/openwrt/pull/13453
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-05 17:03:24 +02:00
Michał Kępień
a60721f2ed mikrotik: switch to Yafut for building MikroTik NOR images
The Yafut tool now has limited capabilities for working on filesystem
images stored in regular files.  This enables preparing Yaffs2 images
for devices with NOR flash using upstream Yaffs2 filesystem code instead
of the custom kernel2minor tool.

Since minimizing the size of the resulting filesystem image size is
important and upstream Yaffs2 code requires two allocator reserve blocks
to be available when writing a file to the filesystem, a trick is
employed while preparing an OpenWRT image: the blank filesystem image
that Yafut operates on initially contains two extra erase blocks that
are chopped off after the kernel file is written.  This is safe to do
because Yaffs2 has a true log structure and therefore only ever writes
sequentially (and the size of the kernel file is known beforehand).
While the two extra erase blocks are necessary for writes, Yaffs2 code
seems to be perfectly capable of reading back files from a "truncated"
filesystem that does not contain these extra erase blocks.

In terms of image size, this new approach is only marginally worse than
the current kernel2minor-based one: specifically, upstream Yaffs2 code
needs to write three object headers (each of which takes up an entire
data chunk) when the kernel file is written to the filesystem:

  - an object header for the kernel file when it is created,

  - an object header for the root directory when the kernel file is
    created,

  - an updated object header for the kernel file when the latter is
    fully written (so that its new size can be recorded).

kernel2minor only writes two of these headers, which is the absolute
minimum required for reading the file back.  This means that the
Yafut-based approach causes firmware images to be at most one erase
block (64 kB) larger than those created using kernel2minor, but only in
the very unfortunate scenario where the size of the kernel file is
really close to a multiple of the erase block size.

The rest of the calculations performed when the empty filesystem image
is first prepared stems from the Yaffs2 layout used by MikroTik NOR
devices: each 65,536-byte erase block contains 63 chunks, each of which
consists of 1024 bytes of data followed by 16-byte Yaffs tags without
ECC data; each such group of 63 chunks is then followed by 16 bytes of
padding, which translates to "-C 1040 -B 64k -E" in the Yafut
invocation.  Yaffs2 checkpoints and summaries are disabled (using
Yafut's -P and -S switches, respectively) as they are merely performance
optimizations that require extra storage space.  The -L and -M switches
are used to force little-endian or big-endian byte order (respectively)
in the resulting filesystem image, no matter what byte order the build
host uses.  The tr invocation is used to ensure that the filesystem
image is initialized with 0xFF bytes (which are an indicator of unused
space for Yaffs2 code).

Signed-off-by: Michał Kępień <openwrt@kempniu.pl>
Link: https://github.com/openwrt/openwrt/pull/13453
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-06-05 17:03:24 +02:00
Tianling Shen
458bdf28b5
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-04-07 17:45:08 +08:00
Rosen Penev
e09d3fd290 tools: rework tools-core dependecies
ZSTD and libdeflate do not depend on SED nor flock, so instead of the whole
for loop that will filter 2 out of 4 core packages just specify that patch
and tar depend on sed explicitly.

ZSTD now depends on libdeflate since libdeflate-gzip will then be used to
unpack ZSTD as well as most tool archives.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-04-06 11:24:18 +02:00
Christian Marangi
c3e43b7e65 tools: make zstd tool core and xz tool non-core
Make zstd tool core and xz tool non-core since zstd is the new default
for compression format.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-04-06 11:24:18 +02:00
Christian Marangi
4b920e799f tools: zstd: convert to make and drop meson dependency
Convert to make and drop meson dependency since it's not a core tools
and can't depend on advanced build system like cmake or meson.

On top of this make is the official build support and cmake/meson are
supported by 3rd parties.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-04-06 11:24:18 +02:00
ZiMing Mo
f761272538
Merge Official Source
Signed-off-by: ZiMing Mo <msylgj@immortalwrt.org>
2024-03-14 21:41:17 +08:00
Weijie Gao
53e3851646 tools: add util-linux
since kernel 6.4, commit bca2f3a9406b ("efi/zboot: Add BSS padding
before compression") introduces the use of hexdump to padding the
EFI kernel binary before compression.

util-linux which containing hexdump should then be compiled as a host
tool to guarantee not breaking the kernel build process.

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
2024-03-11 20:17:25 +01:00
Tianling Shen
8eeb455a26
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-10-31 15:23:38 +08:00
Felix Fietkau
1d6f9bdfc0 tools/elfutils: add missing dependency to fix build error
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-10-30 09:08:39 +01:00
Felix Fietkau
5331e85d96 elfutils: fix build and enable on non-linux systems
Use gnulib for compatibility

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-10-29 15:56:46 +01:00
Tianling Shen
94812e90ec
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-07-05 20:40:39 +08:00
Andre Heider
b1fa9e3d2b
tools: add mold, a modern linker
mold is a faster drop-in replacement for existing Unix linkers.

A single binary is able to link various targets, which is why this lives
in tools/.

All toolchain builds then just need to copy the linker over, hence avoiding
multiple builds with the same outcome.

Signed-off-by: Andre Heider <a.heider@gmail.com>
2023-07-04 20:25:40 +02:00
Tianling Shen
963553fef9
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-05-05 19:43:20 +08:00
Michael Pratt
09f8f21ae3
tools/coreutils: bootstrap to local gnulib source
Using the local gnulib source during bootstrap
allows for fine-grained control over the macros
and source files for use with coreutils
but part of gnulib instead of coreutils,
without having to wait for a release
or deal with gnulib as a git submodule.

In this case, the execution of autotools
must be skipped by force.
Autoconf and Automake during bootstrap on coreutils
only works right when using directly checked-out source.

There is a symbol in gnulib, @GNULIB_TIME@
that is not yet defined in coreutils source,
so we use the backup of lib/time.in.h instead
of the one provided by gnulib source.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
2023-05-04 06:07:30 +02:00
Michael Pratt
87e902fcdc
tools/libtool: bootstrap to local gnulib source
Using the local gnulib source during bootstrap
allows for fine-grained control over the macros
and source files for use with libtool
but part of gnulib instead of libtool,
without having to wait for a release
or deal with gnulib as a git submodule.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
2023-05-04 06:07:30 +02:00
Michael Pratt
fe33d5ba13
tools: add gnulib source
By having a local copy of gnulib, we can:
import the latest macro fixes into any package,
get rid of some statically stored macros that were otherwise missing,
bootstrap GNU tools with the latest relevant source
without having to wait for a release or rely on git submodules,
and possibly more...

The patch assists in bootstrapping by ignoring
the building of po files using gettext,
and also to allow a user-defined path to a program
to include parameters.

Signed-off-by: Michael Pratt <mcpratt@pm.me>
2023-05-04 06:07:27 +02:00
Tianling Shen
a01c999ea7
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-04-22 07:16:49 +08:00
Rosen Penev
291b137778
tools/lz4: build with meson
Simplifies Makefile and speeds up compilation.

Before:
Executed in   68.00 secs    fish           external
   usr time  104.17 secs    1.33 millis  104.17 secs
   sys time    4.29 secs    0.35 millis    4.29 secs

After:
Executed in   27.98 secs    fish           external
   usr time   25.18 secs    1.32 millis   25.18 secs
   sys time    3.31 secs    0.35 millis    3.31 secs

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-04-20 14:21:46 +02:00
Tianling Shen
cfba336507
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-04-19 10:51:04 +08:00
Tony Butler
36150ff6ff
tools/bzip2: add bzip2 binaries
`bzip2` is the standard executable for bzip2 compression

this includes development includes and both static and shared libs
(libbz2) which can be used by other packages

the initramfs generator offers the BZIP2 option but there was no
executable to support it, and worked only via side effect of having a
system-installed version of bzip2, which could be less predictable

Signed-off-by: Tony Butler <spudz76@gmail.com>
[ remove unintended change ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-04-18 15:25:21 +02:00
Christian Marangi
b691362d1d
Revert "tools/bzip2: add bzip2 binaries"
This reverts commit 394d7134ec42f14ddb91769c737098753fa68266.

The commit has unintentded change that cause compilation error with SDK
or LZO compression.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-04-18 15:22:48 +02:00
Tony Butler
394d7134ec
tools/bzip2: add bzip2 binaries
`bzip2` is the standard executable for bzip2 compression

this includes development includes and both static and shared libs
(libbz2) which can be used by other packages

the initramfs generator offers the BZIP2 option but there was no
executable to support it, and worked only via side effect of having a
system-installed version of bzip2, which could be less predictable

Signed-off-by: Tony Butler <spudz76@gmail.com>
2023-04-18 13:57:47 +02:00
Tianling Shen
cb3b41ef89
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-02-22 10:57:38 +08:00
Christian Marangi
30f2d516ba
tools/squashfs4: add new tool for squashfs4 images
squashfs tool is finally reborn and correctly maintained.

Introduce the new version as a replacement for squasfs4kit as it was a
fork and also abandoned.

Add additional patch to add the missing feature present in squashfskit4
but still missing on this new project.

Backport each required patch that fix compilation error on macos.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-02-20 07:34:03 +01:00
Tianling Shen
d55d951084
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-02-19 11:33:50 +08:00
Christian Marangi
01262c921c
tools/squashfs: rename to squashfs3-lzma
The name of squashfs is confusing since in reality it's a really old
version using an old lzma library. This tools is used for old ath79
netgear target and to produde a fake squasfs3 image needed for some
specific bootloader from some OEM (AVM for example)

Rename squashfs tool to squasfs3-lzma to better describe it.
Rename the installed bin from mksquashfs-lzma to mksquashfs3-lzma.
Use tar transform to migrate the root directory in tar to the new
naming.
Drop redundant PKG_CAT variable not needed anymore.
Also update any user of this tool.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-02-18 21:11:36 +01:00
Tianling Shen
410517085f
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-01-19 16:39:02 +08:00
Olliver Schinagl
62e150949f
libdeflate: Avoid circular dependencies
CMake depends on (libdeflate-)gunzip, libdeflate depends on Cmake, so we
can't win.

Luckily libdeflate is _very_ easy to build, without any build system, so
lets just manually compile it and be done with it.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-01-17 21:01:54 +01:00
Olliver Schinagl
92feae64eb
tools: Improve diffability/maintainability
Like with commit ae614fb397c2 ("tools: Improve diffability/maintainability")
we also want tools-core to be easy to maintain. While a smaller target,
it's still usefull and makes things nice and consistent.

To avoid duplicating any tools in the comment, simplify the comment
instead.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2023-01-17 20:54:05 +01:00
Tianling Shen
771411ebc4
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-01-17 18:34:04 +08:00
Tony Butler
32e99ed069 tools/lzop: add lzop binaries
Depends: `tools/liblzo`

`lzop` is the standard executable for LZO compression

the initramfs generator offers the LZO option but there was no
executable to support it actually working

Signed-off-by: Tony Butler <spudz76@gmail.com>
2023-01-16 23:51:10 +00:00
Tony Butler
9a8509c2c5 tools/liblzo: add liblzo library
prerequisite of upcoming `tools/lzop` addition, and subsequent initramfs
and squashfs cleanups

same as `packages/lzo` modified to be a HOST/tools type build,
and should always be the same version and sources when either one is
bumped

because this (and `packages/lzo`) only provide liblzo and no
executables, use the clearer name `tools/liblzo`

Signed-off-by: Tony Butler <spudz76@gmail.com>
2023-01-16 23:51:10 +00:00
Tony Butler
8b12966d20 tools/lz4: add lz4 binaries
same as `packages/liblz4` modified to be a HOST/tools type build with
unified liblz4 (this is also the dev package for liblz4)

the image initramfs generator offers the LZ4 option but there was no
executable to support it actually working

Signed-off-by: Tony Butler <spudz76@gmail.com>
2023-01-16 23:51:10 +00:00
Tianling Shen
6c36f3daaf
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2023-01-04 16:02:24 +08:00
Markus Stockhausen
a51ca085bf tools: Add gzip-libdeflate advanced compressor
Several devices provide U-Boot versions with only gzip compressed kernel
support (e.g. Realtek switches). This compression method produces larger
images than lzma. To save space on flash and avoid going the hard way with
lzma-loader we can make use of enhanced gzip tool based on libdeflate
compression library from https://github.com/ebiggers/libdeflate. It
keeps 100% deflate/gzip compatibility while improving compression ratio.
The image can be unpacked by the default inflate routines inside U-Boot.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
[Switched to v1.15 and made it work with cmake]
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Reviewed-by: Robert Marko <robimarko@gmail.com>
Reviewed-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Sander Vanheule <sander@svanheule.net>
2023-01-02 10:15:37 +01:00
Tianling Shen
6ce6e055f4
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2022-12-25 15:08:44 +08:00
Olliver Schinagl
ae614fb397
tools: Improve diffability/maintainability
There's no purpose to squish multiple tools into a single line (and
spread those out over multiple lines). It might look 'nice' in certain
conditions, but it's annoying to maintain.

For example, but not limited to:
* adding/removing tools, causes hard to read diffs
* Duplicates are harder to spot
* Sorting can not be (easily?) automated

With this proposed change, the above annoyances go away. Inserting a new
tool can be done with a single line-change-diff, sorting can be done by
any editor (in vi, select, :sort for example) and dupes are much easier
to spot.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2022-12-24 11:54:10 +01:00
Tianling Shen
a564e8b07a
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2022-11-13 13:57:34 +08:00
Felix Fietkau
a06e023b4e mac80211: remove old legacy legacy drivers
Get rid of drivers that are either limited to 802.11b/g or don't even support
cfg80211/mac80211. Most of these are either limited to boards that we don't even
support anymore because of firmware size, or were only used for custom hacks by
a really small number of users in the past.
Let's get rid of those to reduce the maintenance effort and the number of useless
packages

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2022-11-09 20:44:28 +01:00
Tianling Shen
8944e968f2
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2022-10-25 17:49:24 +08:00
Hauke Mehrtens
2c603ecb55 tools/genext2fs: Add dependency to libtool
This fixes the following build error:
  ./autogen.sh: line 13: aclocal: command not found

Fixes: b6d29af9475f ("tools/genext2fs: update to 1.5.0")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2022-10-23 01:45:52 +02:00
Tianling Shen
d6b6dbf9e1
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2022-10-21 15:59:03 +08:00