Skip to content

Commit

Permalink
feat: add git to ubuntu-22.04 release
Browse files Browse the repository at this point in the history
  • Loading branch information
lengau committed Oct 18, 2024
1 parent ccc3bb5 commit e9812a9
Show file tree
Hide file tree
Showing 6 changed files with 258 additions and 0 deletions.
177 changes: 177 additions & 0 deletions slices/git.yaml
Original file line number Diff line number Diff line change
@@ -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:
28 changes: 28 additions & 0 deletions slices/libcurl3-gnutls.yaml
Original file line number Diff line number Diff line change
@@ -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:
30 changes: 30 additions & 0 deletions tests/spread/integration/git/task.yaml
Original file line number Diff line number Diff line change
@@ -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"
11 changes: 11 additions & 0 deletions tests/spread/integration/git/test-git_core-bins.sh
Original file line number Diff line number Diff line change
@@ -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" ]]
3 changes: 3 additions & 0 deletions tests/spread/integration/git/test-git_net-bins.sh
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions tests/spread/integration/libcurl3-gnutls/task.yaml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit e9812a9

Please sign in to comment.