Compare commits

..
Author SHA1 Message Date
t3hn3rd 188b1aebb0 feature: Pipeline - LVGL Build Caching
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Add LVGL build caching: store liblvgl.a on host mount to skip
  full recompilation on subsequent builds
2026-03-03 23:22:09 +00:00
t3hn3rd 452203b7b4 Merge pull request 'bug: vtop incorrect bitmask' (#36) from feature/vtop-fix into develop
continuous-integration/drone/push Build is passing
Reviewed-on: #36
Reviewed-by: Aaron Hance <[email protected]>
2026-03-03 20:03:47 +00:00
10 changed files with 31 additions and 2065 deletions

No files matched your search

+21 -7
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# compile_lvgl.sh — Download LVGL v9.2 source and compile into lib/liblvgl.a # compile_lvgl.sh — Download LVGL v9.2 source and compile into lib/liblvgl.a
# Clone & compile in /tmp (fast container-local fs). # Clone & compile in /tmp (fast container-local fs).
# Copy source + objects to /lvgl (host mount) for debugging. # Cache liblvgl.a on host mount (/code/lvgl/) to skip rebuild.
set -e set -e
LVGL_VERSION="v9.2.2" LVGL_VERSION="v9.2.2"
@@ -10,6 +10,7 @@ LVGL_DIR="/tmp/lvgl"
OBJ_DIR="/tmp/lvgl_obj" OBJ_DIR="/tmp/lvgl_obj"
CONF_DIR="$(pwd)/lvglh" CONF_DIR="$(pwd)/lvglh"
OUT_DIR="$(pwd)/lib" OUT_DIR="$(pwd)/lib"
CACHE_DIR="/code/lvgl"
CC="gcc" CC="gcc"
CFLAGS="-m32 -march=i686 -ffreestanding \ CFLAGS="-m32 -march=i686 -ffreestanding \
@@ -26,6 +27,17 @@ echo " "
echo "Compiling LVGL..." echo "Compiling LVGL..."
echo " " echo " "
# If cached liblvgl.a exists on host mount, just copy it and skip everything
if [ -f "${CACHE_DIR}/liblvgl.a" ]; then
echo "Found cached liblvgl.a in ${CACHE_DIR}, copying to ${OUT_DIR}..."
cp "${CACHE_DIR}/liblvgl.a" "${OUT_DIR}/liblvgl.a"
echo "(Delete lvgl/liblvgl.a to force a full rebuild.)"
echo " "
echo "LVGL compilation complete (cached)."
echo " "
exit 0
fi
# Clone LVGL into /tmp (container-local) # Clone LVGL into /tmp (container-local)
rm -rf "$LVGL_DIR" rm -rf "$LVGL_DIR"
echo "Downloading LVGL ${LVGL_VERSION}..." echo "Downloading LVGL ${LVGL_VERSION}..."
@@ -105,12 +117,14 @@ else
echo "No custom LVGL files in lvglh/." echo "No custom LVGL files in lvglh/."
fi fi
# Copy source + objects to /lvgl host mount for debugging # Cache liblvgl.a and source to host mount for next build
echo "Copying LVGL source and objects to host mount..." echo "Caching LVGL to host mount..."
mkdir /code/lvgl 2>/dev/null || true mkdir -p "$CACHE_DIR"
rm -rf /code/lvgl/* /code/lvgl/.[!.]* /code/lvgl/..?* 2>/dev/null || true rm -rf ${CACHE_DIR}/* ${CACHE_DIR}/.[!.]* ${CACHE_DIR}/..?* 2>/dev/null || true
cp -a "$LVGL_DIR/src" /code/lvgl/src cp "${OUT_DIR}/liblvgl.a" "${CACHE_DIR}/liblvgl.a"
cp -a "$OBJ_DIR" /code/lvgl/obj cp -a "$LVGL_DIR/src" "${CACHE_DIR}/src"
cp -a "$LVGL_DIR"/*.h "${CACHE_DIR}/" 2>/dev/null || true
cp -a "$OBJ_DIR" "${CACHE_DIR}/obj"
echo "Done." echo "Done."
echo " " echo " "
File diff suppressed because it is too large. Load diff
+4 -5
View File
@@ -100,8 +100,8 @@ end;
procedure send(p_data : void; p_len : uint16); procedure send(p_data : void; p_len : uint16);
begin begin
push_trace('net.send'); //push_trace('net.send');
writeToLogLn('L1/NET: send'); //writeToLogLn('L1: net.send');
if CBSend <> nil then CBSend(p_data, p_len); if CBSend <> nil then CBSend(p_data, p_len);
pop_trace; pop_trace;
end; end;
@@ -111,7 +111,8 @@ var
context : PPacketContext; context : PPacketContext;
begin begin
push_trace('net.recv'); //push_trace('net.recv');
//writeToLogLn('L1: net.recv');
context:= newPacketContext; context:= newPacketContext;
if CBNext <> nil then CBNext(p_data, p_len, context); if CBNext <> nil then CBNext(p_data, p_len, context);
freePacketContext(context); freePacketContext(context);
@@ -128,7 +129,6 @@ end;
procedure init; procedure init;
begin begin
push_trace('net.init'); push_trace('net.init');
writeToLogLn('L1/NET: init');
//l2 //l2
eth2.register; eth2.register;
//l3 //l3
@@ -136,7 +136,6 @@ begin
ipv4.register; ipv4.register;
//l4 //l4
icmp.register; icmp.register;
tcp.register;
udp.register; udp.register;
//l5 //l5
dhcp.register; dhcp.register;
+1 -4
View File
@@ -46,7 +46,6 @@ var
procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback); procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback);
begin begin
push_trace('eth2.registerTypePromisc');
register; register;
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB; if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
Promisc[eType]:= true; Promisc[eType]:= true;
@@ -54,7 +53,6 @@ end;
procedure registerType(eType : uint16; RecvCB : TRecvCallback); procedure registerType(eType : uint16; RecvCB : TRecvCallback);
begin begin
push_trace('eth2.registerType');
register; register;
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB; if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
end; end;
@@ -95,7 +93,7 @@ var
buf : puint8; buf : puint8;
begin begin
push_trace('eth2.recv'); //writeToLogLn(' L2: eth2.recv');
buf:= puint8(p_data); buf:= puint8(p_data);
Header:= PEthernetHeader(buf); Header:= PEthernetHeader(buf);
@@ -122,7 +120,6 @@ var
begin begin
push_trace('eth2.register'); push_trace('eth2.register');
if not Registered then begin if not Registered then begin
writeToLogLn(' L2/ETH: register');
for i:=0 to 65535 do begin for i:=0 to 65535 do begin
EthTypes[i]:= nil; EthTypes[i]:= nil;
Promisc[i]:= false; Promisc[i]:= false;
-9
View File
@@ -96,7 +96,6 @@ var
hSize, pSize : uint8; hSize, pSize : uint8;
begin begin
push_trace('arp.send');
if p_context <> nil then begin if p_context <> nil then begin
buf:= kalloc(sizeof(TARPHeader)); buf:= kalloc(sizeof(TARPHeader));
hdr:= PARPHeader(buf); hdr:= PARPHeader(buf);
@@ -136,8 +135,6 @@ var
context : PPacketContext; context : PPacketContext;
begin begin
push_trace('arp.sendGratuitous');
writeToLogLn(' L3/ARP: sendGratuitous');
context:= newPacketContext; context:= newPacketContext;
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Destination[0]); CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Destination[0]);
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
@@ -153,7 +150,6 @@ var
CacheRecord : PARPCacheRecord; CacheRecord : PARPCacheRecord;
begin begin
push_trace('arp.sendRequestGateway');
context:= newPacketContext; context:= newPacketContext;
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]); CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
if CacheRecord <> nil then begin if CacheRecord <> nil then begin
@@ -172,8 +168,6 @@ var
CacheRecord : PARPCacheRecord; CacheRecord : PARPCacheRecord;
begin begin
push_trace('arp.sendRequest');
writeToLogLn(' L3/ARP: sendRequest');
context:= newPacketContext; context:= newPacketContext;
CopyIPv4(ip, @context^.IP.Destination[0]); CopyIPv4(ip, @context^.IP.Destination[0]);
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
@@ -190,7 +184,6 @@ var
CacheRecord : PARPCacheRecord; CacheRecord : PARPCacheRecord;
begin begin
push_trace('arp.resolveIP');
CacheRecord:= findCacheRecordByIP(ip); CacheRecord:= findCacheRecordByIP(ip);
resolveIP:= nil; resolveIP:= nil;
if CacheRecord = nil then begin if CacheRecord = nil then begin
@@ -210,7 +203,6 @@ var
context : PPacketContext; context : PPacketContext;
begin begin
push_trace('arp.recv');
{ Get our converted Header } { Get our converted Header }
Header:= PARPHeader(p_data); Header:= PARPHeader(p_data);
AHeader.Hardware_Type:= (Header^.Hardware_Type_Hi SHL 8) + Header^.Hardware_Type_Lo; AHeader.Hardware_Type:= (Header^.Hardware_Type_Hi SHL 8) + Header^.Hardware_Type_Lo;
@@ -306,7 +298,6 @@ procedure register;
begin begin
push_trace('arp.register'); push_trace('arp.register');
if not Registered then begin if not Registered then begin
writeToLogLn(' L3/ARP: register');
Cache:= LL_New(sizeof(TARPCacheRecord)); Cache:= LL_New(sizeof(TARPCacheRecord));
eth2.registerTypePromisc($0806, @recv); eth2.registerTypePromisc($0806, @recv);
stdio.registerCommand('ARP', @terminal_command_arp, 'Get ARP Table.'); stdio.registerCommand('ARP', @terminal_command_arp, 'Get ARP Table.');
-7
View File
@@ -46,9 +46,7 @@ var
function getIPv4Config : PIPv4Configuration; function getIPv4Config : PIPv4Configuration;
begin begin
push_trace('ipv4.getIPv4Config');
getIPv4Config:= @Config; getIPv4Config:= @Config;
pop_trace;
end; end;
procedure send(p_data : void; p_len : uint16; p_context : PPacketContext); procedure send(p_data : void; p_len : uint16; p_context : PPacketContext);
@@ -59,7 +57,6 @@ var
buffer : void; buffer : void;
begin begin
push_trace('ipv4.send');
inc(CurrentID); inc(CurrentID);
Header.version:= 4; Header.version:= 4;
Header.header_len:= 5; Header.header_len:= 5;
@@ -87,7 +84,6 @@ begin
memcpy(uint32(p_data), uint32(Buffer) + (Header.header_len * 4), p_len); memcpy(uint32(p_data), uint32(Buffer) + (Header.header_len * 4), p_len);
eth2.send(Buffer, (Header.header_len * 4) + p_len, $0800, p_context); eth2.send(Buffer, (Header.header_len * 4) + p_len, $0800, p_context);
kfree(Buffer); kfree(Buffer);
pop_trace;
end; end;
procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext); procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext);
@@ -99,7 +95,6 @@ var
len : uint16; len : uint16;
begin begin
push_trace('ipv4.recv');
Header:= PIPV4Header(p_data); Header:= PIPV4Header(p_data);
AHeader.version:= Header^.version; AHeader.version:= Header^.version;
AHeader.header_len:= Header^.header_len; AHeader.header_len:= Header^.header_len;
@@ -200,7 +195,6 @@ var
begin begin
push_trace('ipv4.register'); push_trace('ipv4.register');
if not Registered then begin if not Registered then begin
writeToLogLn(' L3/IPv4: register');
for i:=0 to 255 do begin for i:=0 to 255 do begin
Protocols[i]:= nil; Protocols[i]:= nil;
end; end;
@@ -219,7 +213,6 @@ end;
procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback); procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback);
begin begin
push_trace('ipv4.registerProtocol');
register; register;
if Protocols[Protocol_ID] = nil then Protocols[Protocol_ID]:= recv_callback; if Protocols[Protocol_ID] = nil then Protocols[Protocol_ID]:= recv_callback;
pop_trace; pop_trace;
+1 -8
View File
@@ -23,7 +23,7 @@ interface
uses uses
bios_data_area, bios_data_area,
lmemorymanager, tracer, lmemorymanager,
net, nettypes, netutils, ipv4, arp, util; net, nettypes, netutils, ipv4, arp, util;
type type
@@ -55,7 +55,6 @@ var
i : uint8; i : uint8;
begin begin
push_trace('icmp.nextInactiveHandler');
nextInactiveHandler:= 0; nextInactiveHandler:= 0;
for i:=1 to 255 do begin for i:=1 to 255 do begin
if not Handlers[i].Active then begin if not Handlers[i].Active then begin
@@ -81,8 +80,6 @@ var
Size : uint32; Size : uint32;
begin begin
push_trace('icmp.sendICMPRequest');
writeToLogLn(' L4/ICMP: sendICMPRequest');
handle:= nextInactiveHandler; handle:= nextInactiveHandler;
Handlers[handle].Active:= true; Handlers[handle].Active:= true;
Handlers[handle].OnReply:= OnRep; Handlers[handle].OnReply:= OnRep;
@@ -138,8 +135,6 @@ var
Handle : uint8; Handle : uint8;
begin begin
push_trace('icmp.recv');
writeToLogLn(' L4/ICMP: recv');
Header:= PICMPHeader(p_data); Header:= PICMPHeader(p_data);
//writehexlnWND(Header^.ICMP_Type, getTerminalHWND); //writehexlnWND(Header^.ICMP_Type, getTerminalHWND);
case Header^.ICMP_Type of case Header^.ICMP_Type of
@@ -248,8 +243,6 @@ var
i : uint32; i : uint32;
begin begin
push_trace('icmp.register');
writeToLogLn(' L4/ICMP: register');
for i:=0 to 255 do begin for i:=0 to 255 do begin
Handlers[i].Active:= false; Handlers[i].Active:= false;
Handlers[i].OnError:= nil; Handlers[i].OnError:= nil;
File diff suppressed because it is too large. Load diff
+1 -8
View File
@@ -25,7 +25,7 @@ uses
lmemorymanager, lmemorymanager,
nettypes, netutils, nettypes, netutils,
ipv4, net, ipv4, net,
tracer, util; util;
procedure register(); procedure register();
function bind(bindContext : PUDPBindContext) : TUDPError; function bind(bindContext : PUDPBindContext) : TUDPError;
@@ -71,7 +71,6 @@ begin
nullend:= true; nullend:= true;
end; end;
pseudoBuffer:= kalloc(sizeof(TUDPPseudoHeader) + pseudoSize); pseudoBuffer:= kalloc(sizeof(TUDPPseudoHeader) + pseudoSize);
push_trace('udp.CalculateChecksum');
pseudoBuffer8:= puint8(pseudoBuffer); pseudoBuffer8:= puint8(pseudoBuffer);
pseudoBuffer16:= puint16(pseudoBuffer); pseudoBuffer16:= puint16(pseudoBuffer);
pseudoBuffer32:= puint32(pseudoBuffer); pseudoBuffer32:= puint32(pseudoBuffer);
@@ -119,7 +118,6 @@ var
begin begin
push_trace('udp.send');
if udpContext <> nil then begin if udpContext <> nil then begin
size:= p_len + sizeof(TUDPHeader); size:= p_len + sizeof(TUDPHeader);
buffer:= kalloc(size); buffer:= kalloc(size);
@@ -154,7 +152,6 @@ var
context : PUDPBindContext; context : PUDPBindContext;
begin begin
push_trace('udp.bind');
result:= tueGenericError; result:= tueGenericError;
if bindContext <> nil then begin if bindContext <> nil then begin
if Ports[bindContext^.port] = nil then begin if Ports[bindContext^.port] = nil then begin
@@ -177,7 +174,6 @@ var
context : PUDPBindContext; context : PUDPBindContext;
begin begin
push_trace('udp.unbind');
result:= tueGenericError; result:= tueGenericError;
if bindContext <> nil then begin if bindContext <> nil then begin
context:= Ports[bindContext^.port]; context:= Ports[bindContext^.port];
@@ -207,7 +203,6 @@ var
size : uint16; size : uint16;
begin begin
push_trace('udp.ProcessPacket');
header:= PUDPHeader(p_data); header:= PUDPHeader(p_data);
if Ports[switchendian16(header^.DstPort)] <> nil then begin if Ports[switchendian16(header^.DstPort)] <> nil then begin
context:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext))); context:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext)));
@@ -250,8 +245,6 @@ var
Checksum : uint32; Checksum : uint32;
begin begin
push_trace('udp.register');
writeToLogLn(' L4/UDP: register');
for i:=0 to 65535 do begin for i:=0 to 65535 do begin
Ports[i]:= nil; Ports[i]:= nil;
end; end;
+3 -6
View File
@@ -415,7 +415,7 @@ end;
procedure processPacket_NAK(Header : PDHCPHeader; Options : PDHCPOptions); procedure processPacket_NAK(Header : PDHCPHeader; Options : PDHCPOptions);
begin begin
writeToLogLn(' L5/DHCP: Process NAK.'); syslog.logln('DHCP', 'Process NAK.');
{ Server provided a NAK, NULL configuration ready for next DISCOVER/Request } { Server provided a NAK, NULL configuration ready for next DISCOVER/Request }
nullConfiguration(); nullConfiguration();
end; end;
@@ -429,7 +429,7 @@ var
cfgopt : void; cfgopt : void;
begin begin
writeToLogLn(' L5/DHCP: Process ACK.'); syslog.logln('DHCP', 'Process ACK.');
getIPv4Config^.UP:= false; getIPv4Config^.UP:= false;
//Copy new address //Copy new address
@@ -484,7 +484,7 @@ Var
begin begin
syslog.logln('DHCP', 'Process OFFER.'); syslog.logln('DHCP', 'Process OFFER.');
writeToLogLn(' L5/DHCP: Process OFFER.');
{ Check the Transaction ID matches our stored ID, discard if not. } { Check the Transaction ID matches our stored ID, discard if not. }
if Header^.Transaction_ID = Configuration^.Transaction then begin if Header^.Transaction_ID = Configuration^.Transaction then begin
syslog.logln('DHCP', 'XID Match'); syslog.logln('DHCP', 'XID Match');
@@ -566,7 +566,6 @@ var
begin begin
tracer.push_trace('dhcp.processPacket.enter'); tracer.push_trace('dhcp.processPacket.enter');
writeToLogLn(' L5/DHCP: processPacket');
syslog.logln('DHCP','processPacket'); syslog.logln('DHCP','processPacket');
{ Give access to header values & process to correct endianness. } { Give access to header values & process to correct endianness. }
@@ -637,7 +636,6 @@ var
begin begin
tracer.push_trace('dhcp.DHCPDiscover.begin'); tracer.push_trace('dhcp.DHCPDiscover.begin');
writeToLogLn(' L5/DHCP: DHCPDiscover');
{ Ensure we have a socket bound. } { Ensure we have a socket bound. }
if Socket <> nil then begin if Socket <> nil then begin
{ Clear any current configuration } { Clear any current configuration }
@@ -713,7 +711,6 @@ var
begin begin
tracer.push_trace('dhcp.register'); tracer.push_trace('dhcp.register');
writeToLogLn(' L5/DHCP: register');
syslog.logln('DHCP', 'Register begin.'); syslog.logln('DHCP', 'Register begin.');
{ Kalloc our Configuration Data } { Kalloc our Configuration Data }