diff --git a/pkg/buildx/deb/rules b/pkg/buildx/deb/rules index a2320825..b3969487 100644 --- a/pkg/buildx/deb/rules +++ b/pkg/buildx/deb/rules @@ -28,7 +28,7 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D -m 0755 /usr/libexec/docker/cli-plugins/docker-buildx debian/docker-buildx-plugin/usr/libexec/docker/cli-plugins/docker-buildx + install -D -p -m 0755 /usr/libexec/docker/cli-plugins/docker-buildx debian/docker-buildx-plugin/usr/libexec/docker/cli-plugins/docker-buildx override_dh_installinit: dh_installinit diff --git a/pkg/compose/deb/rules b/pkg/compose/deb/rules index f3a2a591..d0a344d3 100644 --- a/pkg/compose/deb/rules +++ b/pkg/compose/deb/rules @@ -23,7 +23,7 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D -m 0755 /usr/libexec/docker/cli-plugins/docker-compose debian/docker-compose-plugin/usr/libexec/docker/cli-plugins/docker-compose + install -D -p -m 0755 /usr/libexec/docker/cli-plugins/docker-compose debian/docker-compose-plugin/usr/libexec/docker/cli-plugins/docker-compose override_dh_installinit: dh_installinit diff --git a/pkg/containerd/deb/rules b/pkg/containerd/deb/rules index c211e224..5a139655 100755 --- a/pkg/containerd/deb/rules +++ b/pkg/containerd/deb/rules @@ -44,7 +44,7 @@ man: ## Create containerd man pages # copy the generated man pages instead of using "make install-man" to allow # dh_installman doing its magic install -d man - install -D -m 0644 /go/src/github.com/containerd/containerd/man/* man + install -D -p -m 0644 /go/src/github.com/containerd/containerd/man/* man # force packages to be built with xz compression, as Ubuntu 21.10 and up use # zstd compression, which is non-standard, and breaks 'dpkg-sig --verify' @@ -65,6 +65,6 @@ override_dh_systemd_start: override_dh_auto_install: binaries bin/runc man mkdir -p debian/containerd.io/usr/bin - install -D -m 0755 bin/* debian/containerd.io/usr/bin - install -D -m 0644 /common/containerd.service debian/containerd.io/lib/systemd/system/containerd.service - install -D -m 0644 /common/containerd.toml debian/containerd.io/etc/containerd/config.toml + install -D -p -m 0755 bin/* debian/containerd.io/usr/bin + install -D -p -m 0644 /common/containerd.service debian/containerd.io/lib/systemd/system/containerd.service + install -D -p -m 0644 /common/containerd.toml debian/containerd.io/etc/containerd/config.toml diff --git a/pkg/containerd/rpm/containerd.spec b/pkg/containerd/rpm/containerd.spec index 78d038a0..a9c3eb8f 100644 --- a/pkg/containerd/rpm/containerd.spec +++ b/pkg/containerd/rpm/containerd.spec @@ -110,9 +110,9 @@ GO111MODULE=auto make -C /go/src/github.com/opencontainers/runc BINDIR=%{_buildd %install cd %{_builddir} mkdir -p %{buildroot}%{_bindir} -install -D -m 0755 bin/* %{buildroot}%{_bindir} -install -D -m 0644 %{S:1} %{buildroot}%{_unitdir}/containerd.service -install -D -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/containerd/config.toml +install -D -p -m 0755 bin/* %{buildroot}%{_bindir} +install -D -p -m 0644 %{S:1} %{buildroot}%{_unitdir}/containerd.service +install -D -p -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/containerd/config.toml # install manpages, taking into account that not all sections may be present for i in $(seq 1 8); do diff --git a/pkg/credential-helpers/deb/rules b/pkg/credential-helpers/deb/rules index 53f47357..ff1f1e98 100644 --- a/pkg/credential-helpers/deb/rules +++ b/pkg/credential-helpers/deb/rules @@ -18,8 +18,8 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D bin/docker-credential-secretservice debian/docker-credential-secretservice/usr/bin/docker-credential-secretservice - install -D bin/docker-credential-pass debian/docker-credential-pass/usr/bin/docker-credential-pass + install -D -p -m 0755 bin/docker-credential-secretservice debian/docker-credential-secretservice/usr/bin/docker-credential-secretservice + install -D -p -m 0755 bin/docker-credential-pass debian/docker-credential-pass/usr/bin/docker-credential-pass override_dh_auto_test: ver="$$(bin/docker-credential-secretservice version)"; \ diff --git a/pkg/docker-cli/deb/docker-ce-cli.bash-completion b/pkg/docker-cli/deb/docker-ce-cli.bash-completion deleted file mode 100644 index 009937f5..00000000 --- a/pkg/docker-cli/deb/docker-ce-cli.bash-completion +++ /dev/null @@ -1 +0,0 @@ -cli/contrib/completion/bash/docker diff --git a/pkg/docker-cli/deb/rules b/pkg/docker-cli/deb/rules index 63b597f1..7da1468e 100644 --- a/pkg/docker-cli/deb/rules +++ b/pkg/docker-cli/deb/rules @@ -9,8 +9,7 @@ override_dh_auto_build: mkdir -p /go/src/github.com/docker && \ ln -snf $(CURDIR)/cli /go/src/github.com/docker/cli && \ cd /go/src/github.com/docker/cli && \ - VERSION=$(VERSION) GITCOMMIT=$(REVISION) LDFLAGS='' GO_LINKMODE=dynamic ./scripts/build/binary && \ - DISABLE_WARN_OUTSIDE_CONTAINER=1 LDFLAGS='' make manpages shell-completion + make DISABLE_WARN_OUTSIDE_CONTAINER=1 VERSION=$(VERSION) GITCOMMIT=$(REVISION) LDFLAGS='' dynbinary manpages shell-completion override_dh_auto_test: ver="$$(cli/build/docker --version)"; \ @@ -26,9 +25,39 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D -m 0644 cli/build/completion/fish/docker.fish debian/docker-ce-cli/usr/share/fish/vendor_completions.d/docker.fish - install -D -m 0644 cli/build/completion/zsh/_docker debian/docker-ce-cli/usr/share/zsh/vendor-completions/_docker - install -D -m 0755 cli/build/docker debian/docker-ce-cli/usr/bin/docker + install -D -p -m 0755 cli/build/docker debian/docker-ce-cli/usr/bin/docker + + # docker-ce-cli shell-completion + # + # We are manually installing bash completions instead of using the "dh_bash-completion" + # debhelper (see [1]); dh_bash-completion only supports bash, and none of the other shells, + # which meant that we had to install 2 out of 3 manually, which was confusing ("what about + # Bash?"). Given that locations to install these completion scripts are well-known, we + # can safely use the manual approach for installing them. + # + # In future, can consider using "dh_shell_completions" (see [2]), which supports bash, zsh + # and fish. However, "dh_shell_completions" is still really premature, and not available + # in stable releases. So, currently, adding it as build-dependency, especially since + # these are well-known, may not be a good choice, but we can revisit that in future + # if things mature in this area. + # + # Observant readers may notice that we don't include PowerShell completion in + # this list (even though Cobra provides them, and PowerShell *can* be installed + # oon Linux). The short story is that there's no well-defined location, nor + # a well-defined approach for this. + # + # The PowerShell maintainers (see [3]) considering that no completion scripts + # are needed for anything following the PowerShell specifications, and for + # anything else, PowerShell is capable enough to use zsh and bash completions. + # + # All of the above taken into account; it's fuzzy enough to just leave it as + # an exercise for the user to decide what to do. + # + # [1]: https://manpages.debian.org/bookworm/bash-completion/dh_bash-completion.1.en.html + # [2]: https://manpages.debian.org/testing/dh-shell-completions/dh_shell_completions.1.en.html + # [3]: https://github.com/PowerShell/PowerShell/issues/17582 + install -D -p -m 0644 cli/build/completion/fish/docker.fish debian/docker-ce-cli/usr/share/fish/vendor_completions.d/docker.fish + install -D -p -m 0644 cli/build/completion/zsh/_docker debian/docker-ce-cli/usr/share/zsh/vendor-completions/_docker override_dh_installinit: dh_installinit diff --git a/pkg/docker-cli/rpm/docker-ce-cli.spec b/pkg/docker-cli/rpm/docker-ce-cli.spec index 5b508a60..e2589345 100644 --- a/pkg/docker-cli/rpm/docker-ce-cli.spec +++ b/pkg/docker-cli/rpm/docker-ce-cli.spec @@ -46,7 +46,7 @@ mkdir -p /go/src/github.com/docker rm -f /go/src/github.com/docker/cli ln -snf ${RPM_BUILD_DIR}/src/cli /go/src/github.com/docker/cli pushd /go/src/github.com/docker/cli -VERSION=%{_origversion} GITCOMMIT=%{_commit} GO_LINKMODE=dynamic ./scripts/build/binary && DISABLE_WARN_OUTSIDE_CONTAINER=1 make manpages shell-completion +make DISABLE_WARN_OUTSIDE_CONTAINER=1 VERSION=%{_origversion} GITCOMMIT=%{_commit} dynbinary manpages shell-completion popd %check @@ -55,16 +55,12 @@ ver="$(cli/build/docker --version)"; \ %install # install binary -install -d ${RPM_BUILD_ROOT}%{_bindir} -install -p -m 755 cli/build/docker ${RPM_BUILD_ROOT}%{_bindir}/docker +install -D -p -m 755 cli/build/docker ${RPM_BUILD_ROOT}%{_bindir}/docker # add bash, zsh, and fish completions -install -d ${RPM_BUILD_ROOT}%{_datadir}/bash-completion/completions -install -d ${RPM_BUILD_ROOT}%{_datadir}/zsh/vendor-completions -install -d ${RPM_BUILD_ROOT}%{_datadir}/fish/vendor_completions.d -install -p -m 644 cli/build/completion/bash/docker ${RPM_BUILD_ROOT}%{_datadir}/bash-completion/completions/docker -install -p -m 644 cli/build/completion/zsh/_docker ${RPM_BUILD_ROOT}%{_datadir}/zsh/vendor-completions/_docker -install -p -m 644 cli/build/completion/fish/docker.fish ${RPM_BUILD_ROOT}%{_datadir}/fish/vendor_completions.d/docker.fish +install -D -p -m 644 cli/build/completion/bash/docker ${RPM_BUILD_ROOT}%{_datadir}/bash-completion/completions/docker +install -D -p -m 644 cli/build/completion/zsh/_docker ${RPM_BUILD_ROOT}%{_datadir}/zsh/vendor-completions/_docker +install -D -p -m 644 cli/build/completion/fish/docker.fish ${RPM_BUILD_ROOT}%{_datadir}/fish/vendor_completions.d/docker.fish # install man-pages for sec in $(seq 1 9); do @@ -77,7 +73,7 @@ done mkdir -p build-docs for cli_file in LICENSE MAINTAINERS NOTICE README.md; do - cp "cli/$cli_file" "build-docs/$cli_file" + install -D -p -m 644 "cli/$cli_file" "build-docs/$cli_file" done %files diff --git a/pkg/docker-cli/scripts/pkg-deb-build.sh b/pkg/docker-cli/scripts/pkg-deb-build.sh index 59e88616..66087cd1 100755 --- a/pkg/docker-cli/scripts/pkg-deb-build.sh +++ b/pkg/docker-cli/scripts/pkg-deb-build.sh @@ -67,6 +67,6 @@ mkdir -p "${pkgoutput}" set -x -chmod -x debian/control debian/docs debian/*.bash-completion debian/*.manpages +chmod -x debian/control debian/docs debian/*.manpages VERSION=${GENVER_VERSION} REVISION=${GENVER_COMMIT} dpkg-buildpackage $PKG_DEB_BUILDFLAGS --host-arch $(xx-info debian-arch) --target-arch $(xx-info debian-arch) cp /root/docker-* "${pkgoutput}"/ diff --git a/pkg/docker-engine/deb/rules b/pkg/docker-engine/deb/rules index 7a5cf59a..95fff1de 100755 --- a/pkg/docker-engine/deb/rules +++ b/pkg/docker-engine/deb/rules @@ -28,16 +28,16 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D -m 0644 /common/systemd/docker.service debian/docker-ce/lib/systemd/system/docker.service - install -D -m 0644 /common/systemd/docker.socket debian/docker-ce/lib/systemd/system/docker.socket - install -D -m 0755 $(shell readlink -e engine/bundles/dynbinary-daemon/dockerd) debian/docker-ce/usr/bin/dockerd - install -D -m 0755 $(shell readlink -e engine/bundles/dynbinary-daemon/docker-proxy) debian/docker-ce/usr/bin/docker-proxy - install -D -m 0755 /usr/local/bin/docker-init debian/docker-ce/usr/libexec/docker/docker-init + install -D -p -m 0644 /common/systemd/docker.service debian/docker-ce/lib/systemd/system/docker.service + install -D -p -m 0644 /common/systemd/docker.socket debian/docker-ce/lib/systemd/system/docker.socket + install -D -p -m 0755 $(shell readlink -e engine/bundles/dynbinary-daemon/dockerd) debian/docker-ce/usr/bin/dockerd + install -D -p -m 0755 $(shell readlink -e engine/bundles/dynbinary-daemon/docker-proxy) debian/docker-ce/usr/bin/docker-proxy + install -D -p -m 0755 /usr/local/bin/docker-init debian/docker-ce/usr/libexec/docker/docker-init # docker-ce-rootless-extras install - install -D -m 0755 /usr/local/bin/rootlesskit debian/docker-ce-rootless-extras/usr/bin/rootlesskit - install -D -m 0755 engine/contrib/dockerd-rootless.sh debian/docker-ce-rootless-extras/usr/bin/dockerd-rootless.sh - install -D -m 0755 engine/contrib/dockerd-rootless-setuptool.sh debian/docker-ce-rootless-extras/usr/bin/dockerd-rootless-setuptool.sh + install -D -p -m 0755 /usr/local/bin/rootlesskit debian/docker-ce-rootless-extras/usr/bin/rootlesskit + install -D -p -m 0755 engine/contrib/dockerd-rootless.sh debian/docker-ce-rootless-extras/usr/bin/dockerd-rootless.sh + install -D -p -m 0755 engine/contrib/dockerd-rootless-setuptool.sh debian/docker-ce-rootless-extras/usr/bin/dockerd-rootless-setuptool.sh # TODO: how can we install vpnkit? override_dh_installinit: diff --git a/pkg/docker-engine/rpm/docker-ce.spec b/pkg/docker-engine/rpm/docker-ce.spec index d0dff700..25dfaeca 100644 --- a/pkg/docker-engine/rpm/docker-ce.spec +++ b/pkg/docker-engine/rpm/docker-ce.spec @@ -88,8 +88,8 @@ install -D -p -m 0755 $(readlink -f engine/bundles/dynbinary-daemon/docker-proxy install -D -p -m 0755 /usr/local/bin/docker-init ${RPM_BUILD_ROOT}%{_libexecdir}/docker/docker-init # install systemd scripts -install -D -m 0644 engine/contrib/init/systemd/docker.service ${RPM_BUILD_ROOT}%{_unitdir}/docker.service -install -D -m 0644 engine/contrib/init/systemd/docker.socket ${RPM_BUILD_ROOT}%{_unitdir}/docker.socket +install -D -p -m 0644 engine/contrib/init/systemd/docker.service ${RPM_BUILD_ROOT}%{_unitdir}/docker.service +install -D -p -m 0644 engine/contrib/init/systemd/docker.socket ${RPM_BUILD_ROOT}%{_unitdir}/docker.socket # install manpages make -C ${RPM_BUILD_DIR}/src/engine/man DESTDIR=${RPM_BUILD_ROOT} mandir=%{_mandir} install diff --git a/pkg/sbom/deb/rules b/pkg/sbom/deb/rules index 9ffb368f..27099cf1 100644 --- a/pkg/sbom/deb/rules +++ b/pkg/sbom/deb/rules @@ -26,7 +26,7 @@ override_dh_dwz: @# https://packages.ubuntu.com/debhelper override_dh_auto_install: - install -D -m 0755 /usr/libexec/docker/cli-plugins/docker-sbom debian/docker-sbom-plugin/usr/libexec/docker/cli-plugins/docker-sbom + install -D -p -m 0755 /usr/libexec/docker/cli-plugins/docker-sbom debian/docker-sbom-plugin/usr/libexec/docker/cli-plugins/docker-sbom override_dh_installinit: dh_installinit diff --git a/pkg/scan/deb/rules b/pkg/scan/deb/rules index 5359b35b..a52f4d40 100644 --- a/pkg/scan/deb/rules +++ b/pkg/scan/deb/rules @@ -19,7 +19,7 @@ override_dh_strip: # Go has lots of problems with stripping, so just don't override_dh_auto_install: - install -D -m 0755 /usr/libexec/docker/cli-plugins/docker-scan debian/docker-scan-plugin/usr/libexec/docker/cli-plugins/docker-scan + install -D -p -m 0755 /usr/libexec/docker/cli-plugins/docker-scan debian/docker-scan-plugin/usr/libexec/docker/cli-plugins/docker-scan override_dh_installinit: dh_installinit