Compare commits

..

3 commits

Author SHA1 Message Date
Vinzenz Schroeter 4206dcc543 build all variations in CI to keep track of what works
Some checks failed
Rust / build-gnu-apt (pull_request) Successful in 4m14s
Rust / build-musl-beta (pull_request) Failing after 53s
Rust / build-size-gnu-unstable (pull_request) Successful in 1m11s
Rust / build-size-musl-unstable (pull_request) Failing after 49s
2025-05-04 12:12:57 +02:00
Vinzenz Schroeter ee7d6ac857 a bunch of options for the Makefile 2025-05-04 12:12:57 +02:00
Vinzenz Schroeter c4ccc85e6e update to released servicepoint version 2025-05-04 12:12:57 +02:00
5 changed files with 45 additions and 13 deletions

View file

@ -13,7 +13,6 @@ env:
RUSTFLAGS: "-Dwarnings"
jobs:
build-gnu-apt:
runs-on: ubuntu-latest
steps:
@ -40,6 +39,24 @@ jobs:
- name: build example -- glibc debug
run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=debug
# this _should_ have been -stable, but there is a bug when running in the container ("Invalid cross-device link")
build-musl-beta:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update repos
run: sudo apt-get update -qq
- name: Install toolchain
run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup
- name: install rust target
run: rustup default beta && rustup target add aarch64-unknown-linux-musl && rustup component add rust-src && rustup update
- name: build example -- musl release
run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=release MUSL=1 CARGO="rustup run beta cargo"
- name: build example -- musl debug
run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=debug MUSL=1 CARGO="rustup run beta cargo"
build-size-gnu-unstable:
runs-on: ubuntu-latest
steps:
@ -54,3 +71,19 @@ jobs:
- name: build example -- glibc size-optimized
run: cd example && make clean && make TARGET=aarch64-unknown-linux-gnu PROFILE=size-optimized CARGO="rustup run nightly cargo"
build-size-musl-unstable:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update repos
run: sudo apt-get update -qq
- name: Install toolchain
run: sudo apt-get install -qy liblzma-dev gcc make pkgconf musl-dev musl-tools rustup
- name: install rust targets
run: rustup toolchain install nightly -t aarch64-unknown-linux-musl -c rust-src --no-self-update
- name: build example -- musl size-optimized
run: cd example && make clean && make TARGET=aarch64-unknown-linux-musl PROFILE=size-optimized MUSL=1 LTO=1 CARGO="rustup run nightly cargo"

View file

@ -31,6 +31,7 @@ endif
#endif
RUST_TARGET_DIR := $(REPO_ROOT)/target/$(TARGET)/$(CFG_PROFILE)
OUT_DIR := $(realpath $(THIS_DIR)/out/)
ifeq ($(CFG_PROFILE), size-optimized)
CARGO_PROFILE := size-optimized
@ -91,7 +92,7 @@ all: $(_bins)
clean: clean-c clean-rust
clean-c:
rm -r out || true
rm -r $(OUT_DIR) || true
clean-rust:
rm $(SERVICEPOINT_HEADER_OUT)/servicepoint.h || true
@ -122,7 +123,7 @@ sizes: $(_bins)
ls -lB out
analyze-size: out/$(BIN)_unstripped
nm --print-size --size-sort --reverse-sort --radix=d --demangle out/$(BIN)_unstripped \
nm --print-size --size-sort --reverse-sort --radix=d --demangle $(OUT_DIR)/$(BIN)_unstripped \
| awk '{size=$$2+0; print size "\t" $$4}' \
| less

View file

@ -1,7 +1,5 @@
use crate::{heap_drop, heap_move, heap_move_nonnull, heap_remove, ByteSlice};
use servicepoint::{
BinaryOperation, BitVecCommand, CompressionCode, DisplayBitVec, Packet,
};
use servicepoint::{BinaryOperation, BitVecCommand, CompressionCode, DisplayBitVec, Packet};
use std::ptr::NonNull;
/// A vector of bits

View file

@ -32,10 +32,10 @@ pub use crate::byte_slice::*;
pub use crate::char_grid::*;
pub use crate::cp437_grid::*;
pub use crate::packet::*;
pub use crate::typed_command::*;
pub use crate::udp::*;
pub use servicepoint::CommandCode;
use std::ptr::NonNull;
pub use crate::typed_command::*;
pub use crate::udp::*;
mod bitmap;
mod bitvec;

View file

@ -16,7 +16,9 @@ use std::ptr::NonNull;
/// sp_udp_send_command(connection, sp_command_clear());
/// ```
#[no_mangle]
pub unsafe extern "C" fn sp_udp_open(host: NonNull<c_char>) -> *mut UdpSocket {
pub unsafe extern "C" fn sp_udp_open(
host: NonNull<c_char>,
) -> *mut UdpSocket {
let host = unsafe { CStr::from_ptr(host.as_ptr()) }
.to_str()
.expect("Bad encoding");
@ -107,9 +109,7 @@ pub unsafe extern "C" fn sp_udp_send_header(
header,
payload: vec![],
};
unsafe { udp_connection.as_ref() }
.send(&Vec::from(packet))
.is_ok()
unsafe { udp_connection.as_ref() }.send(&Vec::from(packet)).is_ok()
}
/// Closes and deallocates a [UdpConnection].