fix flake, mark which packages work

This commit is contained in:
Vinzenz Schroeter 2025-06-18 00:11:18 +02:00
parent 75e2df41fe
commit 85d4ed5a3b
5 changed files with 26 additions and 29 deletions

View file

@ -129,7 +129,7 @@ bool log_command(struct Command command) {
break; break;
} }
case COMMAND_TAG_GLOBAL_BRIGHTNESS: { case COMMAND_TAG_GLOBAL_BRIGHTNESS: {
Brightness brightness = sp_cmd_brightness_global_get(command.data.global_brightness); Brightness brightness = sp_cmd_brightness_global_get_brightness(command.data.global_brightness);
printf("-> GlobalBrightnessCommand with params: brightness=%hu\n", brightness); printf("-> GlobalBrightnessCommand with params: brightness=%hu\n", brightness);
break; break;
} }
@ -191,7 +191,7 @@ int main(int argc, char **argv) {
continue; continue;
} }
struct Header *header = sp_packet_get_header(packet); struct Header *header = sp_packet_get_header_mut(packet);
ByteSlice payload = sp_packet_get_payload(packet); ByteSlice payload = sp_packet_get_payload(packet);
printf("Received packet: cc=%d, a=%d, b=%d, c=%d, d=%d, payload=%p (len %zu)\n", printf("Received packet: cc=%d, a=%d, b=%d, c=%d, d=%d, payload=%p (len %zu)\n",

View file

@ -23,8 +23,6 @@ void sock_init() {
/// TODO: all of this for sleeping n ms? There should be a better way! /// TODO: all of this for sleeping n ms? There should be a better way!
int msleep(long msec) { int msleep(long msec) {
int res;
if (msec < 0) { if (msec < 0) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
@ -35,6 +33,7 @@ int msleep(long msec) {
.tv_nsec = (msec % 1000) * 1000000, .tv_nsec = (msec % 1000) * 1000000,
}; };
int res;
do { do {
res = nanosleep(&ts, &ts); res = nanosleep(&ts, &ts);
} while (res && errno == EINTR); } while (res && errno == EINTR);

View file

@ -15,7 +15,7 @@ int main(void) {
if (packet == NULL) if (packet == NULL)
return 1; return 1;
Header *header = sp_packet_get_header(packet); Header *header = sp_packet_get_header_mut(packet);
printf("[%d, %d, %d, %d, %d]\n", header->command_code, header->a, header->b, header->c, header->d); printf("[%d, %d, %d, %d, %d]\n", header->command_code, header->a, header->b, header->c, header->d);
sp_udp_send_packet(sock, packet); sp_udp_send_packet(sock, packet);

View file

@ -3,24 +3,27 @@
set -e set -e
set -x set -x
BUILD="nix build -L" BUILD="nom build -L"
$BUILD .#servicepoint-binding-c -o result $BUILD .#servicepoint-binding-c -o result
$BUILD .#servicepoint-binding-c-stable-release -o result-stable-release $BUILD .#servicepoint-binding-c-stable-release -o result-stable-release
$BUILD .#servicepoint-binding-c-stable-size -o result-stable-size $BUILD .#servicepoint-binding-c-stable-size -o result-stable-size
$BUILD .#servicepoint-binding-c-nightly-release -o result-nightly-release $BUILD .#servicepoint-binding-c-nightly-release -o result-nightly-release
$BUILD .#servicepoint-binding-c-nightly-size -o result-nightly-size
$BUILD .#servicepoint-binding-c-musl-stable-release -o result-musl-release
$BUILD .#servicepoint-binding-c-musl-stable-size -o result-musl-size
# do not work yet:
# $BUILD .#servicepoint-binding-c-musl-nightly-release
# $BUILD .#servicepoint-binding-c-musl-nightly-size
$BUILD .#all-examples -o result-examples $BUILD .#all-examples -o result-examples
$BUILD .#all-examples-size -o result-examples-size $BUILD .#all-examples-size -o result-examples-size
$BUILD .#all-examples-nightly-size -o result-nightly-size
$BUILD .#all-examples-musl -o result-examples-musl # works, but needs to bootstrap a C and Rust compiler
$BUILD .#all-examples-musl-static -o result-examples-musl-static # $BUILD .#servicepoint-binding-c-musl-stable-release -o result-musl-release
$BUILD .#all-examples-musl-static-size -o result-examples-musl-static-size # $BUILD .#servicepoint-binding-c-musl-stable-size -o result-musl-size
# $BUILD .#all-examples-musl-static -o result-examples-musl-static
# $BUILD .#all-examples-musl-static-size -o result-examples-musl-static-size
# $BUILD .#all-examples-musl -o result-examples-musl
# do not work yet:
# $BUILD .#servicepoint-binding-c-nightly-size -o result-nightly-size
# $BUILD .#servicepoint-binding-c-musl-nightly-release
# $BUILD .#servicepoint-binding-c-musl-nightly-size
# $BUILD .#all-examples-nightly-size -o result-examples-nightly-size

View file

@ -14,10 +14,12 @@ let
buildType ? "release", buildType ? "release",
buildNoDefaultFeatures ? false, buildNoDefaultFeatures ? false,
cargoBuildFlags ? [ ], cargoBuildFlags ? [ ],
nativeBuildInputs ? [] nativeBuildInputs ? [],
stdlib ? false,
}: }:
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
inherit version buildType cargoBuildFlags; inherit version buildType cargoBuildFlags stdlib;
pname = "servicepoint-binding-c"; pname = "servicepoint-binding-c";
src = lib.filter { src = lib.filter {
@ -26,7 +28,7 @@ let
./Cargo.lock ./Cargo.lock
./Cargo.toml ./Cargo.toml
./src ./src
./build.rs ./include
./LICENSE ./LICENSE
./cbindgen.toml ./cbindgen.toml
]; ];
@ -41,16 +43,8 @@ let
}; };
nativeBuildInputs = [ pkgs.pkg-config ] ++ nativeBuildInputs; nativeBuildInputs = [ pkgs.pkg-config ] ++ nativeBuildInputs;
buildInputs = [ pkgs.xz ]; buildInputs = [ pkgs.xz ];
preBuild = ''
mkdir -p include
export SERVICEPOINT_HEADER_OUT=$(realpath "include")
echo "Rust version: $(rustc --version)"
echo "preBuild hook: set SERVICEPOINT_HEADER_OUT to $SERVICEPOINT_HEADER_OUT"
'';
postInstall = '' postInstall = ''
cp -r include $out cp -r $src/include $out
mkdir -p $out/lib/pkgconfig mkdir -p $out/lib/pkgconfig
sed "s:\$out:$out:g" ${./servicepoint.pc.in} | sed "s:\$version:$version:g" > $out/lib/pkgconfig/servicepoint.pc sed "s:\$out:$out:g" ${./servicepoint.pc.in} | sed "s:\$version:$version:g" > $out/lib/pkgconfig/servicepoint.pc
@ -149,6 +143,7 @@ let
"-Zbuild-std=core,std,alloc,proc_macro,panic_abort" "-Zbuild-std=core,std,alloc,proc_macro,panic_abort"
"-Zbuild-std-features=panic_immediate_abort" "-Zbuild-std-features=panic_immediate_abort"
]; ];
stdlib = true;
# TODO: remove hard-coded target # TODO: remove hard-coded target
nativeBuildInputs = [fenix.targets."x86_64-unknown-linux-gnu".latest.rust-std]; nativeBuildInputs = [fenix.targets."x86_64-unknown-linux-gnu".latest.rust-std];
# TODO: those override the nix flags # TODO: those override the nix flags