Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makefile: switch to POSIX mode to handle errors #510

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Dec 2, 2020

  1. Makefile: switch to POSIX mode to handle errors

    from https://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html#tag_04_84_13_03
    
    > .POSIX
    >
    > The application shall ensure that this special target is specified without prerequisites
    > or commands. If it appears as the first non-comment line in the makefile, make shall
    > process the makefile as specified by this section; otherwise, the behavior of make is
    > unspecified.
    
    Running the makefile with `.POSIX` runs shells with the `-e` options, which helps with
    handling errors; without this, make completes "succesfully", even shell commands in a
    target fail, for example:
    
        make[2]: Leaving directory '/home/ubuntu/workspace/docker-ce-packaging_PR-504/engine'
        mkdir -p build/linux/docker
        cp /home/ubuntu/workspace/docker-ce-packaging_PR-504/cli/build/docker build/linux/docker/
        for f in dockerd containerd ctr containerd-shim containerd-shim-runc-v2 docker-init docker-proxy runc; do \
        	cp -L /home/ubuntu/workspace/docker-ce-packaging_PR-504/engine/bundles/binary-daemon/$f build/linux/docker/$f; \
        done
        cp: cannot stat '/home/ubuntu/workspace/docker-ce-packaging_PR-504/engine/bundles/binary-daemon/containerd-shim-runc-v2': No such file or directory
    
    With this patch applied, the target succesfully detects the failure (changed one filename to be invalid for testing):
    
        make[1]: Entering directory '/docker/static'
        mkdir -p build/linux/docker
        cp /docker/src/github.com/docker/cli/build/docker build/linux/docker/
        for f in dockerd containerd ctr containerd-shim containerd-shim-runc-v99 docker-init docker-proxy runc; do \
            cp -L /docker/src/github.com/docker/docker/bundles/binary-daemon/$f build/linux/docker/$f; \
        done
        cp: can't stat '/docker/src/github.com/docker/docker/bundles/binary-daemon/containerd-shim-runc-v99': No such file or directory
        make[1]: *** [Makefile:30: static-linux] Error 1
        make[1]: Leaving directory '/docker/static'
        make: *** [Makefile:70: static] Error 2
    
    Note that this patch does not change behavior on macOS, which runs an older version of GNU make, that
    does not support these options.
    
    Signed-off-by: Sebastiaan van Stijn <[email protected]>
    thaJeztah committed Dec 2, 2020
    Configuration menu
    Copy the full SHA
    8d342bd View commit details
    Browse the repository at this point in the history