summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-01-09opkg-build: remove `--numeric-owner` parameter overzealously addedHEADmasterPiotr Łobacz
In some corner cases this parameter has been added overzealously. All discussion on this topic can be read in here: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15334 Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-12-01CONTRIBUTING: refresh document0.6.3Alex Stewart
Refresh the CONTRIBUTING document with a more modern style and use it as the single source of truth for how to contribute to the project. Remove the AUTHORS file, as that file isn't contemporarily used and its information is redundant. Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-12-01add SECURITY.mdAlex Stewart
Add a short document directing contributors on how to report security issues against the project. Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-08-18CONTRIBUTING: update opkg mailing listAlex Stewart
The opkg mailing list has moved to opkg@lists.yoctoproject.org. The old Google Code/Group is being deprecated. Update the contributing document to reflect this change. Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-08-18CONTRIBUTING: update markdown stylingAlex Stewart
Update the CONTRIBUTING document markdown styling to something more modern and fixup a spelling mistake in the text. No substantial content changes in this commit. Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-08-16opkg-build: whitespace and stylingAlex Stewart
Cleanup the inconsistent use of tabs and spaces in the opkg-build script for cleanliness, and homogenize the style of case and if-then statements. No functional changes intended in this commit. Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-08-16opkg-build: Add acls and xattrs supportPiotr Łobacz
Add support for tar archives created with --acls and/or --xattrs options, PAX header format. GNU tar and libarchive already supports ACLs and extended attributes. We can now add this support as well to opkg-build script in order to use fsetattr or setcap inside do_install command and end up with a file in an image with the relevant ACLs and xattrs. Signed-off-by: Piotr Łobacz <p.lobacz@welotec.com> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-08-15Revert "opkg-build: Add acls and xattrs support"Alex Stewart
This reverts commit dc50e85ff1ceb2ffae2634a001f524a84a1b40e7.
2023-07-12opkg-build: Add acls and xattrs supportPiotr Łobacz
Add support for tar archives created with --acls and/or --xattrs options, PAX header format. GNU tar and libarchive already supports ACLs and extended attributes. We can now add this support as well to opkg-build script in order to use fsetattr or setcap inside do_install command and end up with a file in an image with the relevant ACLS and xattrs. Signed-off-by: Piotr Łobacz <p.lobacz@welotec.com> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2023-05-24opkg-feed: Fix adding feeds with same name as architecture0.6.2Petar Koynov
Attempting to add feeds with some special names that match architecture names was returning an error: "5 The named feed already exists" Make sourceTypePattern in createFeedLineRegex only match feed configuration lines src or dist Signed-off-by: Petar Koynov <petar.koynov@ni.com> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2021-09-22opkg-build: Add zstandard compressor support0.5.0Henry Kleynhans
Add ztsd compressor option to support using zstandard for packages. Zstandard compression offers a significant speed increase at decompression time over the current default (xz). This is amplified on less capable hardware as used in embedded devices. Further more, it offers a slightly faster compression speed at the highest compression levels with a slightly lower compression ratio and the ability to choose your own compromise between fast compression speed with less compression and slower compression speed with more compression. Zstandard would therefore be a good solution for package compression when: * install time matters, especially if you are installing on less capable hardware * disk space is not a concern: lower compression can speed up developer builds, especially incremental builds * disk space is a concern: release builds can make use of the highest compression setting to reduce package sizes Signed-off-by: Henry Kleynhans <hkleynhans@fb.com> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2021-03-01CONTRIBUTING: fix yocto ML link0.4.5Christian Hermann
Signed-off-by: Christian Hermann <mail@hermannch.dev> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2021-03-01opkg-build: make sure destination dir existsChristian Hermann
Signed-off-by: Christian Hermann <mail@hermannch.dev> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2021-02-23Makefile: separate manpages and utils installRyan Barnett
The installation of opkg-build man page introduces a host dependency on perl for the pod2man package to generate the man page. To allow the opkg-utils scripts to be installed separately from the manpages, break apart the install step into two install steps: install-utils and install-docs CC: Christian Hermann <mail@hermannch.dev> Signed-off-by: Ryan Barnett <ryanbarnett3@gmail.com> Signed-off-by: Alex Stewart <alex.stewart@ni.com>
2020-03-31Opkg.py : Support for tilde in version compare0.4.3Maarten van Megen
Add support for the special tilde character. The current opkg version allows specifying a version appended with a tilde e.g. 1.2.2~releasecandidate which is lower in version than 1.2.2 itself. With this commit, this is now also supported by the opkg.py script. Signed-off-by: Maarten <maarten.vanmegen@nedap.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2020-02-18Makefile: add opkg-feed to UTILSAlex Stewart
* Add the opkg-feed script to UTILS so that it is installed with a `make install`. * Clean up the UTILS variable declaration to be a little more diffable. Signed-off-by: Alex Stewart <alex.stewart@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2020-02-05Fix reproducibility issues in opkg-buildRichard Purdie
There is a sorting problem with opkg-build where the ipk generated is depending upon the order of files on disk. The reason is the --sort option to tar only influences the orders of files tar reads, not those passed by the -T option. Add in a sort call to resolve this issue. To ensure consistent sorting we also need to force to a specific locale (C) else the results are still not deterministic. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2020-01-17opkg-unbuild: convert to shellChristian Hermann
The previous implementation relied on python, it shelled out anyway (using bashisms) to call ar/tar and couldn't handle paths != cwd. This rewrite * can handle packages elsewhere than cwd * prints a summary like opkg-build does ("Unbuilt <IPK> into <DEST>") * is written in valid POSIX shell syntax * is compatible with opkg-build's non-esoteric options * is linted with shellcheck. Tested with * different tar * gnu tar 1.32 * bsdtar 3.4.1 * busybox-tar 1.31.1 * toybox-tar 0.8.2 (but prints a warning: tar: './' not under '/tmp/dest/foo') * some opkg-build arguments, as of `opkg-build -o root -g root $args`, with * args= * args="-Z xz" * args="-c" * args="-c -Z xz" Signed-off-by: Christian Hermann <mail@hermannch.dev> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2020-01-13Make grep and sed arguments in opkg-feed Busybox compliantRex Keen
Signed-off-by: Rex Keen <rex.keen@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2020-01-03testOpkgFeedManagement.sh: fix mangled test urlsAlejandro del Castillo
Email protection program incorrectly mangled the URLs used to test opkg-feeds. Correct the URLs to make the test pass. Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-12-16makePackage: switch to python30.4.2Alejandro del Castillo
Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-12-02opkg-utils: Switch to python3Haris Okanovic
Switch all py script shebangs to `#!/usr/bin/env python3`. Testing: Successfully ran the following on an IPK feed in $PWD: * opkg-make-index --checksum md5 --checksum sha256 -p Packages -m -l Packages.filelist . * opkg-graph-deps ./Packages * opkg-compare-indexes ./ ./ * opkg-list-fields font-alias_1.0.3-r2.3.204_all.ipk * opkg-show-deps -p Packages font-alias I'm not sure how to correctly run opkg-update-index and opkg-unbuild. I attempted to run both with `-h`, no parse errors. My motivation for this change is to add xz support to opkg filelists, which requires python3's version of tarfile. See previous commits in this series for details. However, this is probably a good change in general since python2 support is starting to dwindle. Signed-off-by: Haris Okanovic <haris.okanovic@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-12-02opkg.py/get_file_list(): Add xz supportHaris Okanovic
Open data.tar.xz if gz payload is not present. This change allows xz payloads to be archived in filelist. However, only python3's tarfile has xz support. This therefore only works if opkg-make-index's shebang is overridden to run in python3. Signed-off-by: Haris Okanovic <haris.okanovic@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-12-02opkg.py/get_file_list_dir(): Decode subprocess string, python3 supportHaris Okanovic
String split fails on newline (\n) chars in python3 unless subprocess output string is decoded as text. This results in fn containing a bad filename with trailing newline (\n) char, which subsequently breaks open() in get_file_list(). Tested `opkg-make-index -l Packages.filelist ...` in python 2 and 3. Signed-off-by: Haris Okanovic <haris.okanovic@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-11-25opkg-build: do not include current directoryAlejandro del Castillo
Current directory entry is not needed. Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-11-25Fix opkg-build to handle errors correctlyRichard Purdie
We need opkg-build to fail if for example the tar command is passed invalid options. Without this, we see silently created empty packaged where data.tar is zero bytes in size. This creates hard to debug problems. An example is when reproducible builds are enabled and run on old hosts like centos7 which has tar < 1.28: Subprocess output:tar: unrecognized option '--clamp-mtime' Try `tar --help' or `tar --usage' for more information. This change does make the script bash specific but that shouldn't an issue for systems capable of building ipks. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-11-07Add a utility script for listing and manipulating feedsRex Keen
Signed-off-by: Rex Keen <rex.keen@ni.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-10-18add SPDX license identifiersYann CARDAILLAC
Signed-off-by: Yann CARDAILLAC <ycnakajsph@gmail.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-09-16opkg-build: clamp mtimes to SOURCE_DATE_EPOCHAlejandro del Castillo
For reproducible builds, clamp mtimes bigger than SOURCE_DATE_EPOCH to SOURCE_DATE_EPOCH (build generated files, usually). Fixes bugzilla 13450 Tested-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-05-31opkg-list-fields: fix to print the fields again0.4.1Martin Jansa
* printing opkg.Package directly doesn't return anything useful now <opkg.Package object at 0x7fd49e9f2780> * we need to call Package.print() function and specify which checksums to print, we can include both md5 and sha256 for opkg-list-fields * it was changed in this commit: commit 601d691dd80ef494aef069017edc5bf80aa883a1 Author: Alejandro del Castillo <alejandro.delcastillo@ni.com> Date: Wed Dec 19 11:40:15 2018 -0600 opkg-make-index: add sha256sum support which replaced the modified __str__ function with print(self, checksum) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-05-30Makefile: fixed for-loop in install receipeAlejandro del Castillo
The install receipe would have copied all the manpages to each of the section folders. This change will do what I believe the original author had intended. Signed-off-by: Joshua DeWeese <jdeweese@hennypenny.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-05-14ArFile: add python3 compatibilityAlejandro del Castillo
Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2019-02-21opkg-build: do not set mtime on data.tar.XAlejandro del Castillo
Opkg should make sure the binaries it creates are created in a repoducibe way, but it shouldn't modify the mtime of the binaries it consumes. Doing so has side effects, for exmaple, Python pyc files are invalidated. Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-12-26opkg-build: use filelists as tar input0.4.0Alejandro del Castillo
OE parallelism means that the number of hard links may increase or decrease while a tar file is being created, which makes tar fail with error 1. To avoid this problem, use tar -T option, which uses filelists. Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-12-26opkg-make-index: add sha256sum supportAlejandro del Castillo
Add a new --checksum option (default to md5). Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-12-26opkg-make-index: use argsparse instead of getoptAlejandro del Castillo
Argsparse is a newer library, it makes the code cleaner and easier to expand. Only enabled short options, to leave the command line as it was with getopt. Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-12-26opkg-make-index: fix pylint errors and warningsAlejandro del Castillo
Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-11-19opkg-build: add support for lz4 compressorAlejandro del Castillo
Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-11-16opkg-build: simplify date calculationAlejandro del Castillo
Avoid an integer to string conversion (and back) by directly supplying the Unix time as an integer to -mtime. Fixes bugzilla# 12580 Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-11-13opkg-build: add compressor arguments command line argumentAlejandro del Castillo
If specified, overwrites the default compressor flags. Fixes bugzilla #12611 Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-11-12update-alternatives: Fix link relocation supportNiko Mauno
Commit fcb26339000021eb9bb711aa264247aebcfdd4ae which added Debian-style support for link relocation tries to relocate symbolic link on host OS, resulting in following-like error when two alternative packages have symbolic link source located in different directories (/bin/rev -> /bin/busybox.nosuid and /usr/bin/rev -> /usr/bin/rev.util-linux): update-alternatives: renaming rev link from /bin/rev to /usr/bin/rev mv: cannot stat '/bin/rev': No such file or directory Fix the issue by prefixing 'olink' and 'link' variable references with path to targeted root filesystem's root directory. Signed-off-by: Niko Mauno <niko.mauno@iki.fi> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-10-22opkg-make-index: use ctime instead of mtimeStefan Agner
When using sstate, two parallel builds can produce two packages with the same mtime but different checksums. When later one of those two builds fetches the others ipk, the package index does not get udpated properly (since mtime matches). This ends up with messages such as: Downloading file:/../tmp/work/../image/...ipk. Removing corrupt package file /../sysroot/../var/cache/opkg/volatile/...ipk However, in that case, ctime is different. Use ctime instead of mtime to prevent failures like this. Suggested-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Acked-by: Richard Purdie <richard.purdie@linuxfoundation.org> Acked-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-10-05opkg-build: Add support for explicit pigzMike Crowe
oe-core has stopped[1] installing pigz as gzip. This means that in order to persuade opkg-build to use pigz it must be specified explicitly. Let's teach opkg-build to deal with being passed pigz as a compressor. We can't combine the check for whether -T is required because opkg-build calls both $compressor and gzip explicitly. Signed-off-by: Mike Crowe <mac@mcrowe.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-02-28opkg-build: Use local time for build_date, since opkg extracts files ↵Michael Hansen
assuming local time rather than UTC. Also increase resolution of build date down to the second, rather than clamping to midnight of the current date. Signed-off-by: Michael Hansen <michael.j.hansen@hp.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-02-28Only use --sort=name on versions of tar which support it. This fixes ↵Michael Hansen
compatibility with bsdtar and old versions of GNU tar (e.g. RHEL6). Signed-off-by: Michael Hansen <michael.j.hansen@hp.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-02-22opkg-build: improve ipk package reproducibilityGardon Lukasz
Implement timestamp recommendation from reproducible-build.org [1] - Enable deterministic archieve by setting zero timestamp and uids/guds with using 'D' in GNU ar tool [1] https://reproducible-builds.org/docs/archives/ Signed-off-by: Gardon Lukasz <garjack555@gmail.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-02-07opkg-build: differentiate between compressorargs and zipargs0.3.6Juro Bystricky
control.tar.gz is always compressed with gzip. If data.tar is compressed by a compressor other than gzip, control.tar.gz may end up compressed with timestamp in the compressed image header. This would result in packages that are not binary reproducible. [YOCTO #11242] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-01-29opkg-build: improve package reproducibilityAlejandro del Castillo
Implements some of the recommendations by reproducible-build.org [1] - Set modification time to SOURCE_DATE_EPOCH env variable - Enable deterministic sorting of directory entries - Do not save timestamp on gzip compressed archive bugzilla #11242 [1] https://reproducible-builds.org/docs/archives/ Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-01-23update-alternatives: add support for link renamesAlejandro del Castillo
During package upgrades, the link location might change. For example: Package A: 'update-alternatives --install /bin/app app /some/real/path 100' Package B: 'update-alternatives --install /sbin/app app /some/other/path 100' Opkg disallows a link change and throws an error. Debian does allow the operation, changing the link to the new location. Add support to follow the debian update-alternatives behavior. bugzilla #8344 Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>
2018-01-21update-alternatives: fix the sed pattern in remove_altJackie Huang
'\>' is to matches the end of a word, but the executable is not always a 'word', e.g. /usr/lib64/busybox/usr/bin/[ then such alternatives can not be removed. So change to use '\s' in the pattern since the following character of the $path is whitespace. Signed-off-by: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Alejandro del Castillo <alejandro.delcastillo@ni.com>