Age | Commit message (Collapse) | Author |
|
Even though we had a portable extraction method for tarballs, this slowed
down the extraction immensely. I have added 2 new methods for tarball
extraction so that we have faster extraction speeds based on the system
tar implementation. Here are the options with the order of preference:
- pax: Although an uncommon program, pax is defined by POSIX, and
supports regular expressions, meaning that we can 'strip' components.
This is slightly faster than bsdtar and GNU tar.
- bsdtar/gnutar: We simply use '--strip-components 1' for these tar
implementations.
- tar: This is the portable method we had been using for a while, it's
good, gets the job done, but it is slower.
Here is also a little benchmarking I did by extracting the Linux tarball
for 10 times per method.
tarball=$CPT_CACHE/sources/linux-headers/linux-5.10.12.tar.xz
for extract in pax bsdtar tar; do
time sh -c ". cpt-lib
extract=$extract
for i in \$(seq 10); do
mkdir -p hdr; cd hdr;
tar_extract \"$tarball\"; cd ..;
rm -rf hdr
done"
done
This yields the following output, methods are as ordered above:
sh -c 75.21s user 11.11s system 115% cpu 1:14.90 total
sh -c 78.68s user 14.64s system 124% cpu 1:15.15 total
sh -c 99.88s user 69.99s system 119% cpu 2:21.70 total
FossilOrigin-Name: 45e3a9a03e7eff9b30b0e911d68d44068e8681ebf4501f271c8a686118f29243
|
|
FossilOrigin-Name: ff26aa326167c4751040d86e06e298ac11b4ed7923b729ed3940e881bdc24124
|
|
FossilOrigin-Name: 536a4979e768c7b605a393251f0468a878e46a23b554045049b7404072b5258b
|
|
FossilOrigin-Name: a7f5ddfe5f7fdc9ea329ed8175c3ad237e7a7460bcbb3de4855d2af3f233176b
|
|
This ensures that we create the needed directories regardless of pkg_extract()
FossilOrigin-Name: c7c7c11246aeb74343f06e1d5d53ea9ad4cab2f4153d745cb00ae0c62f51b048
|
|
FossilOrigin-Name: a77a19063999297dfeb45dd725cb78dea0482030571dba0a34ae79b02e1c99fd
|
|
FossilOrigin-Name: 4bd8dc7830c8308c31510e5624550b1cf39df1401b4091a5bb80a2e24e109a30
|
|
FossilOrigin-Name: aae19d6384369835236023c30bfb54d24e9bf4021ff8d6fa10dbed8611419229
|
|
FossilOrigin-Name: 81b5d4e8c446aa4e4df789882bb5900d9636f4e5f6e9206e01ed42dfce946ad0
|
|
FossilOrigin-Name: ec9c5047e0bd1ef84104e66206db9a44e1b1e519f60519011c92b5c4e8e03657
|
|
FossilOrigin-Name: 035deb0250c22e7feafad486f8f2b1a40893ad87073c8e41ba4bdc0db0d23d62
|
|
This bug caused swapping prefix files to malfunction on manifest files.
Example:
swapping redo caused redo-* files to be swapped on the manifest with the
name 'redo' without actually moving the files to the alternatives
directory either.
FossilOrigin-Name: 5966d079397154246173b94f53de83212c20edeb53f75089092cec352e6316f4
|
|
Just so you know, the error is due to a bug on the older versions, but
we still don't want checks to fail because of it. Installing newer
versions of shellcheck takes too long on test containers that I am okay
with fixing a faulty error.
FossilOrigin-Name: 179ced7baf35e7eace835e1f7903ce72d2249e7ec6c809cfdd92ba7aa14b2517
|
|
FossilOrigin-Name: cc958373d206ec3dd65008461a715120b25f05772b9a2d70539b3a53839569c2
|
|
FossilOrigin-Name: e56971ac89f4a4e1c3efd62dad13b3a1c43bc6266c2803600995954cb61ee6cd
|
|
FossilOrigin-Name: f282158e981153846bc1aca83263de583403dd78444435cb139a7f25e6658c4e
|
|
FossilOrigin-Name: 3c44de3bfd6fbf69658371b2d8cd4d30043dd6f9b568c43ab30291925ebc582e
|
|
FossilOrigin-Name: e512f7d12e12c16fe109cfdf642361bb46ba594273ecacd93531c0ddfb144a8e
|
|
FossilOrigin-Name: ca05dfca6f8529b23647ddac4e9d7d3317c4508ee15045e60a4eac63787a04b7
|
|
FossilOrigin-Name: 47fe062d11c48e1cc51d6a2a4d6e3e4d54524e27281dc18ef69ec71f3bd9bcb4
|
|
FossilOrigin-Name: e34f2e3bf42cdfa6bdc94ffafbf1c7d58bc2a377608549e70c7b8bc426592272
|
|
Using awk, we can achieve the following things:
- Ignore the rest of the file (2 times faster than sed)
- If the line doesn't match the docstring pattern, we can just print a
newline instead.
I am not exactly really familiar with awk scripting so there might be a
better way of doing this. In that case please send a patch and I will
apply it.
FossilOrigin-Name: bf65db74ad6552bb374f3535ef2a5333bbc0dc3d20563ec37e821036e07f621f
|
|
FossilOrigin-Name: 63e4717d7cc2790f055d562b165fb7ada2a6a34760078c2d178027fae28034b2
|
|
In order to avoid confusion, I have moved helper functions to lib.rc
from the config.rc file.
FossilOrigin-Name: a51d7fa1235547b1f948eae9cd55ddf3ae365d56364eaa2644b16113ea8dd979
|
|
- cpt script no longer ignores anything.
- If cpt-lib is invoked from the command-line, it parses the given command-line
arguments, making it possible to be used as a script.
FossilOrigin-Name: 8484d0ff082d03f38fa41d7a5e76c21bfdd5951b6db5193bb4a7f17e74a5025e
|
|
cpt-readlink and cpt-stat were unnecessary additions for mundane tasks. Since
they were binaries instead of scripts, they added an extra layer of complexity
to the library.
These functions are now included inside the package manager library with the names
_readlinkf() and _stat().
FossilOrigin-Name: 7e15e2b57ddcb834c4286c8d1ac0a28031ae4f5d39f3c6a99f5b3aa0e9a83d43
|
|
FossilOrigin-Name: 16695158bf8e9ce16fb245dd3d71c44b3678892cbc7e8cd7ca221ce7d4c48823
|
|
FossilOrigin-Name: 242ef9adb08b706d0d45a500ef95aaa32860e4119cb1715a981c9a87c5f29843
|
|
- If an argument is supplied to create_cache(), it will not create the default
subdirectories (build/pkg/export).
- create_cache() now also globally sets the $tmp_dir variable, which is the
default directory + $pid variable
Changes above do not affect the previous usage of the function, so it is not
considered a breaking change.
FossilOrigin-Name: 2eb5bc89e2e1c688186667af0d5177a1cdc3dc2e83e28e134752955c68a5c4e0
|
|
FossilOrigin-Name: fbdd6c240bc5eae6522926ccb776cd79ab87c1f2e422fd4f15ba8c23fbbbe5b4
|
|
FossilOrigin-Name: 2b735d94662c1f120603b8077e880d07eb76f26f155e2957ce60d6057c938509
|
|
FossilOrigin-Name: de567d5766f6af7e5659f2afbef6a566b386c63659f0f8b292f905e38b53c272
|
|
FossilOrigin-Name: ffb46492fd34c44bd9d422c3e5febec38f8938901d339e5f952cac5c91274ee7
|
|
Because of the CPT_DEBUG check returning 1, it would skip the termination,
meaning that even the package has failed, it will create the tarball and exit
with success.
FossilOrigin-Name: ce2337ddaa89f4a9928018ad325e6c7eac71ffb639ad55ad8e8bc97547f9a59b
|
|
FossilOrigin-Name: 61286170f1581e6b6af180d0de2ebef9b900e3a693921d5966f66c7d619a4485
|
|
- Move the conflict and temporary manifest files inside the process
directory. Instead of naming them 'c' and 'm', name them 'conflict' and
'manifest' respectively.
- Remove the process directory entirely.
FossilOrigin-Name: 27077d44b5863954d0d25b39a49c00d22ac074436afd764095ef06703407bf53
|
|
FossilOrigin-Name: e37239871c297b73bf3c08d31fa0ec93d9581939e65771e970933adfcfad83a9
|
|
FossilOrigin-Name: 2bf2c63be602059ad077171016c46e1e880920c6085e75dd6c1f9a82fa515153
|
|
FossilOrigin-Name: 89e024bc50ae14880135de6279580f2e9da3a1e2dcb58fc43f83a9f012bdb060
|
|
FossilOrigin-Name: 3f01d4659d9f4e7488387436153fc9a20723b40f28515c5020172a83eb88128b
|
|
Calling parse() after cpt-lib has been called causes sys_db to be initiated
using the wrong CPT_ROOT, among other issues. By calling the option parser
during the main(), we make sure that the options parsed are used as soon as
possible.
FossilOrigin-Name: 2933b99bec8ec9c3f20143e2a19c270a6d208f723d2b394c625cbc13d2625326
|
|
FossilOrigin-Name: 9b88780f4576b44b7578dd7758f8c2a967d11ff6a86566c08dd5b4ccf04f2309
|
|
If cpt-search was called from a package directory, adding the '-o' option makes
it output only the other instances of the package.
FossilOrigin-Name: edf17ee77fb06aecbc6d409d49390aea2719af012ca8be2b7daf1dbda88da269
|
|
FossilOrigin-Name: 8f46944f81271ff851a5d21bfbaa21ad86f8cf120ef22bf8f9a64ecd3f339eb3
|
|
FossilOrigin-Name: cdbd1a2ac3828872b8de526e0030d71efbe2ff2a43f62ad05a2bbbe9eab229f6
|
|
Following the changes on kiss, pkg_fixdeps has been renamed to pkg_fix_deps and
added readelf support. Readelf is a much better solution for checking
dependencies as it can differentiate between actual dependencies and
"dependencies of dependencies".
cpt will check for the tool to use in the following order:
- readelf
- eu-readelf
- llvm-readelf
- ldd
CPT_ELF:
This new variable can be used to force a specific tool, such as ldd, or a
specific readelf program.
Other changes include:
- The function no longer prints found dependencies
- It checks for the dependencies on the current manifest first, and skips if
they have been found on the package.
- The function now uses the pkg_owns() for finding packages
FossilOrigin-Name: 42927fcc2cd7f588be2658c506773b9be22f2b268e0999903ce1a84c65f7b5ec
|
|
This function is almost identical to the function with the same name on
kiss. However, instead of saving the owner on a global variable, the function
prints the owning package to the standard output.
The function can be called similar to grep. The usage is:
pkg_owner GREP_FLAGS FILE_TO_CHECK MANIFEST_LOCATIONS...
If no manifest is specified, the function will use every installed package
on the system database.
FossilOrigin-Name: 53cbeff7a92850efd172960f12848885961655c9c53e24a5f8cb8da7642ce541
|
|
FossilOrigin-Name: 013712d7ad58629dbd4fce8a34a1acb7dbe3cdafd8dec0d014c8d427fe5b8533
|
|
FossilOrigin-Name: 1dabad031a841b894ada16be7072f3cf342abcb9e63ffc8f084f07c766bf9935
|
|
FossilOrigin-Name: 30c5615767ab577497e8f9b28401796f06194d0d079b65d88053cd63eb126a8e
|