diff options
| -rw-r--r-- | meta/classes-global/sstate.bbclass | 53 |
1 files changed, 26 insertions, 27 deletions
diff --git a/meta/classes-global/sstate.bbclass b/meta/classes-global/sstate.bbclass index 8e0391c666..decfb5adef 100644 --- a/meta/classes-global/sstate.bbclass +++ b/meta/classes-global/sstate.bbclass | |||
| @@ -844,8 +844,7 @@ python sstate_create_and_sign_package () { | |||
| 844 | from tempfile import TemporaryDirectory | 844 | from tempfile import TemporaryDirectory |
| 845 | with TemporaryDirectory(dir=sstate_pkg.parent) as tmp_dir: | 845 | with TemporaryDirectory(dir=sstate_pkg.parent) as tmp_dir: |
| 846 | tmp_pkg = Path(tmp_dir) / sstate_pkg.name | 846 | tmp_pkg = Path(tmp_dir) / sstate_pkg.name |
| 847 | d.setVar("TMP_SSTATE_PKG", str(tmp_pkg)) | 847 | sstate_archive_package(tmp_pkg, d) |
| 848 | bb.build.exec_func('sstate_archive_package', d) | ||
| 849 | 848 | ||
| 850 | from oe.gpg_sign import get_signer | 849 | from oe.gpg_sign import get_signer |
| 851 | signer = get_signer(d, 'local') | 850 | signer = get_signer(d, 'local') |
| @@ -865,8 +864,7 @@ python sstate_create_and_sign_package () { | |||
| 865 | from tempfile import NamedTemporaryFile | 864 | from tempfile import NamedTemporaryFile |
| 866 | with NamedTemporaryFile(prefix=sstate_pkg.name, dir=sstate_pkg.parent) as tmp_pkg_fd: | 865 | with NamedTemporaryFile(prefix=sstate_pkg.name, dir=sstate_pkg.parent) as tmp_pkg_fd: |
| 867 | tmp_pkg = tmp_pkg_fd.name | 866 | tmp_pkg = tmp_pkg_fd.name |
| 868 | d.setVar("TMP_SSTATE_PKG", str(tmp_pkg)) | 867 | sstate_archive_package(tmp_pkg, d) |
| 869 | bb.build.exec_func('sstate_archive_package',d) | ||
| 870 | update_file(tmp_pkg, sstate_pkg) | 868 | update_file(tmp_pkg, sstate_pkg) |
| 871 | # update_file() may have renamed tmp_pkg, which must exist when the | 869 | # update_file() may have renamed tmp_pkg, which must exist when the |
| 872 | # NamedTemporaryFile() context handler ends. | 870 | # NamedTemporaryFile() context handler ends. |
| @@ -874,32 +872,33 @@ python sstate_create_and_sign_package () { | |||
| 874 | 872 | ||
| 875 | } | 873 | } |
| 876 | 874 | ||
| 877 | # Shell function to generate a sstate package from a directory | 875 | # Function to generate a sstate package from the current directory. |
| 878 | # set as SSTATE_BUILDDIR. Will be run from within SSTATE_BUILDDIR. | ||
| 879 | # The calling function handles moving the sstate package into the final | 876 | # The calling function handles moving the sstate package into the final |
| 880 | # destination. | 877 | # destination. |
| 881 | sstate_archive_package () { | 878 | def sstate_archive_package(sstate_pkg, d): |
| 882 | OPT="-cS" | 879 | import subprocess |
| 883 | ZSTD="zstd -${SSTATE_ZSTD_CLEVEL} -T${ZSTD_THREADS}" | ||
| 884 | # Use pzstd if available | ||
| 885 | if [ -x "$(command -v pzstd)" ]; then | ||
| 886 | ZSTD="pzstd -${SSTATE_ZSTD_CLEVEL} -p ${ZSTD_THREADS}" | ||
| 887 | fi | ||
| 888 | 880 | ||
| 889 | # Need to handle empty directories | 881 | cmd = [ |
| 890 | if [ "$(ls -A)" ]; then | 882 | "tar", |
| 891 | set +e | 883 | "-I", d.expand("pzstd -${SSTATE_ZSTD_CLEVEL} -p${ZSTD_THREADS}"), |
| 892 | tar -I "$ZSTD" $OPT -f ${TMP_SSTATE_PKG} * | 884 | "-cS", |
| 893 | ret=$? | 885 | "-f", sstate_pkg, |
| 894 | if [ $ret -ne 0 ] && [ $ret -ne 1 ]; then | 886 | ] |
| 895 | exit 1 | 887 | |
| 896 | fi | 888 | # tar refuses to create an empty archive unless told explicitly |
| 897 | set -e | 889 | files = sorted(os.listdir(".")) |
| 898 | else | 890 | if not files: |
| 899 | tar -I "$ZSTD" $OPT --file=${TMP_SSTATE_PKG} --files-from=/dev/null | 891 | files = ["--files-from=/dev/null"] |
| 900 | fi | 892 | |
| 901 | chmod 0664 ${TMP_SSTATE_PKG} | 893 | try: |
| 902 | } | 894 | subprocess.run(cmd + files, check=True) |
| 895 | except subprocess.CalledProcessError as e: | ||
| 896 | # Ignore error 1 as this is caused by files changing | ||
| 897 | # (link count increasing from hardlinks being created). | ||
| 898 | if e.returncode != 1: | ||
| 899 | raise | ||
| 900 | |||
| 901 | os.chmod(sstate_pkg, 0o664) | ||
| 903 | 902 | ||
| 904 | 903 | ||
| 905 | python sstate_report_unihash() { | 904 | python sstate_report_unihash() { |
