summaryrefslogtreecommitdiff
path: root/Makefile
Commit message (Collapse)AuthorAge
* Makefile: Add stderr redirect to HAS_PYTHON3 definitionW. Trevor King2018-05-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For two reasons: * When a system is missing python3, we don't need to spam them with "Command not found" in their stderr. * Without the redirect, GNU Make (at least version 4.2.1) is overly clever and tries to invoke the command itself, not realizing that it's a shell builtin [1]. $ make --version GNU Make 4.2.1 Built for aarch64-unknown-linux-gnu Copyright (C) 1988-2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ cat Makefile PYTHON3_A := $(shell command -v python3) PYTHON3_B := $(shell command -v python3 2>/dev/null) test: @echo "SHELL: '$(SHELL)'" @echo "PYTHON3_A: '$(PYTHON3_A)'" @echo "PYTHON3_B: '$(PYTHON3_B)'" $ make make: command: Command not found SHELL: '/bin/sh' PYTHON3_A: '' PYTHON3_B: '/usr/bin/python3' By adding the redirect we actually hit the shell and can successfully invoke command. [1]: https://stackoverflow.com/a/17550243 Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #856 Approved by: rhatdan
* Cleanup man pagesDaniel J Walsh2018-05-30
| | | | | | | | | | Format md files to work properly when converted to man pages. Add sed command to cleanup table in podman man page. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Closes: #842 Approved by: mheon
* Remove varlink's generated Go filebaude2018-05-29
| | | | | | | Signed-off-by: baude <bbaude@redhat.com> Closes: #840 Approved by: baude
* Bump gitvalidation epochMatthew Heon2018-05-25
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* use $GO env-var instead of hard-coded go binaryLokesh Mandvekar2018-05-21
| | | | | | | Signed-off-by: Lokesh Mandvekar <lsm5@fedoraproject.org> Closes: #817 Approved by: TomSweeneyRedHat
* tidy up the copr specbaude2018-05-21
| | | | | | | | | | | | on os's (like centos) where python3 might not be installed, do not attempt to build the python3 varlink client. varlink python is only supported on python3. also, change the conditions for f28 to match the fedora official specs. Signed-off-by: baude <bbaude@redhat.com> Closes: #813 Approved by: baude
* Tighten the security on the podman varlink socketDaniel J Walsh2018-05-19
| | | | | | | | | | | We only want root to be allowed to access this socket. Also move socket to /run/podman directory. This requires us to drop a podman.conf tmpfiles.d file. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Closes: #806 Approved by: mheon
* Update gitvalidation epochMatthew Heon2018-05-18
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* hooks/docs: Add oci-hooks.5 and per-package man page buildingW. Trevor King2018-05-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to reference the hooks docs from podman(1) in a way that will survive system installation. The downside is that the GitHub rendered pages become less usable, now that we can no longer embed links as freely as we could before. I've followed the "Sections within a manual page" suggestions from [1]. locale(7) is [2], which is Linux-specific. Even section numbering is platform-dependent [3], so it's unlikely that these external man references are particularly portable. Platform packagers can adjust our local references to match their target system, but that leaves the GitHub rendering in an awkward place. For now, I think a Linux-centric GitHub rendering without clickable links may be the best we can do without moving away from go-md2man. As far as I can tell, there's not a nice way to get go-md2man to wrap the links in SEE ALSO without sometimes hyphenating a URL (which makes it harder for man-page readers to copy/paste those links into their browser). I've also fixed some "extention" -> "extension" typos. [1]: http://man7.org/linux/man-pages/man7/man-pages.7.html [2]: http://man7.org/linux/man-pages/man7/locale.7.html [3]: https://en.wikipedia.org/wiki/Man_page#Manual_sections Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #772 Approved by: mheon
* Makefile: Use ?= for shell variables (ISODATE, etc.)W. Trevor King2018-05-17
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously, Make would execute these shell commands even if we didn't need the resulting variable. With ?='s recursive expansion [1], we only expand the variable when it's consumed. For example, the ISODATE variable is only needed in the recipe for the changelog target, so most Make invocations won't need the value, and the computation is just making whatever Make actually is doing slower. I've shifted the GIT_COMMIT and BUILD_INFO values over to LDFLAGS_PODMAN, because the test/*/* targets don't care about those. I've also moved the Go-specific -ldflags from the variables into the recipes themselves, because callers probably expect C semantics for LDFLAGS and not Go's wrapper. That means that there's no longer a need for the LDFLAGS/BASE_LDFLAGS separation, so I'm just using LDFLAGS (and LDFLAGS_PODMAN) now. That reduces the declared variables to just LDFLAGS_PODMAN, so I've shifted that declaration up to get it closer to its GIT_COMMIT and BUILD_INFO precursors. [1]: https://www.gnu.org/software/make/manual/html_node/Setting.html Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #777 Approved by: rhatdan
* Makefile: Respect GOBINW. Trevor King2018-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And use 'go env GOBIN' to detect the user's existing preference. From [1]: > The bin directory holds compiled commands. Each command is named > for its source directory, but only the final element, not the entire > path. That is, the command with source in DIR/src/foo/quux is > installed into DIR/bin/quux, not DIR/bin/foo/quux. The "foo/" > prefix is stripped so that you can add DIR/bin to your PATH to get > at the installed commands. If the GOBIN environment variable is > set, commands are installed to the directory it names instead of > DIR/bin. GOBIN must be an absolute path. > ... > Go searches each directory listed in GOPATH to find source code, but > new packages are always downloaded into the first directory in the > list. So if GOBIN is set, it will be non-empty, and we can use $(GOBIN)/... If GOBIN is unset, 'go env GOBIN' will return an empty string (as it does on Travis [2]). In that case, I'm assuming that the package in question is in the first directory in GOPATH and using the new FIRST_GOPATH (firstword and subst are documented in [3]). That's probably fairly safe, since our previous GOPATH handling assumed it only contained a single path, and nobody was complaining about that. Using ?= allows us to skip the 'dirname' call if we end up not needing GOPKGBASEDIR [4] (e.g. for the 'help' target). The recursive expansion could cause an issue if the result of the shell expansions included a '$', but those seem unlikely in GOPKGBASEDIR, GOMD2MAN, or the manpage paths. I haven't used ?= for GOBIN, because we'll always need the expanded value for the if check. Using GOMD2MAN allows us to collapse old ||-based recipe into a less confusing invocation. And using a static pattern rule [5] for $(MANPAGES) lets us write a single rule to handle both section 1 and section 5. While I was updating the GOPATH handling, I moved .gopathok from the possibly-shared $(GOPATH)/.gopathok to the definitely-specific-to-this-project .gopathok. That may cause some issues if you rebuild after changing your GOPATH without calling 'clean', but I don't expect folks to change their GOPATH frequently. And the old approach would fail if different consumers were also using the same flag path to mean something else (as CRI-O does [6]). As part of cleaning up .gopathok, I've also collapsed clean's rm calls into a single invocation. That will give us the same results with less process setup/teardown penalties. [1]: https://golang.org/cmd/go/#hdr-GOPATH_environment_variable [2]: https://travis-ci.org/projectatomic/libpod/jobs/379345071#L459 [3]: https://www.gnu.org/software/make/manual/html_node/Text-Functions.html [4]: https://www.gnu.org/software/make/manual/html_node/Setting.html [5]: https://www.gnu.org/software/make/manual/html_node/Static-Usage.html [6]: https://github.com/kubernetes-incubator/cri-o/blob/v1.10.1/Makefile#L62 Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #774 Approved by: mheon
* Makefile: Drop find-godeps.sh for podman targetW. Trevor King2018-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We inherited this from a031b83a (Initial checkin from CRI-O repo, 2017-11-01), but: * The output is actually going into bin/podman, so Make will rebuild this target every time. You'll never be able to save compilation because the target is newer than all the prerequisites. * Make expands prerequisites immediately when loading a Makefile [1], and on my wimpy Chromebook SD Card, this is *slow*: $ time hack/find-godeps.sh ~/.local/lib/go/src/github.com/projectatomic/libpod cmd/podman github.com/projectatomic/libpod ... real 0m56.225s user 0m44.918s sys 0m21.918s * Go is pretty good at this on its own, so having make call 'go build' every time will almost certainly be faster than us trying to mimic this in a shell script. And by punting to Go in the recipe, Make invocations that do not need the podman target (e.g. 'make help') can skip the dependency lookup entirely. [1]: https://www.gnu.org/software/make/manual/html_node/Reading-Makefiles.html#Rule-Definition Signed-off-by: W. Trevor King <wking@tremily.us> Closes: #776 Approved by: rhatdan
* Refactor libpod python varlink bindingsJhon Honce2018-05-16
| | | | | | | | | | | | | | | | | | | - More pythonic - Leverage context managers to help with socket leaks - Add system unittest's - Add image unittest's - Add container unittest's - Add models for system, containers and images, and their collections - Add helper functions for datetime parsing/formatting - GetInfo() implemented - Add support for setuptools - Update documentation - Support for Python 3.4-3.6 Signed-off-by: Jhon Honce <jhonce@redhat.com> Closes: #748 Approved by: baude
* Update gitvalidation epochMatthew Heon2018-05-11
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Generate varlink API documentation automaticallybaude2018-05-08
| | | | | | | | | | Using varlink's idl parser, we generate API documentation for the podman API relying on the .varlink file as the source. Signed-off-by: baude <bbaude@redhat.com> Closes: #734 Approved by: baude
* Bump gitvalidation epochMatthew Heon2018-05-04
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Add directory for systemd socket and service if not presentTomSweeneyRedHat2018-05-03
| | | | | | | Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com> Closes: #717 Approved by: baude
* correct varlink command in service filebaude2018-04-30
| | | | | | | | | | The struct of the varlink command changed to accept a URI as input. This was never updated in the service file Signed-off-by: baude <bbaude@redhat.com> Closes: #691 Approved by: mheon
* Bump gitvalidation epochMatthew Heon2018-04-27
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Use buildah commit and bud in podmanbaude2018-04-27
| | | | | | | | | | | Vendor in buildah and use as much of commit and bug as possible for podman build and commit. Resolves #586 Signed-off-by: baude <bbaude@redhat.com> Closes: #681 Approved by: mheon
* varlink imagesbaude2018-04-26
| | | | | | | | | | | | | implement varlink image functions for working with libpod with the exception of a couple due to incompletions on the libpod side of things (build). also, created a first pass at a libpodpy package which will stand as a client to working with libpod's varlink methods using python. Signed-off-by: baude <bbaude@redhat.com> Closes: #669 Approved by: baude
* updated epoch for bad dcobaude2018-04-25
| | | | | | | Signed-off-by: baude <bbaude@redhat.com> Closes: #673 Approved by: mheon
* Only generate the varlink glue code if needed and from the vendor dirHarald Hoyer2018-04-25
| | | | | Closes: #671 Approved by: baude
* Makefile; make podman depend on varlink_generateGiuseppe Scrivano2018-04-24
| | | | | | | Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com> Closes: #663 Approved by: baude
* Merge pull request #641 from nathwill/man-libpodDaniel J Walsh2018-04-23
|\ | | | | add libpod.conf man page (closes #537)
| * add libpod.conf man pageNathan Williams2018-04-21
| | | | | | | | Signed-off-by: Nathan Williams <nath.e.will@gmail.com>
* | Initial varlink implementationbaude2018-04-23
| | | | | | | | | | | | | | Signed-off-by: baude <bbaude@redhat.com> Closes: #627 Approved by: mheon
* | Bump gitvalidation epochMatthew Heon2018-04-20
| | | | | | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* | Add make .git targetbaude2018-04-20
|/ | | | | | | | | Runs gomfmt and gitvalidation Signed-off-by: baude <bbaude@redhat.com> Closes: #589 Approved by: mheon
* Bump gitvalidation epochMatthew Heon2018-04-13
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Bump gitvalidation epochMatthew Heon2018-04-05
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Makefile: Fix typo podmon -> podmanMarcos Paulo de Souza2018-04-02
| | | | | | | | | This typo was introduced in 3aa63b2b Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com> Closes: #578 Approved by: rhatdan
* Bump gitvalidation epochMatthew Heon2018-03-29
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Bump gitvalidation epochMatthew Heon2018-03-23
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Makefile: add changelog targetValentin Rothberg2018-03-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Maintaining a changelog for each new version or release of Podman helps users to quickly skim for new changes. Add a `make changelog` target to facilitate creating a new log. There are two env variables to control the base and target commit for the new log. The output gets prepended to the changelog.txt file, which is a textfile in following format: - Changelog for $(CHANGELOG_TARGET) (ISO-8601 DATE): * Commit subject * Commit subject... Notice that the list of commit subjects excludes merge commits, and can be manually modified after generation if needed. `CHANGELOG_BASE=v0.3.2 CHANGELOG_TARGET=v0.3.3 make changelog` would generate the following shortened output to the changelog.txt file: Changelog for v0.3.3 (2018-03-17): * Bump to v0.3.3 * Fix build after c/image changes * Update containers/image * Fix E2E tests * Address review comments * Fix E2E tests * Add restart to main podman manpage * Add podman restart to podman bash completions and commands Signed-off-by: Valentin Rothberg <vrothberg@suse.com>
* Bump gitvalidation epochMatthew Heon2018-03-16
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* make shell: build, test and run in a containerValentin Rothberg2018-03-13
| | | | | | | | | | | | | Some of the paths in the e2e tests are hard-coded, which complicates testing a bit on systems with different paths for runc, conmon, etc. Add a make shell target to the Makefile, which will build and run the libpod containers, giving a shell to the user in which podman can be built, run, tested etc. Signed-off-by: Valentin Rothberg <vrothberg@suse.com> Closes: #481 Approved by: rhatdan
* Update gitvalidation epochMatthew Heon2018-03-09
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Update test-related makefile targetsMatthew Heon2018-03-08
| | | | | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #460 Approved by: rhatdan
* Do not strip binariesbaude2018-03-07
| | | | | | | | | | We should not strip binaries in Make. That should be left to packages. Also, we can not debug stripped binaries so this allows us to debug better as well. Signed-off-by: baude <bbaude@redhat.com> Closes: #459 Approved by: rhatdan
* Change standard config path and add override configMatthew Heon2018-03-06
| | | | | | | | | | | | | | The standard config has moved to /usr/share/containers/ per discussion. An override configuration file is allowed at the previous /etc/containers/ location. This override will be used in place of the normal config if both are present, and exists to override distro packaged configs without modifying the standard config. Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #430 Approved by: rhatdan
* Add support to load runtime configuration from config fileMatthew Heon2018-03-06
| | | | | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #430 Approved by: rhatdan
* networking.go tweak iptables functionsbaude2018-03-03
| | | | | | | | | | Took duplicated code and merged it into the helper function so only a single exec was executed. Signed-off-by: baude <bbaude@redhat.com> Closes: #446 Approved by: mheon
* Bump to v0.3.2-devMatthew Heon2018-03-02
| | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
* Re-enable copr buildsbaude2018-02-28
| | | | | | New structure for copr builds which hopefully is more stable Signed-off-by: baude <bbaude@redhat.com>
* Run podman inside a podman containerbaude2018-02-16
| | | | | | | | | | | | | | | | | We should be able to run nested podman containers in particular for our testing environment. i.e. eat our own dog food. Some privileges had to be corrected in order for this to work correctly. Added a third papr target that runs podman tests inside podman. I marked the test as not required right now as we get more confident in the results Signed-off-by: baude <bbaude@redhat.com> Closes: #340 Approved by: rhatdan
* Remove last traces of old version schemeMatthew Heon2018-02-16
| | | | | | | Signed-off-by: Matthew Heon <matthew.heon@gmail.com> Closes: #345 Approved by: rhatdan
* Revert to md2man masterbaude2018-02-10
| | | | | | | | | | | | Upstream md2man is working again. We can revert to using it instead of a specific commit id. Also, add make integration.CentOS for testing Signed-off-by: baude <bbaude@redhat.com> Closes: #320 Approved by: rhatdan
* libpod/finished_amd64.go -> libpod/finished64.gobaude2018-02-09
| | | | | | | | | | | | Rename finished_amd64 to finished64.go to more accurately reflect that it covers all 64bit arches. Also, bumped the EPOCH for gitvalidation to speed up validations. Signed-off-by: baude <bbaude@redhat.com> Closes: #318 Approved by: mheon
* Final ginkgo migrationbaude2018-02-08
| | | | | | | | | | | | | | | Completion of the migration from bats to ginkgo. This includes: * load * mount * pause * port * run_networking * search Note: build will be done within a different PR Signed-off-by: baude <bbaude@redhat.com>