Compare commits

..
Author SHA1 Message Date
t3hn3rd 1db74f791a Merge branch 'develop' into 'master'
Pipeline Cleanup & Expansion

See merge request spexeah/asuro!28
2021-07-06 20:00:31 +00:00
t3hn3rd 372fda3afc Pipeline Cleanup & Expansion 2021-07-06 20:00:31 +00:00
t3hn3rd 749ffe6d73 Merge branch 'develop' into 'master'
Develop

See merge request spexeah/asuro!21
2021-07-05 15:50:43 +00:00
t3hn3rd 76b399f3b5 Merge branch 'develop' into 'master'
klalloc & pipeline changes

Added a klalloc and a klfree (not yet implemented) to lmemorymanager.
Added a page_mappable method to vmemorymanager to check if a page is mappable before trying to map, this supports klalloc.
Added a streamlined pipeline
Added documentation generation to the pipeline.

See merge request spexeah/asuro!19
2021-07-05 15:27:55 +00:00
Aaron 83f7ebb223 Merge branch 'develop' into 'master'
Develop

See merge request spexeah/asuro!12
2021-06-22 22:47:58 +00:00
194 changed files with 9382 additions and 96845 deletions

No files matched your search

-66
View File
@@ -1,66 +0,0 @@
kind: pipeline
type: docker
name: build
steps:
- name: build-image
image: plugins/docker
settings:
repo: t3hn3rd/asuro-build
tags: latest
dockerfile: Dockerfile
registry: docker.io
username:
from_secret: docker_username
password:
from_secret: docker_password
- name: compile
image: t3hn3rd/asuro-build:latest
depends_on:
- build-image
commands:
- git fetch --tags
- find . -type f -print0 | xargs -0 dos2unix
- chmod +x /drone/src/*.sh
- /drone/src/compile.sh
- name: upload-iso-artifact
image: alpine/git
depends_on:
- compile
when:
branch:
- master
environment:
GITEA_TOKEN:
from_secret: gitea_token
commands:
- apk add --no-cache curl
- chmod +w Asuro.iso
- cp Asuro.iso "Asuro-$(git rev-parse --short HEAD).iso"
- echo "Uploading Asuro-$(git rev-parse --short HEAD).iso to Gitea Packages..."
- |
curl -X PUT "https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/$(git rev-parse --short HEAD)/Asuro.iso" \
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
- echo "Updating latest ISO reference..."
- |
curl -X DELETE https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
-H "Authorization: token $GITEA_TOKEN" || echo "No previous latest version found."
- |
curl -X PUT https://gitea.spexeah.com/api/packages/Spexeah/generic/asuro-iso/latest/Asuro.iso \
-H "Authorization: token $GITEA_TOKEN" --upload-file "Asuro-$(git rev-parse --short HEAD).iso"
- name: msg status
image: appleboy/drone-discord
failure: ignore
depends_on:
- compile
when:
status: [success, failure, changed]
settings:
webhook_id:
from_secret: discord_webhook_id
webhook_token:
from_secret: discord_webhook_secret
message: "**Asuro Build**\n\n{{#success build.status}}✅ Build successful!\n\n{{else}}❌ Build failed!\n\n{{/success}}Repository: `{{repo.namespace}}/{{repo.name}}`\nBranch: `{{commit.branch}}`\nCommit: `{{commit.sha}}`\nAuthor: `{{commit.author}} <{{commit.email}}>`\n\nGitea Diff: [Link](<{{commit.link}}>)\nDrone Build: [Link](<{{build.link}}>)\n\nMessage: {{commit.message}}"
-7
View File
@@ -1,8 +1 @@
* text=auto eol=lf * text=auto eol=lf
lvglh/** linguist-vendored
lvgl/** linguist-vendored
.vscode/* linguist-vendored
lib/* linguist-generated
release/* linguist-generated
iso/* linguist-generated
*.asm linguist-detectable
+2 -7
View File
@@ -10,10 +10,5 @@
/*.sh~ /*.sh~
/*.img /*.img
src/include/asuro.pas src/include/asuro.pas
localenv.json .vscode/launch.json
/lvgl/ .vscode
dockerout.txt
AGENTS.md
lessons_learnt.md
*.log
/doc/*.md
+73
View File
@@ -0,0 +1,73 @@
stages:
- Compile Versions
- Compile Sources
- Link
- Generate Documentation
- Deploy
cache:
- key: ${CI_COMMIT_REF_SLUG}
paths:
- lib/*.o
- bin/kernel.bin
- doc
before_script:
- chmod +x *.sh
versions:
stage: Compile Versions
script:
- ./compile_vergen.sh
artifacts:
paths:
- release/*.svg
- src/include/asuro.pas
compile_sources:
stage: Compile Sources
script:
- rm -f lib/*.so
- ./compile_sources.sh
needs:
- versions
link:
stage: Link
script:
- ./compile_stub.sh
- ./compile_link.sh
needs:
- versions
- compile_sources
isogen:
stage: Deploy
script:
- ./compile_isogen.sh
- ./compile_sumgen.sh
artifacts:
paths:
- ./Asuro.iso
- ./release/checksum.svg
needs:
- link
docgen:
stage: Generate Documentation
only:
- master
- develop
script:
- ./compile_sourcelist.sh
- ./compile_docs.sh
# Remove comments when we want to use gitlab pages.
#- cp doc public
allow_failure: true
artifacts:
paths:
- doc
#- public/*
#- ./sources.list
needs:
- versions
-13
View File
@@ -1,13 +0,0 @@
# Map all Aaron identities to a single preferred identity
Aaron Hance <[email protected]> aaron <aaron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
Aaron Hance <[email protected]> aaronhance <[email protected]>
Aaron Hance <[email protected]> aaron hance <[email protected]>
Aaron Hance <[email protected]> Aaron <[email protected]>
# Map all Kieron identities to a single preferred identity
Kieron Morris <[email protected]> kieron <kieron@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c>
Kieron Morris <[email protected]> Kieron <[email protected]>
Kieron Morris <[email protected]> t3hn3rd <[email protected]>
# Map goose's multiple identities
goose <goose@6dbc8c32-bb84-406f-8558-d1cf31a0ab0c> goose <[email protected]>
+10 -3
View File
@@ -3,11 +3,18 @@
{ {
"name":"Run", "name":"Run",
"request": "launch", "request": "launch",
"type": "PowerShell", "type": "coreclr",
"preLaunchTask": "Build", "preLaunchTask": "Build",
"script": "${workspaceFolder}/virtualbox-wrapper.ps1", "program": "VBoxSDL",
"args": ["-Command", "up"], "args": [
"--comment",
"Asuro",
"--startvm",
"7d395c96-891c-4139-b77d-9b6b144b0b93"
],
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"console": "internalConsole",
"internalConsoleOptions": "neverOpen"
} }
] ]
} }
+2 -24
View File
@@ -9,18 +9,14 @@
"command": "docker-compose", "command": "docker-compose",
"args": [ "args": [
"run", "run",
"builder", "builder"
], ],
"type": "shell", "type": "shell",
"problemMatcher": [], "problemMatcher": [],
"group": { "group": {
"kind": "build", "kind": "build",
"isDefault": true "isDefault": true
}, }
"dependsOn": [
"Close VirtualBox",
"Clean"
]
}, },
{ {
"label": "Build (Builder)", "label": "Build (Builder)",
@@ -30,24 +26,6 @@
"builder" "builder"
], ],
"type": "shell" "type": "shell"
},
{
"label": "Clean",
"command": "docker-compose",
"args": [
"down",
"--remove-orphans"
],
"type": "shell"
},
{
"label": "Close VirtualBox",
"command": "./virtualbox-wrapper.ps1",
"args": [
"-Command",
"down"
],
"type": "shell"
} }
] ]
} }
+3 -3
View File
@@ -5,18 +5,18 @@ VOLUME ["/code"]
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib && \ curl dos2unix wget git make nasm binutils:i386 xorriso grub-pc-bin && \
apt-get clean my room apt-get clean my room
SHELL ["/bin/bash", "-c"] SHELL ["/bin/bash", "-c"]
ARG FPC_VERSION=3.2.2 ARG FPC_VERSION=2.6.4
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \ RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \ pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
rm -rf fpc-$FPC_VERSION.i386-linux rm -rf fpc-$FPC_VERSION.i386-linux
COPY compile.sh /compile.sh COPY compile.sh /compile.sh
ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver
RUN chmod +x /usr/bin/semver RUN mkdir /code && chmod +x /usr/bin/semver
WORKDIR /code WORKDIR /code
RUN find . -type f -print0 | xargs -0 dos2unix RUN find . -type f -print0 | xargs -0 dos2unix
ENTRYPOINT ["/bin/bash", "-c"] ENTRYPOINT ["/bin/bash", "-c"]
+15 -20
View File
@@ -7,7 +7,7 @@ echo "Asuro Compilation"
echo " " echo " "
#Compile Stub.asm #Compile Stub.asm
rm -f lib/* rm lib/*
runOrFail() { runOrFail() {
local binary=$1 local binary=$1
@@ -20,31 +20,26 @@ runOrFail() {
fi fi
} }
declare -a run_steps=( runOrFail $(pwd)/compile_stub.sh "Failed to compile stub!"
"compile_stub.sh" "Failed to compile stub!"
"compile_vergen.sh" "Versions failed to compile"
"compile_lvgl.sh" "Failed to compile LVGL!"
"compile_sources.sh" "Failed to compile FPC Sources!"
"compile_link.sh" "Failed linking!"
"compile_isogen.sh" "Failed to create ISO!"
)
for ((i=0; i<${#run_steps[@]}; i+=2)) #Generate .pas with versioning headers.
do runOrFail $(pwd)/compile_vergen.sh "Versions failed to compile"
if [ "$ERRCOUNT" -eq "0" ]
then #Compile all .pas sources
script=$(pwd)/"${run_steps[$i]}" runOrFail $(pwd)/compile_sources.sh "Failed to compile FPC Sources!"
message="${run_steps[$i+1]}"
runOrFail "$script" "$message" #Link into a binary.
fi runOrFail $(pwd)/compile_link.sh "Failed linking!"
done
#Generate an ISO with GRUB as the Bootloader.
runOrFail ./compile_isogen.sh "Failed to create ISO!"
#Call generate final artifacts based on failure or success of the above. #Call generate final artifacts based on failure or success of the above.
if [ "$ERRCOUNT" -ne "0" ] if [ "$ERRCOUNT" -ne "0" ]
then then
. ./compile_finish.sh "failed" ./compile_finish.sh "failed"
else else
. ./compile_finish.sh "success" ./compile_finish.sh "success"
fi fi
cd .. cd ..
+1 -6
View File
@@ -14,9 +14,4 @@ done;
objstring=lib/stub.o" "$objstring objstring=lib/stub.o" "$objstring
echo "Object Files: "$objstring echo "Object Files: "$objstring
echo " " echo " "
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring
# Find libgcc for i386 (needed by LVGL compiled with gcc)
LIBGCC=$(gcc -m32 -print-libgcc-file-name)
echo "libgcc: ${LIBGCC}"
ld -m elf_i386 -s --gc-sections -Tlinker.script -o bin/kernel.bin $objstring --start-group lib/liblvgl.a ${LIBGCC} --end-group
-132
View File
@@ -1,132 +0,0 @@
#!/usr/bin/env bash
# compile_lvgl.sh — Download LVGL v9.2 source and compile into lib/liblvgl.a
# Clone & compile in /tmp (fast container-local fs).
# Cache liblvgl.a on host mount (/code/lvgl/) to skip rebuild.
set -e
LVGL_VERSION="v9.2.2"
LVGL_REPO="https://github.com/lvgl/lvgl.git"
LVGL_DIR="/tmp/lvgl"
OBJ_DIR="/tmp/lvgl_obj"
CONF_DIR="$(pwd)/lvglh"
OUT_DIR="$(pwd)/lib"
CACHE_DIR="/code/lvgl"
CC="gcc"
CFLAGS="-m32 -march=i686 -ffreestanding \
-fno-builtin -fno-stack-protector -fno-pic -fno-pie \
-O2 -Wall -Wno-unused-function -Wno-unused-variable \
-I${CONF_DIR} \
-I${LVGL_DIR} \
-I${LVGL_DIR}/.. \
-DLV_CONF_INCLUDE_SIMPLE"
echo " "
echo "======================="
echo " "
echo "Compiling LVGL..."
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)
rm -rf "$LVGL_DIR"
echo "Downloading LVGL ${LVGL_VERSION}..."
git clone --depth 1 --branch "${LVGL_VERSION}" "${LVGL_REPO}" "${LVGL_DIR}" 2>&1
echo "Download complete."
# Gather all LVGL .c source files (core library only, no demos/examples)
SOURCES=$(find "${LVGL_DIR}/src" -name '*.c' -not -path '*/test/*')
TOTAL=$(echo "$SOURCES" | wc -l)
echo "Found ${TOTAL} LVGL source files."
# Compile each .c file to .o (container-local)
rm -rf "$OBJ_DIR"
mkdir -p "$OBJ_DIR"
COUNT=0
ERRORS=0
for src in $SOURCES; do
COUNT=$((COUNT + 1))
rel="${src#${LVGL_DIR}/src/}"
obj_path="${OBJ_DIR}/${rel%.c}.o"
mkdir -p "$(dirname "$obj_path")"
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
echo "FAILED: $rel"
ERRORS=$((ERRORS + 1))
fi
if [ $((COUNT % 50)) -eq 0 ]; then
echo " Compiled ${COUNT}/${TOTAL}..."
fi
done
echo "Compiled ${COUNT} files (${ERRORS} errors)."
if [ "$ERRORS" -ne 0 ]; then
echo "LVGL compilation FAILED with ${ERRORS} errors."
exit 1
fi
# Archive into static library
OBJECTS=$(find "$OBJ_DIR" -name '*.o')
ar rcs "${OUT_DIR}/liblvgl.a" $OBJECTS
echo "Created ${OUT_DIR}/liblvgl.a"
# Compile custom LVGL extension files from lvglh/
LVGLH_SOURCES=$(find "${CONF_DIR}" -name '*.c' 2>/dev/null || true)
if [ -n "$LVGLH_SOURCES" ]; then
echo " "
echo "Compiling custom LVGL files from lvglh/..."
LVGLH_OBJ_DIR="/tmp/lvglh_obj"
rm -rf "$LVGLH_OBJ_DIR"
mkdir -p "$LVGLH_OBJ_DIR"
HCOUNT=0
HERRORS=0
for src in $LVGLH_SOURCES; do
HCOUNT=$((HCOUNT + 1))
rel="${src#${CONF_DIR}/}"
obj_path="${LVGLH_OBJ_DIR}/${rel%.c}.o"
mkdir -p "$(dirname "$obj_path")"
echo " [lvglh] $rel"
if ! $CC $CFLAGS -c "$src" -o "$obj_path" 2>&1; then
echo " FAILED: $rel"
HERRORS=$((HERRORS + 1))
fi
done
echo "Compiled ${HCOUNT} custom files (${HERRORS} errors)."
if [ "$HERRORS" -ne 0 ]; then
echo "Custom LVGL compilation FAILED."
exit 1
fi
# Append custom objects into the existing archive
HOBJECTS=$(find "$LVGLH_OBJ_DIR" -name '*.o')
ar rcs "${OUT_DIR}/liblvgl.a" $HOBJECTS
echo "Updated ${OUT_DIR}/liblvgl.a with custom objects."
else
echo "No custom LVGL files in lvglh/."
fi
# Cache liblvgl.a and source to host mount for next build
echo "Caching LVGL to host mount..."
mkdir -p "$CACHE_DIR"
rm -rf ${CACHE_DIR}/* ${CACHE_DIR}/.[!.]* ${CACHE_DIR}/..?* 2>/dev/null || true
cp "${OUT_DIR}/liblvgl.a" "${CACHE_DIR}/liblvgl.a"
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 " "
echo "LVGL compilation complete."
echo " "
+1 -7
View File
@@ -4,10 +4,4 @@ echo "======================="
echo " " echo " "
echo "Compiling FPC Sources..." echo "Compiling FPC Sources..."
echo " " echo " "
# Build -Fu flags for all directories under src/ and wasuro/ fpc -Aelf -gw -n -va -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* src/kernel.pas
FU_PATHS="-Fusrc -Fuwasuro"
for dir in $(find src wasuro -type d 2>/dev/null); do
FU_PATHS="$FU_PATHS -Fu$dir"
done
fpc -Aelf -gw -g -gl -n -v0e -O3 -OpPENTIUM3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ $FU_PATHS src/kernel.pas
-1
View File
@@ -5,4 +5,3 @@ echo " "
echo "Compiling Stub..." echo "Compiling Stub..."
echo " " echo " "
nasm -f elf src/stub/stub.asm -o lib/stub.o nasm -f elf src/stub/stub.asm -o lib/stub.o
nasm -f elf src/stub/splash_tga.asm -o lib/splash_tga.o
View File
Whitespace-only changes.
-32
View File
@@ -1,32 +0,0 @@
#Flat filesystem
A super simple filesystem for asuro. Folders are emulated in filenames.
Starts with disk info sector, sector 0 of volume
---
#### disk info
jmp2boot : ubit24;
OEMName : array[0..7] of char;
version : uint16 // numerical version of filesystem
sectorCount : uint16;
fileCount : uint16
signature : uint32 = 0x0B00B1E5
the Rest of the sector is reserved
---
Starting from sector 1 is the file table. Table size is determined by entry size (64) * fileCount
---
####File entry
name : array[0..59] of char //file name max 60 chars
fileStart : 16bit // start sector of data
fileSize : 16bit // data size in sectors
---
+1
View File
@@ -1,3 +1,4 @@
version: "3.9"
services: services:
builder: builder:
build: . build: .
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

-1
View File
@@ -1 +0,0 @@
Hello from the Asuro ISO!
+1 -12
View File
@@ -2,7 +2,7 @@ ENTRY(loader)
SECTIONS SECTIONS
{ {
. = 0xC0100000; . = 0xC0100000;
kernel_start = .;
.text : AT(ADDR(.text) - 0xC0000000) .text : AT(ADDR(.text) - 0xC0000000)
{ {
text = .; _text = .; __text = .; text = .; _text = .; __text = .;
@@ -33,15 +33,4 @@ SECTIONS
. = ALIGN(4096); . = ALIGN(4096);
} }
end = .; _end = .; __end = .; end = .; _end = .; __end = .;
kernel_end = .;
/DISCARD/ : {
*(.init_array*)
*(.fini_array*)
*(.ctors)
*(.dtors)
*(.eh_frame*)
*(.gcc_except_table*)
*(.note.GNU-stack)
}
} }
-12886
View File
File diff suppressed because it is too large. Load diff
Loaded 20 of 194 files, more files were not shown because too many files have changed in this diff. Show more