Compare commits

...

11 commits
v0.1.2 ... main

Author SHA1 Message Date
bc090fa9b2
Remove redundant log statement in echo1 and add confirmation log in reset_device
All checks were successful
/ release (nightly) (push) Successful in 1m51s
2025-05-21 13:53:13 +02:00
86cf230f21
Bump package version to 0.2.1 in Cargo.toml
All checks were successful
/ release (nightly) (push) Successful in 2m20s
2025-05-14 22:22:29 +02:00
fefcbe4373
Remove debug statement from manage_line function
All checks were successful
/ release (nightly) (push) Successful in 2m9s
2025-05-14 22:19:06 +02:00
f7c9605f26
Update package version to 0.2.0 in Cargo.toml
All checks were successful
/ release (nightly) (push) Successful in 34m39s
2025-05-14 18:43:03 +02:00
f4374459dd
Refactor kernel message file handling to improve readability and add debugging output 2025-05-14 18:42:48 +02:00
89be5b3542
Use environment variable for kernel message file path 2025-05-14 17:58:41 +02:00
8209da3b21
Refactor device reset logic to use match statement for better clarity
All checks were successful
/ release (nightly) (push) Successful in 1m55s
2025-05-14 16:30:03 +02:00
28ffb56665
Update package description and version in Cargo.toml
All checks were successful
/ release (nightly) (push) Successful in 2m9s
2025-05-14 13:12:34 +02:00
9bfe63b1a9
Refactor build workflow to separate Debian package upload step
All checks were successful
/ release (nightly) (push) Successful in 2m9s
2025-05-14 13:07:30 +02:00
78cd7279ba
Add Docker upload step for Debian package in build workflow
Some checks failed
/ release (nightly) (push) Failing after 2m5s
2025-05-14 13:02:31 +02:00
fbb62b9006
Update build workflow to create Debian package and adjust release directory
All checks were successful
/ release (nightly) (push) Successful in 2m21s
2025-05-14 12:54:36 +02:00
3 changed files with 37 additions and 13 deletions

View file

@ -25,9 +25,20 @@ jobs:
cd /tmp/phenix
mkdir -p /tmp/release
tar -czf /tmp/release/phenix_${{ github.ref_name }}.tar.gz .
- name: Make debian package
run: |
cargo install cargo-deb
cargo deb
cp target/debian/*.deb /tmp/release
- name: Make release
uses: actions/forgejo-release@v2.6.0
with:
direction: upload
release-dir: /tmp/phenix
token: ${{ secrets.FORGEJO_TOKEN }}
release-dir: /tmp/release
token: ${{ secrets.FORGEJO_TOKEN }}
- name: Upload debian package
run: |
cp /tmp/release/*.deb /tmp/phenix.deb
curl --user ${{ vars.DOCKER_PUSH_USERNAME }}:${{ secrets.DOCKER_PUSH_PASSWORD }} \
--upload-file /tmp/phenix.deb \
https://code.edgarpierre.fr/api/packages/${{ github.repository_owner }}/debian/pool/bookworm/main/upload

View file

@ -1,7 +1,14 @@
[package]
name = "phenix"
version = "0.1.2"
description = "Utility to restart PCIe devices when link is lost."
version = "0.2.1"
edition = "2024"
license = "GPL-3.0-or-later"
repository="https://code.edgarpierre.fr/edpibu/phenix"
authors = ["edpibu <contact@edgarpierre.fr>"]
[dependencies]
regex = "1.11.1"
[package.metadata.deb]
maintainer-scripts = "debian/"
[package.metadata.deb.systemd-units]
unit-scripts = "."

View file

@ -1,14 +1,20 @@
#![feature(file_buffered)]
use std::env;
use std::fs::File;
use std::io::BufRead;
use std::io::Write;
use std::io::Seek;
use std::io::SeekFrom;
fn main() {
println!("Reading kernel messages...");
let kmsg_file =
File::open_buffered("/dev/kmsg").expect("Failed to open /dev/kmsg");
let mut kmsg_file =
File::open_buffered(env::var("PHENIX_KMSG").unwrap_or(String::from("/dev/kmsg")))
.expect("Failed to open /dev/kmsg");
kmsg_file.seek(SeekFrom::End(0)).expect("Failed to seek to end");
let lines = kmsg_file.lines();
for line in lines {
match line {
@ -24,8 +30,9 @@ fn manage_line(line: String) {
println!("PCIe link lost {prefix}");
let id = line.splitn(3, " ").nth(1);
if let Some(id) = id {
reset_device(id);
match id {
Some(id) => reset_device(id),
None => println!("No device id found in message {line}"),
}
}
}
@ -34,6 +41,7 @@ fn manage_line(line: String) {
fn reset_device(id: &str) {
println!("Resetting {id}");
echo1(rm_file_path(&id));
println!("Removed device {id}");
echo1(String::from("/sys/bus/pci/rescan"));
println!("Rescanned PCI bus");
}
@ -43,14 +51,12 @@ fn echo1(path: String) {
match rm_file {
Err(e) => println!("Failed to open remove file at {path}: {e}"),
Ok(mut file) => {
file
.write_all(b"1")
file.write_all(b"1")
.expect("Failed to write to remove file");
println!("Removed device {path}");
}
}
}
fn rm_file_path(id: &str) -> String {
format!("/sys/bus/pci/devices/{id}/remove")
}
}