2 Commits

Author SHA1 Message Date
33cb042b8c Changed comments in Asuro.pas when generated
Changed the Asuro.pas comment to be the standard format in terms of Directory->File (no .pas) for PasDoc gen.
2021-07-05 19:18:32 +01:00
439d4ef8ac Tidied out comments for docgen.
Added some documentation to Asuro.pas & ProgManager.
2021-07-05 19:07:33 +01:00
13 changed files with 163 additions and 130 deletions

View File

@ -1,23 +1,25 @@
stages: stages:
- Compile Versions - Generate Stub and Versions
- Generate Version Files
- Compile Sources - Compile Sources
- Link - Link
- Generate ISO
- Generate Sources List
- Generate Documentation - Generate Documentation
- Deploy
cache: compile_stub:
- key: ${CI_COMMIT_REF_SLUG} stage: Generate Stub and Versions
paths:
- lib/*.o
- bin/kernel.bin
- doc
before_script:
- chmod +x *.sh
versions:
stage: Compile Versions
script: script:
- chmod +x ./compile_stub.sh
- ./compile_stub.sh
artifacts:
paths:
- lib/stub.o
vergen:
stage: Generate Stub and Versions
script:
- chmod +x ./compile_vergen.sh
- ./compile_vergen.sh - ./compile_vergen.sh
artifacts: artifacts:
paths: paths:
@ -27,47 +29,71 @@ versions:
compile_sources: compile_sources:
stage: Compile Sources stage: Compile Sources
script: script:
- rm -f lib/*.so - chmod +x ./compile_sources.sh
- ./compile_sources.sh - ./compile_sources.sh
artifacts:
paths:
- lib/*.o
dependencies:
- compile_stub
- vergen
needs: needs:
- versions - vergen
- compile_stub
link: link:
stage: Link stage: Link
script: script:
- ./compile_stub.sh - chmod +x ./compile_link.sh
- ./compile_link.sh - ./compile_link.sh
artifacts:
paths:
- bin/kernel.bin
dependencies:
- compile_sources
needs: needs:
- versions
- compile_sources - compile_sources
isogen: isogen:
stage: Deploy stage: Generate ISO
script: script:
- chmod +x ./compile_isogen.sh
- ./compile_isogen.sh - ./compile_isogen.sh
- chmod +x ./compile_sumgen.sh
- ./compile_sumgen.sh - ./compile_sumgen.sh
artifacts: artifacts:
paths: paths:
- ./Asuro.iso - ./Asuro.iso
- ./release/checksum.svg - ./release/checksum.svg
dependencies:
- link
needs: needs:
- link - link
docgen: sourcelist:
stage: Generate Documentation stage: Generate Sources List
only:
- master
- develop
script: script:
- chmod +x ./compile_sourcelist.sh
- ./compile_sourcelist.sh - ./compile_sourcelist.sh
- ./compile_docs.sh
# Remove comments when we want to use gitlab pages.
#- cp doc public
allow_failure: true
artifacts: artifacts:
paths: paths:
- doc - ./sources.list
#- public/* dependencies:
#- ./sources.list - vergen
needs: needs:
- versions - vergen
docgen:
stage: Generate Documentation
script:
- chmod +x ./compile_docs.sh
- ./compile_docs.sh
artifacts:
paths:
- ./doc/*
dependencies:
- vergen
- sourcelist
needs:
- vergen
- sourcelist

View File

@ -2,22 +2,18 @@ FROM ubuntu:latest
VOLUME ["/code"] VOLUME ["/code"]
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
curl dos2unix wget git make nasm binutils:i386 xorriso grub-pc-bin && \ RUN apt-get install nasm curl make:i386 binutils:i386 xorriso grub-pc-bin dos2unix -y
apt-get clean my room RUN apt-get clean
RUN curl https://sourceforge.net/projects/freepascal/files/Linux/2.6.4/fpc-2.6.4.i386-linux.tar/download --output fpc.tar -L && \
tar -xf fpc.tar
SHELL ["/bin/bash", "-c"] WORKDIR ./fpc-2.6.4.i386-linux
ARG FPC_VERSION=2.6.4 RUN ./install.sh
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 && \
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 RUN mkdir /code
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", "/compile.sh"]
CMD ["/compile.sh"]

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/sh
ERRCOUNT=0 ERRCOUNT=0
echo " " echo " "
echo "=======================" echo "======================="
@ -7,32 +7,49 @@ echo "Asuro Compilation"
echo " " echo " "
#Compile Stub.asm #Compile Stub.asm
rm lib/* ./compile_stub.sh
if [ $? -ne 0 ]
runOrFail() { then
local binary=$1 echo "Failed to compile stub!"
local errorText=$2
if $binary; then
echo "Success."
else
echo "$errorText"
ERRCOUNT=$((ERRCOUNT+1)) ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi fi
}
runOrFail $(pwd)/compile_stub.sh "Failed to compile stub!"
#Generate .pas with versioning headers. #Generate .pas with versioning headers.
runOrFail $(pwd)/compile_vergen.sh "Versions failed to compile" ./compile_vergen.sh
#Compile all .pas sources #Compile all .pas sources
runOrFail $(pwd)/compile_sources.sh "Failed to compile FPC Sources!" ./compile_sources.sh
if [ $? -ne 0 ]
then
echo " "
echo "Failed to compile FPC Sources!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo " "
echo "Success."
fi
#Link into a binary. #Link into a binary.
runOrFail $(pwd)/compile_link.sh "Failed linking!" ./compile_link.sh
if [ $? -ne 0 ]
then
echo "Failed linking!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi
#Generate an ISO with GRUB as the Bootloader. #Generate an ISO with GRUB as the Bootloader.
runOrFail ./compile_isogen.sh "Failed to create ISO!" ./compile_isogen.sh
if [ $? -ne 0 ]
then
echo "Failed to create ISO!"
ERRCOUNT=$((ERRCOUNT+1))
else
echo "Success."
fi
#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" ]

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
echo > checksums.md5 echo > checksums.md5
for directory in $(find src/ -maxdepth 10 -type d); do for directory in $(find src/ -maxdepth 10 -type d); do
for filename in $directory/*.pas; do for filename in $directory/*.pas; do

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "
@ -15,3 +15,4 @@ rm -rf ./doc/*
echo "Generating Docs..." echo "Generating Docs..."
./pasdoc/bin/pasdoc -N "Asuro" -T "Asuro OS Documentation" -O "html" -E ./doc/ -S sources.list --use-tipue-search ./pasdoc/bin/pasdoc -N "Asuro" -T "Asuro OS Documentation" -O "html" -E ./doc/ -S sources.list --use-tipue-search
echo "Docgen finished." echo "Docgen finished."
exit 0

View File

@ -1,8 +1,8 @@
#!/usr/bin/env bash #/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "
if [[ "$1" == "failed" ]] if [ "$1" == "failed" ]
then then
echo "Errors Occurred, please review." echo "Errors Occurred, please review."
wget -q https://img.shields.io/badge/build-failed-red.svg -O release/build.svg 2>/dev/null wget -q https://img.shields.io/badge/build-failed-red.svg -O release/build.svg 2>/dev/null

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "

View File

@ -1,7 +1,8 @@
#!/usr/bin/env bash #!/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "
echo "Compiling Stub..." echo "Compiling Stub..."
echo " " echo " "
rm lib/*
nasm -f elf src/stub/stub.asm -o lib/stub.o nasm -f elf src/stub/stub.asm -o lib/stub.o

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #/bin/sh
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "

View File

@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/bin/bash
set -e
echo " " echo " "
echo "=======================" echo "======================="
echo " " echo " "
@ -9,67 +8,60 @@ chmod +x ./compile_checksum.sh
./compile_checksum.sh ./compile_checksum.sh
outfile="src/include/asuro.pas" outfile="src/include/asuro.pas"
file="version" file="version"
{ while IFS=: read -r line;do
# this script requires semver tool major=$(echo $line | awk '{print $1}')
wget -q https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver -O bin/semver && chmod +x bin/semver minor=$(echo $line | awk '{print $2}')
export PATH="$(pwd)/bin:$PATH" sub=$(echo $line | awk '{print $3}')
} release=$(echo $line | awk '{print $4}')
tagref=$(git describe --tags) done <"$file"
revision=$(git rev-parse --short=8 HEAD)
major=$(semver get major $tagref)
minor=$(semver get minor $tagref)
sub=$(semver get patch $tagref)
version=$(semver get release $tagref)
release=$(semver get prerel $tagref)
build=$(semver get build $tagref)
linecount=$(./loc.sh | awk '{print $1}') linecount=$(./loc.sh | awk '{print $1}')
sourcecount=$(find src -type f | wc -l) sourcecount=$(find src -type f | wc -l)
drivercount=$(find src/driver -type f | wc -l) drivercount=$(find src/driver -type f | wc -l)
revision=$(git rev-list --all --count)
fpcversion=$(fpc -h | grep -m 1 version | awk '{print $5}') fpcversion=$(fpc -h | grep -m 1 version | awk '{print $5}')
makeversion=$(make -v | grep GNU | awk '{print $3}' | grep -v GNU) makeversion=$(make -v | grep GNU | awk '{print $3}' | grep -v GNU)
nasmversion=$(nasm -v | awk '{print $3'}) nasmversion=$(nasm -v | awk '{print $3'})
compiledate=$(date +"%d/%m/%y") compiledate=$(date +"%d/%m/%y")
compiletime=$(date +"%T") compiletime=$(date +"%T")
checksum=$(md5sum checksums.md5 | awk '{print $1}') checksum=$(md5sum checksums.md5 | awk '{print $1}')
echo "{" > $outfile
[[ -n "$release" ]] && version="$version-$release" echo " Include->Asuro - Constants generated during pipeline/compilation for use at runtime." >> $outfile
cat > $outfile <<EOF echo " @author(Autogenerated)" >> $outfile
unit asuro; echo "}" >> $outfile
echo "unit asuro;" >> $outfile
interface echo " " >> $outfile
echo "interface" >> $outfile
const echo " " >> $outfile
VERSION = '$version'; echo "const" >> $outfile
VERSION_MAJOR = '$major'; echo " VERSION = '$major.$minor.$sub-$revision$release'; //The current full version as a string." >> $outfile
VERSION_MINOR = '$minor'; echo " VERSION_MAJOR = '$major'; // Current major version as a string." >> $outfile
VERSION_SUB = '$sub'; echo " VERSION_MINOR = '$minor'; // Current minor version as a string." >> $outfile
REVISION = '$revision'; echo " VERSION_SUB = '$sub'; // Current sub version as a string." >> $outfile
RELEASE = '$release'; echo " REVISION = '$revision'; // Current revision as a string." >> $outfile
LINE_COUNT = $linecount; echo " RELEASE = '$release'; // Current release as a string." >> $outfile
FILE_COUNT = $sourcecount; echo " LINE_COUNT = $linecount; // Project line count as compiled as a string." >> $outfile
DRIVER_COUNT = $drivercount; echo " FILE_COUNT = $sourcecount; // Project line count as compiled as a string." >> $outfile
FPC_VERSION = '$fpcversion'; echo " DRIVER_COUNT = $drivercount; // Number of baked drivers in the current binary." >> $outfile
NASM_VERSION = '$nasmversion'; echo " FPC_VERSION = '$fpcversion'; // Version of the FreePascal Compiler used to compile the current binary." >> $outfile
MAKE_VERSION = '$makeversion'; echo " NASM_VERSION = '$nasmversion'; // Version of the Netwide Assembler used to compile the multiboot stub." >> $outfile
COMPILE_DATE = '$compiledate'; echo " MAKE_VERSION = '$makeversion'; // Version of MAKE used to link the current binary." >> $outfile
COMPILE_TIME = '$compiletime'; echo " COMPILE_DATE = '$compiledate'; // Date in which the current binary was compiled." >> $outfile
CHECKSUM = '$checksum'; echo " COMPILE_TIME = '$compiletime'; // Time in which the current binary was compiled." >> $outfile
echo " CHECKSUM = '$checksum'; // MD5 pseduo-checksum of all of the sourcefiles together." >> $outfile
implementation echo " " >> $outfile
echo "implementation" >> $outfile
end. echo " " >> $outfile
EOF echo "end." >> $outfile
echo "Generating release info..." echo "Generating release info..."
set +e # These can fail on branches and such, for now wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg 2>/dev/null
wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg 2>/dev/null
wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg 2>/dev/null
wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg 2>/dev/null
wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg 2>/dev/null
wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg 2>/dev/null
wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg 2>/dev/null
wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg 2>/dev/null
wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg 2>/dev/null
wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg
echo "Done versioning." echo "Done versioning."