Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
d11a15f
Merge pull request #20 from Micron-TPG/upstream-sync-into-mingw
jimmunn Jan 8, 2026
a6e3969
Initial Windows cross-platform support for libnvme (#21)
bbusacker Jan 13, 2026
58a4ac2
Add Micron build file.
jimmunn Jan 13, 2026
8fdf969
Update name.
jimmunn Jan 13, 2026
936802b
Trigger CI after enabling Actions
jimmunn Jan 14, 2026
67ec4ac
Change steps to use verified actions.
jimmunn Jan 14, 2026
a0464ff
A Micron happy version of checkpatch workflow.
jimmunn Jan 15, 2026
1eff461
Remove trailing whitespace.
jimmunn Jan 15, 2026
eae9ebd
Add support for build system to read git tag on windows
bcapener Jan 22, 2026
51e533e
Merge pull request #24 from Micron-TPG/add-micron-build.yml
jimmunn Jan 26, 2026
832fb96
Add libnvme tests kdoc and UUID (#26)
bcapener Jan 26, 2026
a2b0d09
update windows-stubs.c to match actual signatures (#27)
bcapener Jan 30, 2026
a2dc5b2
Merge origin/master into mingw (#37)
bcapener Jan 30, 2026
368f262
Fix circular dependency in platform_linux.h causing build failures (#38)
Copilot Jan 31, 2026
599f9e7
feat: Add Windows support for nvme-cli (#29)
bbusacker Feb 2, 2026
2417c93
More updates to windows-stubs.c function signatures (#42)
bcapener Feb 5, 2026
aad5f1f
Add workflow to auto-merge master into mingw
jimmunn Feb 5, 2026
83f78b1
Remove trailing whitespace.
jimmunn Feb 5, 2026
0b42682
Merge pull request #44 from Micron-TPG/add-auto-merge-workflow
jimmunn Feb 5, 2026
471c705
Merge remote-tracking branch 'origin/master' into merge-in-master
bcapener Feb 6, 2026
fa78ed7
Merge pull request #46 from Micron-TPG/merge-in-master
bcapener Feb 6, 2026
a72bc91
Use personal access token (PAT) so workflow can push the merge.
jimmunn Feb 6, 2026
9f95c88
Merge pull request #48 from Micron-TPG/usePATInMergeWorkflow
jimmunn Feb 6, 2026
b579b6a
Use Github app instead of PAT.
jimmunn Feb 6, 2026
0e4d3dd
Merge branch 'usePATInMergeWorkflow' into mingw
jimmunn Feb 6, 2026
80748e9
More tweaks to file
jimmunn Feb 6, 2026
a2cb46f
Merge pull request #51 from Micron-TPG/merge-master-to-mingw-tweaks
jimmunn Feb 6, 2026
d5bfc87
Remove --strict from call to checkpatch.pl to match upstream behavior.
jimmunn Feb 9, 2026
de9449e
Update nvme transport handle file descriptor type (#45)
bcapener Feb 9, 2026
85295dd
Merge pull request #53 from Micron-TPG/checkpath-tweak
jimmunn Feb 9, 2026
385211e
Auto-merge master into mingw
github-actions[bot] Feb 10, 2026
6c4f8f8
Auto-merge master into mingw
github-actions[bot] Feb 11, 2026
e0939af
feat: Implemented admin commands supported on Windows using Windows I…
bgoing-micron-oss Feb 11, 2026
41af409
Auto-merge master into mingw
github-actions[bot] Feb 12, 2026
5f5ccd5
windows nvme: Updated BufferSize and Offset to use byte counts. (#55)
bgoing-micron-oss Feb 12, 2026
97a3936
Merge master into mingw
bgoing-micron-oss Feb 13, 2026
60612b1
Fix windows build issues from last merge.
bgoing-micron-oss Feb 13, 2026
ee064b9
Merge master into mingw
bgoing-micron-oss Feb 13, 2026
0d07d4d
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Feb 17, 2026
a6fc178
Updated stub for nvme_dump_config.
bgoing-micron-oss Feb 17, 2026
45baea1
Merge master into mingw
bgoing-micron-oss Feb 17, 2026
5382071
Merge 'origin/master' into mingw
jimmunn Feb 18, 2026
2818fb4
Merge branch 'master' into mingw
jimmunn Feb 19, 2026
d2730a6
Enable id-ctrl command (#54)
bcapener Feb 19, 2026
297fba6
Cleanup of includes and some formatting. (#59)
bgoing-micron-oss Feb 21, 2026
12d5218
Removed BUILD.md and updated ENVIRONMENT.md. (#60)
bgoing-micron-oss Feb 21, 2026
e6e7f38
Added readme describing the Windows port design choices and strategie…
bgoing-micron-oss Feb 21, 2026
c3963ab
Auto-merge master into mingw
github-actions[bot] Feb 21, 2026
162f404
Auto-merge master into mingw
github-actions[bot] Feb 23, 2026
39bedaf
Auto-merge master into mingw
github-actions[bot] Feb 24, 2026
6337146
Auto-merge master into mingw
github-actions[bot] Feb 26, 2026
d92c0cb
Update build files to align better with master (#62)
bcapener Feb 26, 2026
fbddc73
Auto-merge master into mingw
github-actions[bot] Feb 27, 2026
c99cfde
Added WinPE implementations for supported commands. (#64)
bgoing-micron-oss Mar 2, 2026
b1bc282
Auto-merge master into mingw
github-actions[bot] Mar 3, 2026
49c7d9d
Auto-merge master into mingw
github-actions[bot] Mar 4, 2026
0be3d6e
Revert use of powershell (#68)
bcapener Mar 4, 2026
b118030
Adding .github/copilot-instructions.md (#66)
bgoing-micron-oss Mar 4, 2026
31e9c8e
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Mar 5, 2026
c244036
Implemented nvme_submit_io_passthru for Windows. (#65)
bgoing-micron-oss Mar 5, 2026
839d4a7
Fixed Windows build issues introduced by latest merge from master. (#69)
bgoing-micron-oss Mar 5, 2026
6ca1849
Auto-merge master into mingw
github-actions[bot] Mar 6, 2026
947a78e
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Mar 9, 2026
d955385
Auto-merge master into mingw
github-actions[bot] Mar 10, 2026
c7a3909
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Mar 11, 2026
c600e74
Auto-merge master into mingw
github-actions[bot] Mar 12, 2026
81a9f18
Implemented nvme_get_nsid for Windows. (#78)
bgoing-micron-oss Mar 12, 2026
32742b1
Auto-merge master into mingw
github-actions[bot] Mar 13, 2026
7a8f895
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Mar 23, 2026
4db6c0f
Fixing Windows and Linux build problems caused by the last merge from…
bgoing-micron-oss Mar 24, 2026
ccaf436
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Mar 24, 2026
58db985
Fixed merge error.
bgoing-micron-oss Mar 24, 2026
f2773fe
Fixing libnvme check-public-symbols test failures. (#81)
bgoing-micron-oss Mar 24, 2026
1bf036b
Merge remote-tracking branch 'origin/master' into mingw
bcapener Mar 25, 2026
a6bc95b
fix for last merge from master (#82)
bcapener Mar 25, 2026
34744b9
windows: enable json-c and fix OCP internal-log telemetry handling (#76)
bbusacker Mar 25, 2026
f972d2e
Auto-merge master into mingw
github-actions[bot] Mar 27, 2026
98c3fa3
Merge remote-tracking branch 'origin/master' into mingw
bcapener Mar 27, 2026
7964461
Auto-merge master into mingw
github-actions[bot] Mar 31, 2026
0f05f55
Auto-merge master into mingw
github-actions[bot] Apr 1, 2026
2ea6fa7
Adding nvme_create_raw_secret stub to fix Windows build. (#87)
bgoing-micron-oss Apr 1, 2026
6409898
Auto-merge master into mingw
github-actions[bot] Apr 2, 2026
e569a0a
Auto-merge master into mingw
github-actions[bot] Apr 3, 2026
1f45429
Cleanup of platform includes and platform include usage. (#88)
bgoing-micron-oss Apr 3, 2026
e111b5e
Copying libnvme dll into the root build folder during build. (#89)
bgoing-micron-oss Apr 6, 2026
538b17b
Updating copilot instructions for SPDX license headers. (#90)
bgoing-micron-oss Apr 6, 2026
de6afa3
Removed windows-specific definition of S_ISBLK. (#92)
bgoing-micron-oss Apr 7, 2026
a8986ce
Refactoring to remove raw ioctl calls from nvme.c. (#91)
bgoing-micron-oss Apr 7, 2026
ec4a39f
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Apr 8, 2026
8322f8f
Adding file missed in merge.
bgoing-micron-oss Apr 8, 2026
63c4c6a
Update Windows libnvme method name prefixes to match upstream changes…
bgoing-micron-oss Apr 8, 2026
e73df13
Auto-merge master into mingw
github-actions[bot] Apr 9, 2026
7e7476e
Auto-merge master into mingw
github-actions[bot] Apr 10, 2026
7e37535
Auto-merge master into mingw
github-actions[bot] Apr 11, 2026
8be9d25
Auto-merge master into mingw
github-actions[bot] Apr 13, 2026
4e0494e
Build fix: Updated libnvme_lookup_ctrl stub to match new signature. (…
bgoing-micron-oss Apr 14, 2026
a53f7be
Added better support for more Windows ioctl error codes. (#94)
bgoing-micron-oss Apr 14, 2026
879b963
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Apr 15, 2026
202ad68
Fixed Linux build post merge.
bgoing-micron-oss Apr 15, 2026
3e41e64
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Apr 15, 2026
083bae3
Missed merge file.
bgoing-micron-oss Apr 15, 2026
07ec654
Post-merge build fixes.
bgoing-micron-oss Apr 15, 2026
f54abc6
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Apr 16, 2026
4688840
Cleaned up remaining MI and Fabrics stubs and compatibility and remov…
bgoing-micron-oss Apr 16, 2026
6af1563
Merge remote-tracking branch 'origin/master' into mingw
bgoing-micron-oss Apr 17, 2026
304a351
Fixed windows-stubs.c build post merge.
bgoing-micron-oss Apr 17, 2026
a0c5221
Cleanup of platform/includes.h usage.
bgoing-micron-oss Apr 17, 2026
19c56ae
Refactored stdlib.h compatiblity.
bgoing-micron-oss Apr 17, 2026
55b3711
Refactored malloc.h and unistd.h compatibility.
bgoing-micron-oss Apr 17, 2026
f94f092
Removed public libnvme_fstat.
bgoing-micron-oss Apr 17, 2026
831badc
Refactored mmap compatibility.
bgoing-micron-oss Apr 17, 2026
eae0756
Moved NAME_MAX definition to micron-nvme.c.
bgoing-micron-oss Apr 17, 2026
3824169
Refactored stdio compatibiity
bgoing-micron-oss Apr 17, 2026
f6ed5bf
Refactored errno and ifaddrs compatibility
bgoing-micron-oss Apr 17, 2026
8c03279
Moved random_uuid helper into util.c
bgoing-micron-oss Apr 17, 2026
ca9603f
Cleaned up unistd.h
bgoing-micron-oss Apr 17, 2026
f3b09dd
Enabled ucrt64 gmtime_r implementation
bgoing-micron-oss Apr 17, 2026
9e1ff30
Removed libnvme-wrap.c from build.
bgoing-micron-oss Apr 17, 2026
d061d3a
Refactored mkdir support and enabled plugin building.
bgoing-micron-oss Apr 17, 2026
538510c
Refactored signal compatibility
bgoing-micron-oss Apr 17, 2026
d6adc8d
Added missing headers to build configuration headers list
bgoing-micron-oss Apr 17, 2026
8540f32
Minimized includes in windows.h and linux.h
bgoing-micron-oss Apr 17, 2026
bcd43d5
Moved O_BINARY handling to the one place it is used.
bgoing-micron-oss Apr 17, 2026
7d28895
Moved remaining compatibility helpers into new lib-compat.h
bgoing-micron-oss Apr 17, 2026
ed77585
Moved O_BINARY definition into new nvme/fcntl.h
bgoing-micron-oss Apr 18, 2026
3afb48e
Includes updates to fix Linux build.
bgoing-micron-oss Apr 18, 2026
01d38f4
Enabling tests compilation to check compatibility build.
bgoing-micron-oss Apr 18, 2026
c5765c0
Renamed Windows fstat implementation for device handles.
bgoing-micron-oss Apr 18, 2026
c57b385
Added newline to end of unistd.h
bgoing-micron-oss Apr 18, 2026
d2a2ba1
Removed cleanup.h dependency on private.h to match upstream.
bgoing-micron-oss Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 234 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
# nvme-cli Codebase Guide for AI Agents

## Project Overview

nvme-cli is a cross-platform NVMe management utility (Linux/Windows) with an integrated libnvme library (v3.x+). The project uses Meson build system and supports an extensible plugin architecture for vendor-specific commands.

**Critical:** Starting with nvme-cli 3.x, libnvme is fully integrated into the source tree at `libnvme/` - there's no external dependency.

## Architecture

### Component Structure

- **nvme-cli** (`nvme.c`, `nvme-builtin.h`): Main CLI tool with built-in NVMe commands
- **libnvme** (`libnvme/src/nvme/`): Cross-platform NVMe library with OS-specific ioctl implementations
- `ioctl.c` (Linux), `ioctl-windows.c` (Windows)
- **Plugins** (`plugins/*/`): Vendor-specific extensions (OCP, WDC, Intel, Solidigm, etc.)
- **Utilities** (`util/`): Shared helpers (argument parsing, formatting, cleanup)

### Command Registration Pattern

Commands use a macro-based registration system via `define_cmd.h`:

1. **Built-in commands** (`nvme-builtin.h`):
```c
COMMAND_LIST(
ENTRY("list", "List all NVMe devices", list)
ENTRY("id-ctrl", "Send Identify Controller", id_ctrl)
)
```

2. **Plugin commands** (e.g., `plugins/ocp/ocp-nvme.h`):
```c
PLUGIN(NAME("ocp", "OCP cloud SSD extensions", OCP_PLUGIN_VERSION),
COMMAND_LIST(
ENTRY("smart-add-log", "Retrieve extended SMART", smart_add_log)
)
)
```

Commands are invoked as: `nvme <command>` (built-in) or `nvme <plugin> <command>` (plugin).

### Cross-Platform Abstraction

- **Platform detection**: Use Meson's `build_machine.system()` checks
- **OS-specific code**: Separate implementations in `libnvme/src/nvme/ioctl-*.c`
- **Windows quirks**:
- Network libraries (ws2_32, wsock32, iphlpapi) auto-linked on Windows
- Linux-only features (json-c, liburing, keyutils) auto-disabled on Windows

## Build System (Meson)

### Standard Build Commands

**Linux:**
```bash
meson setup .build
meson compile -C .build
meson install -C .build
```

**Windows (MSYS2):**
```bash
meson setup .build
meson compile -C .build
meson install -C .build
```

**Windows (PowerShell):**
```powershell
meson setup .build
meson compile -C .build
```

### Key Build Options

- `-Dnvme=enabled|disabled` - Build nvme CLI (default: enabled)
- `-Dlibnvme=enabled|disabled` - Build libnvme library (default: enabled)
- `-Dtests=true|false` - Build tests (default: true)
- `-Ddefault_library=static|shared` - Library type
- `-Djson-c=enabled|auto|disabled` - JSON support (required for plugins on Linux)

**Important:** Disabling json-c on Linux disables all plugins.

### Build Configurations

See `scripts/build.sh` for CI configurations:
- `scripts/build.sh` - Default build
- `scripts/build.sh fallback` - Download all dependencies
- `scripts/build.sh static` - Static binary
- `scripts/build.sh libnvme` - libnvme only

## Development Workflows

### Adding a New Built-in Command

1. Add `ENTRY()` to `nvme-builtin.h`
2. Implement callback in `nvme.c`:
```c
static int my_cmd(int argc, char **argv, struct command *cmd, struct plugin *plugin)
```
3. Use `argconfig` for option parsing (see existing commands)
4. Return 0 on success, errno on failure

### Adding a Plugin Command

1. Create plugin header in `plugins/<vendor>/<vendor>-nvme.h`:
```c
#undef CMD_INC_FILE
#define CMD_INC_FILE plugins/<vendor>/<vendor>-nvme

PLUGIN(NAME("<vendor>", "Description", VERSION),
COMMAND_LIST(
ENTRY("cmd-name", "Description", callback_fn)
)
)
#include "define_cmd.h"
```
2. Implement commands in `plugins/<vendor>/<vendor>-nvme.c`
3. Update `plugins/meson.build` to include new plugin

### Testing

Python-based tests in `tests/`:
- Test framework: `nvme_test.py`, `nvme_test_logger.py`
- Run with: `meson test -C .build` or `pytest tests/`
- Tests require real NVMe hardware (controlled by `-Dnvme-tests=true`)

### Windows Development

You're currently working on Windows implementation (`libnvme/src/nvme/ioctl-windows.c`). Key points:

- Use Windows API: `DeviceIoControl()`, `CreateFile()`, etc.
- Convert Windows errors to errno with helper functions
- Many Linux features unsupported: reset, rescan, io_uring
- Test using MinGW builds

## Code Conventions

### Coding Style

**Follow Linux kernel coding style** for all code contributions:

- **Indentation**: Use tabs (not spaces) for indentation, with 8-character tab stops
- **Line length**: Should not exceed 80 characters with 8-space tabs if possible. This is a soft guideline - readability takes priority, with a hard limit of 100 columns for code.
- **Bracing**: K&R style - opening brace on same line, closing brace on new line. For conditional statements with single instructions in all branches, do not use braces.
```c
// Multiple statements - use braces
if (condition) {
do_something();
do_another_thing();
} else {
do_something_else();
}

// Single statement in all branches - no braces
if (condition)
do_something();
else
do_something_else();
```
- **Naming**:
- Functions/variables: lowercase with underscores (`get_smart_log`, `namespace_id`)
- Macros/constants: uppercase with underscores (`NVME_LOG_PAGE_SIZE`)
- Struct members: lowercase with underscores
- **Spacing**: Space after keywords (`if (`, `while (`), no space for function calls (`func(`)
- **Pointer declarations**: Attach asterisk to type name, not variable name: `type *name` not `type* name`
```c
int *ptr; // Correct
char *str; // Correct
void *user_data; // Correct
int* ptr; // Wrong
```
- **Comments**: Follow these conventions:
- **Multi-line block comments**: Use Linux kernel style with `/* */` wrapper and ` * ` prefix:
```c
/*
* This is a multi-line comment explaining something
* with important details across multiple lines.
*/
```
- **Single-line standalone comments**: Use `/* */` format: `/* Single line comment */`
- **Inline comments** (end-of-line): Use `/* */` format: `/* Inline comment */`
- **TODO comments**: Use C++ style: `// TODO: description`
- **SPDX license headers**: Use C style: `/* SPDX-License-Identifier: ... */`
- **Type declarations**: Prefer kernel types (`__u32`, `__le16`) for hardware structures

See the Linux kernel [coding style documentation](https://www.kernel.org/doc/html/latest/process/coding-style.html) for complete details.

### Commit Messages

Follow Linux kernel style:
```
<area>: <short description>

<detailed description>

Signed-off-by: Name <email>
```

Examples: `nvme: fix buffer overflow`, `ocp: add latency monitor log`

### Error Handling

- Return 0 on success, negative errno on failure
- Use `nvme_status_to_errno()` for NVMe status codes
- Log errors with `nvme_show_error()` or `perror()`

### Memory Management

- Use cleanup attributes for auto-cleanup: `_cleanup_(nvme_free_tree)`, `_cleanup_free_`
- Defined in `util/cleanup.h`
- Example: `_cleanup_free_ char *buf = malloc(size);`

### Licensing

- nvme-cli: GPL-2.0-or-later (some files GPL-2.0-only)
- libnvme: LGPL-2.1-or-later
- Always include SPDX header: `// SPDX-License-Identifier: GPL-2.0-or-later`

## Key Files Reference

- `nvme.c` (11k lines) - Main CLI implementation
- `nvme-builtin.h` - Built-in command registry
- `define_cmd.h` - Command macro magic
- `plugin.c`, `plugin.h` - Plugin infrastructure
- `ENVIRONMENT.md` - Dependency setup guide
- `meson.build` - Root build configuration

## Common Pitfalls

1. **Plugins disabled**: Check if json-c is enabled on Linux builds
2. **Test failures**: Tests require real NVMe hardware and `-Dnvme-tests=true`
3. **libnvme not found**: In 3.x+, libnvme is integrated - don't install separately
4. **Wrong command invocation**: Plugins use `nvme <plugin> <cmd>`, not `nvme <cmd>`
163 changes: 163 additions & 0 deletions .github/workflows/micron-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
---
name: micron-build

on:
push:
branches: [mingw] # Changed from master
pull_request:
branches: [mingw] # Changed from master

workflow_dispatch:

jobs:
nvme-cli:
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [gcc, clang]
buildtype: [debug, release]
container:
image: ghcr.io/linux-nvme/debian.python:latest
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
scripts/build.sh -b ${{ matrix.buildtype }} -c ${{ matrix.compiler }} -x
- uses: actions/upload-artifact@v5
name: upload logs
if: failure()
with:
name: logs files
path: |
.build-ci/meson-logs/*.txt

libnvme:
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [gcc, clang]
buildtype: [debug, release]
container:
image: ghcr.io/linux-nvme/debian.python:latest
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
scripts/build.sh -b ${{ matrix.buildtype }} -c ${{ matrix.compiler }} -x libnvme
- uses: actions/upload-artifact@v5
name: upload logs
if: failure()
with:
name: libnvme logs files
path: |
.build-ci/meson-logs/*.txt

cross:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- arch: armhf
- arch: s390x
- arch: ppc64le
steps:
- uses: actions/checkout@v5

# enable foreign arch (replace unverified dbhi/qus with verified Docker QEMU setup)
- name: Enable QEMU for cross-arch
uses: docker/setup-qemu-action@v3
with:
platforms: arm,ppc64le,s390x

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# compile and run unit tests (replace unverified mosteo-actions/docker-run with native docker run)
- name: compile and run unit tests
run: |
set -eux
docker pull --platform linux/amd64 ghcr.io/linux-nvme/ubuntu-cross-${{ matrix.arch }}:latest
docker run --rm \
--platform linux/amd64 \
-v "${{ github.workspace }}:/build" \
-w /build \
ghcr.io/linux-nvme/ubuntu-cross-${{ matrix.arch }}:latest \
bash -lc '
git config --global --add safe.directory /build
scripts/build.sh -b release -c gcc -t ${{ matrix.arch }} cross
'

- uses: actions/upload-artifact@v5
name: upload logs
if: failure()
with:
name: log files
path: |
.build-ci/meson-logs/*.txt

fallback-shared-libraries:
name: fallback shared libraries
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/debian:latest
if: github.ref == 'refs/heads/mingw' # Changed from master
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
scripts/build.sh -b release -c gcc fallback
- uses: actions/upload-artifact@v5
if: failure()
with:
name: log files
path: |
.build-ci/meson-logs/*.txt

build-muon:
name: muon minimal static
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/debian:latest
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
scripts/build.sh -m muon

build-make-static:
name: make static
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/debian:latest
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
make static

build-distro:
name: build libnvme and nvme-cli separately
runs-on: ubuntu-latest
container:
image: ghcr.io/linux-nvme/debian:latest
steps:
- uses: actions/checkout@v5
- name: Mark repo as safe for git
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: build
run: |
scripts/build.sh distro
Loading
Loading