Skip to content

chore(build): Add support for building with RHEL 9+ / Fedora 38+ / modern Podman alongside Docker / tested on Fedora 44 - #9728

Open
rahst12 wants to merge 2 commits into
dgraph-io:mainfrom
rahst12:fedora-44-make-support
Open

chore(build): Add support for building with RHEL 9+ / Fedora 38+ / modern Podman alongside Docker / tested on Fedora 44#9728
rahst12 wants to merge 2 commits into
dgraph-io:mainfrom
rahst12:fedora-44-make-support

Conversation

@rahst12

@rahst12 rahst12 commented May 30, 2026

Copy link
Copy Markdown

Description

Podman / Fedora 44 / RHEL 9+ support for make test

NOTE: RedHat 8 was End of Life May 2024.

Docker CE is no longer installable or functional on Fedora 38+ and RHEL 9+ from the official
Docker repository. Podman (with podman-docker and podman-compose) is the supported
replacement on those platforms. This release makes the ./t runner and testutil compose
paths runtime-agnostic so that make test works with either Docker or Podman transparently.

Changes by area:

  • testutil/runtime.go (new): central runtime detection; auto-detects whether Docker or
    Podman is in use (including podman-docker shims), sets DOCKER_HOST to the Podman socket
    so the Docker SDK can communicate with it, and exposes ContainerRuntime() and
    ContainerComposeCmdPrefix() helpers used everywhere else

  • t/t.go and testutil/bulk.go: all hardcoded docker compose --compatibility
    invocations replaced with ContainerComposeCmdPrefix(); all docker logs, docker cp, and
    docker exec calls replaced with ContainerRuntime()

  • contrib/Dockerfile: pre-creates all /data/zero*, /data/alpha*, /data/dg1, and
    /data/dg0.1 directories; Podman's crun OCI runtime does not auto-create a container's
    working_dir at startup (unlike Docker's runc), which left containers stuck in "Created"
    state

  • t/Makefile: new install-deps-docker-linux-dnf target installs
    podman podman-docker podman-compose and enables the Podman socket instead of attempting the
    broken Docker CE install path on Fedora/RHEL

  • t/scripts/check-deps-docker.sh: rewritten to detect and validate Podman on
    dnf-based systems instead of requiring Docker CE

  • t/scripts/check-docker-available-memory.sh: reads /proc/meminfo directly on Linux
    (works for both Docker and Podman) rather than calling docker info

  • Makefile (root): new $(DOCKER) variable falls back to podman when docker is
    absent, used for image build targets

  • Fixed

    • fix(build): chain the jemalloc build recipe with && (was ;) so a failed compile no longer
      falls through to make install, and clear any stale /tmp/jemalloc-temp before rebuilding

Note: an earlier revision of this PR compiled the bundled jemalloc with --disable-cxx to
work around the std::__throw_bad_alloc build failure on GCC 16 / libstdc++ 16. That failure
was fixed upstream in #9740 (released in v25.4.0) by patching the jemalloc source, so this PR
no longer changes the configure flags. It now scopes to: Podman/make test infrastructure
support, multi-distro build dependencies (apt/dnf/pacman), and fail-fast hygiene in the
jemalloc recipe.

  • Added

    • test: add contrib/smoke-test.sh to bring up a local zero+alpha and verify
      schema/mutation/query against a freshly built binary
  • Changed

    • build: linux-dependency now auto-detects the package manager (apt/dnf/pacman) and installs the
      C/C++ toolchain + protobuf-compiler, so build prerequisites work on Fedora/RHEL and Arch in
      addition to Debian/Ubuntu
  • Docs

    • docs(contributing): document building Dgraph on Fedora/RHEL

Checklist

  • The PR title follows the
    Conventional Commits syntax, leading
    with fix:, feat:, chore:, ci:, etc.
  • Code compiles correctly and linting (via trunk) passes locally
  • Tests added for new functionality, or regression tests for bug fixes added as applicable
  • [-] For public APIs, new features, etc., a PR on the
    docs repo staged and linked here. This process can
    be simplified by going to the public docs site and clicking the
    "Edit this page" button at the bottom of page(s) relevant to your changes. Ensure that you
    indicate in the PR that this is an unreleased feature so that it does not get merged into
    the main docs prematurely.

@rahst12
rahst12 requested a review from a team as a code owner May 30, 2026 04:24
@rahst12

rahst12 commented Jun 13, 2026

Copy link
Copy Markdown
Author

I'm looking for feedback on the fedora 44 supports. What's needed to get this going?

@rahst12 rahst12 changed the title chore(build) Add support for building with Fedora 44 chore(build) Add support for building with RHEL 9 / Fedora 38+ / tested on Fedora 44 Jun 20, 2026
@rahst12 rahst12 changed the title chore(build) Add support for building with RHEL 9 / Fedora 38+ / tested on Fedora 44 chore(build) Add support for building with RHEL 9+ / Fedora 38+ / tested on Fedora 44 Jun 20, 2026
@rahst12
rahst12 force-pushed the fedora-44-make-support branch from 5208ee6 to 4066f05 Compare August 8, 2026 06:27
@rahst12 rahst12 changed the title chore(build) Add support for building with RHEL 9+ / Fedora 38+ / tested on Fedora 44 chore(build): Add support for building with RHEL 9+ / Fedora 38+ / modern Podman alongside Docker / tested on Fedora 44 Aug 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant