mirror of
https://github.com/AltraMayor/f3.git
synced 2026-09-29 12:12:16 +02:00
This commit restructures the project to follow a more standard C project layout and improve maintainability: - Moved all C source and header files to the `src/` directory. - Moved the manual page (`f3read.1`) to the `man/` directory. - Moved helper shell scripts to the `scripts/` directory. - Updated the Makefile to support out-of-source builds, placing all compiled objects and binaries into a new `build/` directory. - Updated `.github/workflows/test.yml` to ensure CI correctly builds and tests from the new directory structure. - Updated `README.rst`, `doc/usage.rst`, and `flake.nix` to reflect the new file locations and build instructions. - Modified `.gitignore` to exclude the `build/` directory while removing specific individual binary exclusions. This commit closes #246
257 lines
6.9 KiB
YAML
257 lines
6.9 KiB
YAML
---
|
|
name: Test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request: {}
|
|
|
|
jobs:
|
|
Linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
volume:
|
|
- /tmp
|
|
- .
|
|
- relative-path
|
|
- /
|
|
asroot:
|
|
- name: ''
|
|
sudo: ''
|
|
- name: ' as root'
|
|
sudo: 'sudo '
|
|
|
|
name: Linux ${{ matrix.volume }}${{ matrix.asroot.name }}
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- run: sudo apt-get update && sudo apt-get install -y libparted-dev libudev-dev
|
|
- run: make all extra
|
|
|
|
- if: matrix.volume == 'relative-path'
|
|
run: mkdir relative-path
|
|
|
|
- if: matrix.volume == '/'
|
|
run: sudo chmod a+w /
|
|
|
|
- run: build/f3write -V
|
|
- run: build/f3write --help
|
|
- run: ${{ matrix.asroot.sudo }}build/f3write -s 2 -e 4 -w 50000 ${{ matrix.volume }}
|
|
|
|
- run: stat ${{ matrix.volume }}/2.h2w
|
|
- run: stat ${{ matrix.volume }}/3.h2w
|
|
- run: stat ${{ matrix.volume }}/4.h2w
|
|
|
|
- run: build/f3read -V
|
|
- run: build/f3read --help
|
|
- run: ${{ matrix.asroot.sudo }}build/f3read -s 2 -e 4 -r 50000 ${{ matrix.volume }}
|
|
|
|
- run: build/f3probe -V
|
|
- run: build/f3probe --help
|
|
- run: build/f3brew -V
|
|
- run: build/f3brew --help
|
|
- run: build/f3fix -V
|
|
- run: build/f3fix --help
|
|
|
|
- name: Create loop device for f3probe, f3brew, and f3fix tests
|
|
id: loop
|
|
run: |
|
|
dd if=/dev/zero of=dummy.img bs=1M count=10
|
|
sudo losetup -fP dummy.img
|
|
echo "dev=$(sudo losetup -j dummy.img | cut -d: -f1)" >> $GITHUB_OUTPUT
|
|
|
|
- run: sudo build/f3probe ${{ steps.loop.outputs.dev }}
|
|
- run: sudo build/f3brew --reset-type=2 -h 0 -e 4 ${{ steps.loop.outputs.dev }}
|
|
- run: sudo build/f3fix --first-sec 1 --last-sec 10 ${{ steps.loop.outputs.dev }}
|
|
|
|
- name: Cleanup loop device
|
|
if: always()
|
|
run: |
|
|
if [ -n "${{ steps.loop.outputs.dev }}" ]; then
|
|
sudo losetup -d ${{ steps.loop.outputs.dev }}
|
|
fi
|
|
rm -f dummy.img
|
|
|
|
MacOS:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
volume:
|
|
- /tmp
|
|
- .
|
|
- relative-path
|
|
# MacOS denies `sudo chmod a+w /`
|
|
#- /
|
|
asroot:
|
|
- name: ''
|
|
sudo: ''
|
|
- name: ' as root'
|
|
sudo: 'sudo '
|
|
|
|
name: MacOS ${{ matrix.volume }}${{ matrix.asroot.name }}
|
|
runs-on: macos-14
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- run: brew install argp-standalone
|
|
- run: make
|
|
|
|
- if: matrix.volume == 'relative-path'
|
|
run: mkdir relative-path
|
|
|
|
- run: build/f3write -V
|
|
- run: build/f3write --help
|
|
- run: ${{ matrix.asroot.sudo }}build/f3write -s 2 -e 4 -w 50000 ${{ matrix.volume }}
|
|
|
|
- run: stat ${{ matrix.volume }}/2.h2w
|
|
- run: stat ${{ matrix.volume }}/3.h2w
|
|
- run: stat ${{ matrix.volume }}/4.h2w
|
|
|
|
- run: build/f3read -V
|
|
- run: build/f3read --help
|
|
- run: ${{ matrix.asroot.sudo }}build/f3read -s 2 -e 4 -r 50000 ${{ matrix.volume }}
|
|
|
|
OpenBSD:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
volume:
|
|
- /tmp
|
|
- .
|
|
- relative-path
|
|
asroot:
|
|
- name: ''
|
|
sudo: ''
|
|
- name: ' as root'
|
|
sudo: 'sudo '
|
|
exclude:
|
|
- volume: .
|
|
asroot: { name: ' as root', sudo: 'sudo ' }
|
|
- volume: relative-path
|
|
asroot: { name: ' as root', sudo: 'sudo ' }
|
|
|
|
name: OpenBSD ${{ matrix.volume }}${{ matrix.asroot.name }}
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Test on OpenBSD
|
|
uses: cross-platform-actions/action@v0.25.0
|
|
with:
|
|
operating_system: openbsd
|
|
version: '7.5'
|
|
run: |
|
|
sudo pkg_add argp-standalone gmake
|
|
gmake
|
|
|
|
if [ "${{ matrix.volume }}" = "relative-path" ]; then
|
|
mkdir relative-path
|
|
fi
|
|
|
|
build/f3write -V
|
|
build/f3write --help
|
|
${{ matrix.asroot.sudo }}build/f3write -s 2 -e 4 -w 50000 ${{ matrix.volume }}
|
|
|
|
stat ${{ matrix.volume }}/2.h2w
|
|
stat ${{ matrix.volume }}/3.h2w
|
|
stat ${{ matrix.volume }}/4.h2w
|
|
|
|
build/f3read -V
|
|
build/f3read --help
|
|
${{ matrix.asroot.sudo }}build/f3read -s 2 -e 4 -r 50000 ${{ matrix.volume }}
|
|
|
|
FreeBSD:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
volume:
|
|
- /tmp
|
|
- .
|
|
- relative-path
|
|
asroot:
|
|
- name: ''
|
|
sudo: ''
|
|
- name: ' as root'
|
|
sudo: 'sudo '
|
|
exclude:
|
|
- volume: .
|
|
asroot: { name: ' as root', sudo: 'sudo ' }
|
|
- volume: relative-path
|
|
asroot: { name: ' as root', sudo: 'sudo ' }
|
|
|
|
name: FreeBSD ${{ matrix.volume }}${{ matrix.asroot.name }}
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Test on FreeBSD
|
|
uses: cross-platform-actions/action@v0.25.0
|
|
with:
|
|
operating_system: freebsd
|
|
version: '14.1'
|
|
run: |
|
|
sudo pkg install -y argp-standalone gmake
|
|
gmake
|
|
|
|
if [ "${{ matrix.volume }}" = "relative-path" ]; then
|
|
mkdir relative-path
|
|
fi
|
|
|
|
build/f3write -V
|
|
build/f3write --help
|
|
${{ matrix.asroot.sudo }}build/f3write -s 2 -e 4 -w 50000 ${{ matrix.volume }}
|
|
|
|
stat ${{ matrix.volume }}/2.h2w
|
|
stat ${{ matrix.volume }}/3.h2w
|
|
stat ${{ matrix.volume }}/4.h2w
|
|
|
|
build/f3read -V
|
|
build/f3read --help
|
|
${{ matrix.asroot.sudo }}build/f3read -s 2 -e 4 -r 50000 ${{ matrix.volume }}
|
|
|
|
Cygwin:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
volume:
|
|
- cygwin: /cygdrive/c
|
|
windows: 'C:'
|
|
- cygwin: .
|
|
windows: .
|
|
- cygwin: relative-path
|
|
windows: relative-path
|
|
- cygwin: /
|
|
windows: 'C:\cygwin'
|
|
|
|
name: Cygwin ${{ matrix.volume.cygwin }}
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: cygwin/cygwin-install-action@v2
|
|
with:
|
|
packages: gcc-core libargp-devel make
|
|
|
|
- run: "$Env:LDFLAGS = '-Wl,--stack,4000000'; make"
|
|
|
|
- if: matrix.volume.windows == 'relative-path'
|
|
run: New-Item -ItemType Directory -Path relative-path
|
|
|
|
- run: '& .\build\f3write.exe -V'
|
|
- run: '& .\build\f3write.exe --help'
|
|
- run: '& .\build\f3write.exe -s 2 -e 4 -w 50000 ${{ matrix.volume.cygwin }}'
|
|
|
|
- run: 'Get-Item ${{ matrix.volume.windows }}\2.h2w'
|
|
- run: 'Get-Item ${{ matrix.volume.windows }}\3.h2w'
|
|
- run: 'Get-Item ${{ matrix.volume.windows }}\4.h2w'
|
|
|
|
- run: '& .\build\f3read.exe -V'
|
|
- run: '& .\build\f3read.exe --help'
|
|
- run: '& .\build\f3read.exe -s 2 -e 4 -r 50000 ${{ matrix.volume.cygwin }}'
|