Commit Graph

590 Commits

Author SHA1 Message Date
Daniel J Walsh 5f274e45f2
Run make codespell
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-03-21 16:00:54 -04:00
Jack Wearden 3ef707def2 Makefile: allow specifying /lib dir location
On some platforms, /lib is not actually a directory, it is a symlink to
/usr/lib:

    $ ls -l /lib
    lrwxrwxrwx 1 root root 7 Dec  4 17:11 /lib -> usr/lib

When this is the case, "make install" will be operating under a false
assumption when it generates any relative symlinks to files under a
different root-level directory.

If linking to /libexec/... from /lib/... for example, the generated
relative symlink will be 1 parent directory pointer (../) too short.

This PR allows the builder to specify LIBDIR=/usr/lib, explicitly
installing files to the target of the symlink. This results in
symlinks being generated with the correct depth.

Signed-off-by: Jack Wearden <jack@jackwearden.co.uk>
2023-03-18 23:02:32 +00:00
Chris Evich e19922d090
Makefile: Define SHELL
When undefined make defaults to `/bin/sh` which is *NOT* the same on all
platforms.  For example, on Fedora it's a symlink to `/bin/bash` but on
Debian, it's a symlink to `/bin/dash`.  Remove any/all ambiguity by
declaring the shell to be bash forever and evermore.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-02-22 10:31:18 -05:00
Ed Santiago 5754df806c make docs: sanity check for broken man pages
A recent commit to an included option file resulted in
completely broken man pages, where the markdown processor
just choked and sent the "included file blah blah" markdown
straight through to the nroff source. Hilarity ensued.

The string "included file options/" should never appear
in nroff. This adds a last-minute check to make sure
a similar error never happens again.

(As suggested by @Luap99 we should also add validators for
markdown and/or nroff.)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-02-20 05:52:24 -07:00
Ed Santiago 9622d25be9 Emergency fix for man pages: check for broken includes
Somehow the options/secret.md file generated corrupt md which
then generated corrupt .man files. Fix, and add a Makefile
check to prevent this from happening again.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-02-16 18:54:38 -07:00
Ashley Cui 9abe8c7853 Introduce podman machine os apply
Podman machine os apply takes a takes a OCI image with container native ostree functionality and rebases the machine os on that image.
Currently, this requires the guest os inside the vm to use rpm-ostree.

When specifying an image, any container transport may be specified. If a
container transport is not specified, OS apply will attempt to search
the local containers-storage for the image, and if it is not found, it
will then attempt to use the Docker transport to pull from a remote
registry.

The architecture of OS apply is as follows:
podman machine os apply ssh's into the machine and calls podman machine os
apply. on the secondary call to podman machine os apply, apply
recognizes that it is inside the machine and does image operations, and
finally calls rpm-ostree rebase.

Tests are written but commented out, due to the chicken-and-egg problem.

Signed-off-by: Ashley Cui <acui@redhat.com>
2023-02-15 14:48:12 -05:00
Daniel J Walsh 5865159766
Run codespell on codebase
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-02-09 08:02:43 -05:00
Paul Holzinger 77e4b19397
update golangci-lint to version 1.51.1
The new version contains the ginkgolinter, which makes sure the
assertions are more helpful.

Also replace the deprecated os.SEEK_END with io.SeekEnd.

There is also a new `musttag` linter which checks if struct that are
un/marshalled all have json tags. This results in many warnings so I
disabled the check for now. We can reenable it if we think it is worth
it but for now it way to much work to fix all report problems.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-02-07 14:16:21 +01:00
OpenShift Merge Robot a62c9b235c
Merge pull request #17367 from xxyzz/fix_doc_build
Move `clean-binaries` before `podman-remote` in podman-remote-docs target
2023-02-06 10:48:06 -05:00
xxyzz 8441f01bec
Move clean-binaries before podman-remote in podman-remote-docs target
When run make with muitiple jobs, `clean-binaries` could run after
the `podman-remote` target thus delete the newly built `podman-remote`
binary file. And this would cause the error later in the
`docs/remote-docs.sh` script.

Signed-off-by: xxyzz <gitpull@protonmail.com>
2023-02-05 13:42:25 +08:00
Daniel J Walsh 3c3526e532
Install podman-systemd.unit man page, make quadlet discoverable
Currently we are shipping no data about quadlet, since the
podman-systemd.unit file is not shipped. Also want to add the
quadlet name to the description of the man page so that

man -k quadlet

will help users find the man page.

Also add a link file such that if the user types in
man quadlet
man will show the podman-systemd.unit file.

Also eliminate the subpackage podman-quadlet

Fixes: https://github.com/containers/podman/issues/17349

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-02-03 08:42:20 -06:00
Arthur Sengileyev 74c0909736 Add gvproxy to Windows packages
Updated build scripts and installer build scripts to include gvproxy.exe.
Includes tutorial on setting up a Podman VM with QEMU and gvproxy on Windows.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-01-29 22:01:00 +02:00
Paul Holzinger b5bfc26542
do not install swagger by default
It is only needed for one CI task, and that task already calls
`make .install.swagger` in setup_environment.sh.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-01-19 15:44:17 +01:00
Paul Holzinger 3db8ef37d8
add testbindings Makefile target
use this target in the CI script to make sure it uses the correct gingko

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-01-19 15:44:17 +01:00
Jason T. Greene 6dd1d48fd8 Update win-sshproxy to 0.5.0 gvisor tag
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-01-06 16:52:53 -06:00
OpenShift Merge Robot 1c8b40d097
Merge pull request #16449 from cevich/localbenchmarks
Cirrus: Collect benchmarks on machine instances
2023-01-04 07:31:09 -05:00
Vadym-Valdis Yudaiev 85ceb7fb5c
make: Use PYTHON var for .install.pre-commit
Signed-off-by: Vadym-Valdis Yudaiev <judaew@outlook.de>
2022-12-22 23:45:26 +02:00
Alexander Larsson ddeb9592c9 Add podman-clean-transient.service service
This is a unit that can be enabled when using transient store mode
to clean up potential leftovers from previous boots. All it does is
run "podman system prune --external" once each boot.

Signed-off-by: Alexander Larsson <alexl@redhat.com>
2022-12-20 10:24:25 +01:00
Alexander Larsson 80878f20bc Add initial system tests for quadlets
This adds basic container and volume system tests for quadlet. These
install and run actual systemd units and ensure they work.

Signed-off-by: Alexander Larsson <alexl@redhat.com>
2022-12-16 15:35:51 +01:00
OpenShift Merge Robot 3219650fab
Merge pull request #16862 from alexlarsson/quadlet-podman-binary-name
Quadlet handle podman binary name better
2022-12-16 07:00:38 -05:00
Alexander Larsson 461726a3fa qudlet: Respect $PODMAN env var for podman binary
This changes the podman binary name embedded in the generated files.
This is primarily needed for testing podman.

This also adds a -X config for BINDIR so that we pick up the right
install target. This required tweaking some tests to handle the default
bindir not being /usr/bin.

Signed-off-by: Alexander Larsson <alexl@redhat.com>
2022-12-16 09:47:49 +01:00
OpenShift Merge Robot 236321c0ad
Merge pull request #16851 from vrothberg/lint
bump golangci-lint to v1.50.1
2022-12-15 11:59:09 -05:00
Valentin Rothberg dcbf7b4481 bump golangci-lint to v1.50.1
Also fix a number of duplicate words.  Yet disable the new `dupword`
linter as it displays too many false positives.

Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-12-15 13:39:56 +01:00
Chris Evich f825481a4c
Make a consistently-named windows installer
In order to maintain a static webpage's link to latest windows
installer build, a consistent file name is required.  In addition to
producing a `podman-vX.Y.Z.msi` file, also produce a `podman.msi` file.
Retain the versioned file in case somebody depends on it's presence in
the artifacts archive.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-12-12 13:59:50 -05:00
OpenShift Merge Robot 9ef2d9dcd9
Merge pull request #16530 from elezar/bump-golang
Bump golang version to 1.18
2022-12-12 08:28:51 -05:00
Chris Evich 7c6873b23d
Cirrus: Collect benchmarks on machine instances
The hardware used for podman-machine testing is fairly
stable/predictable because it's bare-metal.  This is a nearly ideal
environment for collection of benchmarking data.  Arrange for that to
happen, and the resulting data to be collected.

Also keep track of the benchmark-basis details in a machine-readable
`env` file along side the raw and parsed benchmarks.

Signed-off-by: Chris Evich <cevich@redhat.com>
2022-12-09 11:16:28 -05:00
Ashley Cui 9b702460e1 Makefile: Add podman-mac-helper to darwin client zip
As well as as small fix for zipping the correct folder when building on Mac

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-12-06 15:39:58 -05:00
OpenShift Merge Robot 9b6467a9d2
Merge pull request #16648 from ashley-cui/machos
Introduce podman machine os commands
2022-12-03 07:23:10 -05:00
OpenShift Merge Robot 3f80a68fd3
Merge pull request #16667 from cfergeau/artifacts
Make released binary names more consistent
2022-12-03 07:20:08 -05:00
Arthur Sengileyev 98a1b551fe Build cross-compilation fixes
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2022-12-02 19:22:53 +02:00
Christophe Fergeau fe548dd0b0 linux: Add -linux suffix to podman-remote-static binaries
This is more consistent with the name of the other released files, and
makes identification of the binaries easier among the Windows/macOS
ones.

Related: https://github.com/containers/podman/issues/16612
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2022-11-29 11:18:20 +01:00
Christophe Fergeau d223950078 linux: Build amd64 and arm64 podman-remote-static binaries
Looking at https://github.com/containers/podman/releases/tag/v4.3.1,
it's not explicit which arch the podman-remote-static binary is built
for, so this commit adds an -$(goarch) suffix to it. It builds both
arm64 and amd64 binaries as I need both for crc.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
2022-11-29 11:18:18 +01:00
Daniel J Walsh f17479c711
Run codespell on code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-11-28 15:13:43 -05:00
Ashley Cui 96c208efb5 Introduce podman machine os commands
Introduce machine os and machine os apply. Note that these are both stubs at the current moment, and do not introduce functionality. In order to build them, you must use the `experimental` build tag, or use `make podman-remote-experimental`

[NO NEW TESTS NEEDED]
as there is no actual functionality and this is a WIP.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-11-28 11:50:01 -05:00
Evan Lezar 3eeb50d48b Bump golang version to 1.18
Signed-off-by: Evan Lezar <elezar@nvidia.com>
2022-11-28 13:17:54 +01:00
OpenShift Merge Robot 9e8f5db47c
Merge pull request #16613 from elezar/add-generic-in-container-target
Add validate-in-container target
2022-11-28 06:18:14 -05:00
Paul Holzinger c7827957a4
ginkgo: restructure install work flow
- move the ginkgo deps into test/tools which is more consitent with the
  other tools there, listing in dependencies always causes errors with
  linters
- do not install it globally on the system, instead we use it in a
  subdir of this project

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-11-25 14:41:43 +01:00
Evan Lezar ba522e8f3c Add validate-in-container target
This change adds a validate-in-container make target that can be used to run
the make validate target in a container instead of requiring the dependencies
to be available on the system. This mirrors what is already done for the vendor
target and allows additional targets to be added.

A PODMANCMD make variable is also added to allow for the podman binary to be
overridden in cases where this is not available.

Signed-off-by: Evan Lezar <elezar@nvidia.com>
2022-11-24 19:32:34 +01:00
OpenShift Merge Robot ab077cabfb
Merge pull request #16577 from ashley-cui/cirrusm1
[CI:DOCS] Migrate OSX Cross to M1
2022-11-22 10:20:50 -05:00
Ashley Cui a575111ad4 [CI:DOCS] Migrate OSX Cross to M1
Migrate our OSX Cross build to a M1 instance, since Cirrus is sunsetting Intel-based macOS instances.

Signed-off-by: Ashley Cui <acui@redhat.com>
2022-11-21 15:15:53 -05:00
Alexander Larsson 285d6c9ba0 quadlet: Rework uid/gid remapping
Quadlet was doing some custom handling of uid/gid remapping, originating
from pre --userns=auto support, including its own user for getting subuids
which kinda conflicts with the "container" user used for that.

This drops all the old support for id remapping in favour of a new set
of keys that more directly map to the podman run options.

We have essentially 3 modes now:

```
RemapUsers=manual
RemapUid=0:10000:10
RemapUid=10:20000:10
RemapGid=0:10000:10
RemapGid=10:20000:10
```

This maps to --uidmap and --gidmap options.

```
RemapUsers=auto
```

This maps to --userns=auto. But you can additionally specify RemapUid,
RemapGid and RemapUidSize which gets applied as options to the
--userns podman option.

```
RemapUsers=keep-id
```
This maps to --userns=keep-id and only works for user units.

Signed-off-by: Alexander Larsson <alexl@redhat.com>
2022-11-21 18:02:19 +01:00
OpenShift Merge Robot e300c269fa
Merge pull request #16410 from rhatdan/codespell
Run codespell on code
2022-11-07 06:44:25 -05:00
Doug Rabson d5031946ab Makefile: don't install to tmpfiles.d on FreeBSD
There is no equivalent equivalent on FreeBSD and this causes lint
failures when packaging.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-11-06 11:08:02 +00:00
Daniel J Walsh efbad590d7
Run codespell on code
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-11-04 10:57:41 -04:00
Doug Rabson fc65d72c3c Makefile: Add cross build targets for freebsd
This adds FreeBSD/amd64 and FreeBSD/arm64 to the cross build list.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-10-31 15:13:59 +00:00
Daniel J Walsh 6fe64591d6
Update vendor containers/(common,storage,buildah,image)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2022-10-28 06:16:22 -04:00
Paul Holzinger d50a55233a
ginkgo testing: fix podman usernamespace join
When there is a podman pause process running the local podman ginkgo
tests will join the usernamespace. This because pkg/rootless will
automatically join the ns on startup when possible. To fix this we
need to use the remote build tag which disables that behavior.

However since the remote tag is also used in the e2e test itself we
would always run remote tests which is wrong, this is fixed by using a
new `remote_testing` tag for the test.

see discussion here: https://github.com/containers/podman/pull/16309#discussion_r1006166930

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2022-10-27 15:16:19 +02:00
Ed Santiago c9c2f644da markdown-preprocess: cross-reference where opts are used
In each options/foo.md, keep a list of where the option is used.
This will be valuable to anyone making future edits, and to
those reviewing those edits.

This may be a controversial commit, because those crossref lists
are autogenerated as a side effect of the script that reads them.
It definitely violates POLA. And one day, some kind person will
reconcile (e.g.) --label, using it in more man pages, and maybe
forget to git-commit the rewritten file, and CI will fail.

I think this is a tough tradeoff, but worth doing. Without this,
it's much too easy for someone to change an option file in a way
that renders it inapplicable/misleading for some podman commands.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2022-10-20 10:57:51 -06:00
Doug Rabson 0a6d8b94c3 Makefile: don't install systemd generator binaries on FreeBSD
This isn't useful on FreeBSD since it does not use systemd.

[NO NEW TESTS NEEDED]

Signed-off-by: Doug Rabson <dfr@rabson.org>
2022-10-18 15:44:41 +01:00
OpenShift Merge Robot 1a60b30e51
Merge pull request #16035 from alexlarsson/quadlet
Initial quadlet version integrated in golang
2022-10-17 15:13:39 -04:00