diff --git a/slices/git.yaml b/slices/git.yaml new file mode 100644 index 000000000..b497245dd --- /dev/null +++ b/slices/git.yaml @@ -0,0 +1,177 @@ +package: git +# Note: These slices do not currently include gitweb. + +essential: + - git_copyright + +slices: + bins: + # Pseudo slice to just get all binaries. + essential: + - git_core-bins + - git_net-bins + + core-bins: + essential: + # libc6 libcurl3-gnutls libexpat1 libpcre2-8-0 zlib1g perl liberror-perl git-man + - libc6_libs + - libpcre2-8-0_libs + - zlib1g_libs + # While CA certificates aren't necessarily needed for git, installing + contents: + /usr/bin/git: + /usr/bin/git-receive-pack: + /usr/bin/git-shell: + /usr/bin/git-upload-archive: + /usr/bin/git-upload-pack: + /usr/lib/git-core/git: + /usr/lib/git-core/git-add*: + /usr/lib/git-core/git-annotate: + /usr/lib/git-core/git-apply: + /usr/lib/git-core/git-archive: + /usr/lib/git-core/git-bisect*: + /usr/lib/git-core/git-blame: + /usr/lib/git-core/git-branch: + /usr/lib/git-core/git-bugreport: + /usr/lib/git-core/git-bundle: + /usr/lib/git-core/git-cat-file: + /usr/lib/git-core/git-check-*: + /usr/lib/git-core/git-checkout*: + /usr/lib/git-core/git-cherry*: + /usr/lib/git-core/git-clean: + /usr/lib/git-core/git-clone: + /usr/lib/git-core/git-column: + /usr/lib/git-core/git-commit*: + /usr/lib/git-core/git-config: + /usr/lib/git-core/git-count-objects: + /usr/lib/git-core/git-credential*: + /usr/lib/git-core/git-describe: + /usr/lib/git-core/git-diff: + /usr/lib/git-core/git-diff-*: + /usr/lib/git-core/git-difftool: + /usr/lib/git-core/git-difftool--helper: + /usr/lib/git-core/git-env--helper: + /usr/lib/git-core/git-fast-*: + /usr/lib/git-core/git-fetch*: + /usr/lib/git-core/git-filter-branch: + /usr/lib/git-core/git-fmt-merge-msg: + /usr/lib/git-core/git-for-each-*: + /usr/lib/git-core/git-format-patch: + /usr/lib/git-core/git-fsck*: + /usr/lib/git-core/git-gc: + /usr/lib/git-core/git-get-tar-commit-id: + /usr/lib/git-core/git-grep: + /usr/lib/git-core/git-hash-object: + /usr/lib/git-core/git-help: + /usr/lib/git-core/git-index-pack: + /usr/lib/git-core/git-init: + /usr/lib/git-core/git-init-db: + /usr/lib/git-core/git-interpret-trailers: + /usr/lib/git-core/git-log: + /usr/lib/git-core/git-ls-*: + /usr/lib/git-core/git-mailinfo: + /usr/lib/git-core/git-mailsplit: + /usr/lib/git-core/git-maintenance: + /usr/lib/git-core/git-merge: + /usr/lib/git-core/git-merge-base: + /usr/lib/git-core/git-merge-file: + /usr/lib/git-core/git-merge-index: + /usr/lib/git-core/git-merge-octopus: + /usr/lib/git-core/git-merge-one-file: + /usr/lib/git-core/git-merge-ours: + /usr/lib/git-core/git-merge-recursive: + /usr/lib/git-core/git-merge-resolve: + /usr/lib/git-core/git-merge-subtree: + /usr/lib/git-core/git-merge-tree: + /usr/lib/git-core/git-mktag: + /usr/lib/git-core/git-mktree: + /usr/lib/git-core/git-multi-pack-index: + /usr/lib/git-core/git-mv: + /usr/lib/git-core/git-name-rev: + /usr/lib/git-core/git-notes: + /usr/lib/git-core/git-pack-*: + /usr/lib/git-core/git-patch-id: + /usr/lib/git-core/git-prune: + /usr/lib/git-core/git-prune-packed: + /usr/lib/git-core/git-pull: + /usr/lib/git-core/git-push: + /usr/lib/git-core/git-quiltimport: + /usr/lib/git-core/git-range-diff: + /usr/lib/git-core/git-read-tree: + /usr/lib/git-core/git-rebase: + /usr/lib/git-core/git-receive-pack: + /usr/lib/git-core/git-reflog: + /usr/lib/git-core/git-remote: + /usr/lib/git-core/git-remote-ext: + /usr/lib/git-core/git-remote-fd: + /usr/lib/git-core/git-repack: + /usr/lib/git-core/git-replace: + /usr/lib/git-core/git-request-pull: + /usr/lib/git-core/git-rerere: + /usr/lib/git-core/git-reset: + /usr/lib/git-core/git-restore: + /usr/lib/git-core/git-rev-list: + /usr/lib/git-core/git-rev-parse: + /usr/lib/git-core/git-rm: + /usr/lib/git-core/git-send-pack: + /usr/lib/git-core/git-sh-i18n: + /usr/lib/git-core/git-sh-i18n--envsubst: + /usr/lib/git-core/git-sh-prompt: + /usr/lib/git-core/git-sh-setup: + /usr/lib/git-core/git-shell: + /usr/lib/git-core/git-shortlog: + /usr/lib/git-core/git-show: + /usr/lib/git-core/git-show-branch: + /usr/lib/git-core/git-show-index: + /usr/lib/git-core/git-show-ref: + /usr/lib/git-core/git-sparse-checkout: + /usr/lib/git-core/git-stage: + /usr/lib/git-core/git-stash: + /usr/lib/git-core/git-status: + /usr/lib/git-core/git-stripspace: + /usr/lib/git-core/git-submodule: + /usr/lib/git-core/git-submodule--helper: + /usr/lib/git-core/git-subtree: + /usr/lib/git-core/git-switch: + /usr/lib/git-core/git-symbolic-ref: + /usr/lib/git-core/git-tag: + /usr/lib/git-core/git-unpack-file: + /usr/lib/git-core/git-unpack-objects: + /usr/lib/git-core/git-update-index: + /usr/lib/git-core/git-update-ref: + /usr/lib/git-core/git-update-server-info: + /usr/lib/git-core/git-upload-archive: + /usr/lib/git-core/git-upload-pack: + /usr/lib/git-core/git-var: + /usr/lib/git-core/git-verify-commit: + /usr/lib/git-core/git-verify-pack: + /usr/lib/git-core/git-verify-tag: + /usr/lib/git-core/git-whatchanged: + /usr/lib/git-core/git-worktree: + /usr/lib/git-core/git-write-tree: + + daemon: + essential: + - git_core-bins + contents: + /usr/lib/git-core/git-daemon: + + net-bins: + # Binaries used with networking. Not needed if git is only being used for local + # items. + essential: + - git_core-bins + - libcurl3-gnutls_libs + - libexpat1_libs + # While ca-certificates_data isn't strictly a dependency, it is generally needed if you use https. + contents: + /usr/bin/git-receive-pack: + /usr/bin/git-upload-archive: + /usr/bin/git-upload-pack: + /usr/lib/git-core/git-http-*: + /usr/lib/git-core/git-imap-send: + /usr/lib/git-core/git-remote-*: + + copyright: + contents: + /usr/share/doc/git/copyright: diff --git a/slices/libcurl3-gnutls.yaml b/slices/libcurl3-gnutls.yaml new file mode 100644 index 000000000..09ddddf49 --- /dev/null +++ b/slices/libcurl3-gnutls.yaml @@ -0,0 +1,28 @@ +package: libcurl3-gnutls + +essential: + - libcurl3-gnutls_copyright + +slices: + libs: + essential: + - libbrotli1_libs + - libc6_libs + - libgnutls30_libs + - libgssapi-krb5-2_libs + - libidn2-0_libs + - libldap-2.5-0_libs + - libnettle8_libs + - libnghttp2-14_libs + - libpsl5_libs + - librtmp1_libs + - libssh-4_libs + - libzstd1_libs + - zlib1g_libs + contents: + /usr/lib/*-linux-*/libcurl-gnutls.so.3: + /usr/lib/*-linux-*/libcurl-gnutls.so.4*: + + copyright: + contents: + /usr/share/doc/libcurl3-gnutls/copyright: diff --git a/tests/spread/integration/git/task.yaml b/tests/spread/integration/git/task.yaml new file mode 100644 index 000000000..390d674d5 --- /dev/null +++ b/tests/spread/integration/git/task.yaml @@ -0,0 +1,30 @@ +summary: Integration tests for git + +environment: + EXTRA_SLICES: "" # No extra slices by default. + SLICE/core_bins: git_core-bins + SLICE/net_bins: git_net-bins + EXTRA_SLICES/net_bins: ca-certificates_data + SLICE/gitweb: git_gitweb + EXTRA_SLICES/gitweb: python3.10_standard curl_bins + +execute: | + rootfs="$(install-slices $SLICE $EXTRA_SLICES)" + + # Basic configuration of extra things not in the packages. + # Git uses /dev/null + mkdir -p "${rootfs}/dev" + mount --bind /dev "${rootfs}/dev" + + # Make domain resolution work + mkdir -p "${rootfs}/etc" + cp /etc/resolv.conf "${rootfs}/etc/resolv.conf" + + # Give root a homedir in the fs (for git config) + mkdir -p "${rootfs}/root" + + # Run the test script for this slice. + "./test-${SLICE}.sh" "${rootfs}" + + # Clean up + umount "${rootfs}/dev" diff --git a/tests/spread/integration/git/test-git_core-bins.sh b/tests/spread/integration/git/test-git_core-bins.sh new file mode 100755 index 000000000..4b23ce094 --- /dev/null +++ b/tests/spread/integration/git/test-git_core-bins.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# Basic tests for git core binaries. +rootfs="${1}" + +chroot "${rootfs}" git init +echo "Test" > "${rootfs}/test.txt" +chroot "${rootfs}" git add test.txt +chroot "${rootfs}" git config --global user.email "root@localhost" +chroot "${rootfs}" git config --global user.name "Test Runner" +chroot "${rootfs}" git commit -m test +[[ $(chroot "${rootfs}" git ls-files) == "test.txt" ]] diff --git a/tests/spread/integration/git/test-git_net-bins.sh b/tests/spread/integration/git/test-git_net-bins.sh new file mode 100755 index 000000000..91c44c8b7 --- /dev/null +++ b/tests/spread/integration/git/test-git_net-bins.sh @@ -0,0 +1,3 @@ +#!/bin/bash +# Test for network activity. +chroot "${1}" git clone --branch ubuntu-22.04 --depth 1 https://github.com/canonical/chisel-releases diff --git a/tests/spread/integration/libcurl3-gnutls/task.yaml b/tests/spread/integration/libcurl3-gnutls/task.yaml new file mode 100644 index 000000000..d2e37692b --- /dev/null +++ b/tests/spread/integration/libcurl3-gnutls/task.yaml @@ -0,0 +1,9 @@ +summary: Integration tests for libcurl3-gnutls + +execute: | + rootfs="$(install-slices libcurl3-gnutls_libs)" + + arch=$(uname -m) + + test -f ${rootfs}/usr/lib/${arch}-linux-gnu/libcurl-gnutls.so.3 + test -f ${rootfs}/usr/lib/${arch}-linux-gnu/libcurl-gnutls.so.4