Compare commits
	
		
			5 Commits
		
	
	
		
			develop
			...
			1db74f791a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1db74f791a | |||
| 372fda3afc | |||
| 749ffe6d73 | |||
| 76b399f3b5 | |||
| 83f7ebb223 | 
| @@ -1,25 +1,23 @@ | ||||
| stages: | ||||
|   - Generate Stub and Versions | ||||
|   - Generate Version Files | ||||
|   - Compile Versions | ||||
|   - Compile Sources | ||||
|   - Link | ||||
|   - Generate ISO | ||||
|   - Generate Sources List | ||||
|   - Generate Documentation | ||||
|   - Deploy | ||||
|  | ||||
| compile_stub: | ||||
|   stage: Generate Stub and Versions | ||||
|   script:  | ||||
|     - chmod +x ./compile_stub.sh | ||||
|     - ./compile_stub.sh | ||||
|   artifacts: | ||||
| cache: | ||||
|   - key: ${CI_COMMIT_REF_SLUG} | ||||
|     paths: | ||||
|       - lib/stub.o | ||||
|       - lib/*.o | ||||
|       - bin/kernel.bin | ||||
|       - doc | ||||
|  | ||||
| vergen: | ||||
|   stage: Generate Stub and Versions | ||||
|   script:  | ||||
|     - chmod +x ./compile_vergen.sh | ||||
| before_script: | ||||
|   - chmod +x *.sh | ||||
|  | ||||
| versions: | ||||
|   stage: Compile Versions | ||||
|   script: | ||||
|     - ./compile_vergen.sh | ||||
|   artifacts: | ||||
|     paths: | ||||
| @@ -29,71 +27,47 @@ vergen: | ||||
| compile_sources: | ||||
|   stage: Compile Sources | ||||
|   script: | ||||
|     - chmod +x ./compile_sources.sh | ||||
|     - rm -f lib/*.so | ||||
|     - ./compile_sources.sh | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - lib/*.o | ||||
|   dependencies: | ||||
|     - compile_stub | ||||
|     - vergen | ||||
|   needs: | ||||
|     - vergen | ||||
|     - compile_stub | ||||
|     - versions | ||||
|  | ||||
| link: | ||||
|   stage: Link | ||||
|   script: | ||||
|     - chmod +x ./compile_link.sh | ||||
|     - ./compile_stub.sh | ||||
|     - ./compile_link.sh | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - bin/kernel.bin | ||||
|   dependencies: | ||||
|     - compile_sources | ||||
|   needs: | ||||
|     - versions | ||||
|     - compile_sources | ||||
|  | ||||
| isogen: | ||||
|   stage: Generate ISO | ||||
|   stage: Deploy | ||||
|   script: | ||||
|     - chmod +x ./compile_isogen.sh | ||||
|     - ./compile_isogen.sh | ||||
|     - chmod +x ./compile_sumgen.sh | ||||
|     - ./compile_sumgen.sh | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - ./Asuro.iso | ||||
|       - ./release/checksum.svg | ||||
|   dependencies: | ||||
|     - link | ||||
|   needs: | ||||
|     - link | ||||
|  | ||||
| sourcelist: | ||||
|   stage: Generate Sources List | ||||
|   script: | ||||
|     - chmod +x ./compile_sourcelist.sh | ||||
|     - ./compile_sourcelist.sh | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - ./sources.list | ||||
|   dependencies: | ||||
|     - vergen | ||||
|   needs: | ||||
|     - vergen | ||||
|  | ||||
| docgen: | ||||
|   stage: Generate Documentation | ||||
|   only: | ||||
|     - master | ||||
|     - develop | ||||
|   script: | ||||
|     - chmod +x ./compile_docs.sh | ||||
|     - ./compile_sourcelist.sh | ||||
|     - ./compile_docs.sh | ||||
|     # Remove comments when we want to use gitlab pages. | ||||
|     #- cp doc public | ||||
|   allow_failure: true | ||||
|   artifacts: | ||||
|     paths: | ||||
|       - ./doc/* | ||||
|   dependencies: | ||||
|     - vergen | ||||
|     - sourcelist | ||||
|       - doc | ||||
|       #- public/* | ||||
|       #- ./sources.list | ||||
|   needs: | ||||
|     - vergen | ||||
|     - sourcelist | ||||
|     - versions | ||||
|   | ||||
							
								
								
									
										22
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -2,18 +2,22 @@ FROM ubuntu:latest | ||||
|  | ||||
| VOLUME ["/code"] | ||||
|  | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| RUN dpkg --add-architecture i386 | ||||
| RUN apt-get update | ||||
| RUN apt-get install nasm curl make:i386 binutils:i386 xorriso grub-pc-bin dos2unix -y | ||||
| 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 | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| 	curl dos2unix wget git make nasm binutils:i386 xorriso grub-pc-bin && \ | ||||
| 	apt-get clean my room | ||||
|  | ||||
| WORKDIR ./fpc-2.6.4.i386-linux | ||||
| RUN ./install.sh | ||||
| SHELL ["/bin/bash", "-c"] | ||||
| 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 - && \ | ||||
| 	pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \ | ||||
| 	rm -rf fpc-$FPC_VERSION.i386-linux | ||||
|  | ||||
| COPY compile.sh /compile.sh | ||||
| RUN mkdir /code | ||||
| ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver | ||||
| RUN mkdir /code && chmod +x /usr/bin/semver | ||||
| WORKDIR /code | ||||
| RUN find . -type f -print0 | xargs -0 dos2unix | ||||
| ENTRYPOINT ["/bin/bash", "/compile.sh"] | ||||
| ENTRYPOINT ["/bin/bash", "-c"] | ||||
| CMD ["/compile.sh"] | ||||
							
								
								
									
										57
									
								
								compile.sh
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								compile.sh
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| #!/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| ERRCOUNT=0 | ||||
| echo " " | ||||
| echo "=======================" | ||||
| @@ -7,49 +7,32 @@ echo "Asuro Compilation" | ||||
| echo " " | ||||
|  | ||||
| #Compile Stub.asm | ||||
| ./compile_stub.sh | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
| 	echo "Failed to compile stub!" | ||||
| 	ERRCOUNT=$((ERRCOUNT+1))	 | ||||
| else | ||||
| 	echo "Success." | ||||
| fi | ||||
| rm lib/* | ||||
|  | ||||
| runOrFail() { | ||||
| 	local binary=$1 | ||||
| 	local errorText=$2 | ||||
| 	if $binary; then | ||||
| 		echo "Success." | ||||
| 	else | ||||
| 		echo "$errorText" | ||||
| 		ERRCOUNT=$((ERRCOUNT+1)) | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| runOrFail $(pwd)/compile_stub.sh "Failed to compile stub!" | ||||
|  | ||||
| #Generate .pas with versioning headers. | ||||
| ./compile_vergen.sh | ||||
| runOrFail $(pwd)/compile_vergen.sh "Versions failed to compile" | ||||
|  | ||||
| #Compile all .pas sources | ||||
| ./compile_sources.sh | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
| 	echo " " | ||||
| 	echo "Failed to compile FPC Sources!" | ||||
| 	ERRCOUNT=$((ERRCOUNT+1))	 | ||||
| else | ||||
| 	echo " " | ||||
| 	echo "Success." | ||||
| fi | ||||
| runOrFail $(pwd)/compile_sources.sh "Failed to compile FPC Sources!" | ||||
|  | ||||
| #Link into a binary. | ||||
| ./compile_link.sh | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
| 	echo "Failed linking!" | ||||
| 	ERRCOUNT=$((ERRCOUNT+1)) | ||||
| else | ||||
| 	echo "Success." | ||||
| fi | ||||
| runOrFail $(pwd)/compile_link.sh "Failed linking!" | ||||
|  | ||||
| #Generate an ISO with GRUB as the Bootloader. | ||||
| ./compile_isogen.sh | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
| 	echo "Failed to create ISO!" | ||||
| 	ERRCOUNT=$((ERRCOUNT+1)) | ||||
| else | ||||
| 	echo "Success." | ||||
| fi | ||||
| runOrFail ./compile_isogen.sh "Failed to create ISO!" | ||||
|  | ||||
| #Call generate final artifacts based on failure or success of the above. | ||||
| if [ "$ERRCOUNT" -ne "0" ] | ||||
| @@ -59,4 +42,4 @@ else | ||||
| 	./compile_finish.sh "success" | ||||
| fi | ||||
|  | ||||
| cd .. | ||||
| cd .. | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
| echo > checksums.md5 | ||||
| for directory in $(find src/ -maxdepth 10 -type d); do | ||||
| 	for filename in $directory/*.pas; do | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
| @@ -14,5 +14,4 @@ echo "Removing old docs" | ||||
| rm -rf ./doc/* | ||||
| echo "Generating Docs..." | ||||
| ./pasdoc/bin/pasdoc -N "Asuro" -T "Asuro OS Documentation" -O "html" -E ./doc/ -S sources.list --use-tipue-search | ||||
| echo "Docgen finished." | ||||
| exit 0 | ||||
| echo "Docgen finished." | ||||
| @@ -1,8 +1,8 @@ | ||||
| #/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
| if [ "$1" == "failed" ] | ||||
| if [[ "$1" == "failed" ]] | ||||
| then | ||||
| 	echo "Errors Occurred, please review." | ||||
| 	wget -q https://img.shields.io/badge/build-failed-red.svg -O release/build.svg 2>/dev/null | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| #!/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
|   | ||||
| @@ -1,8 +1,7 @@ | ||||
| #!/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
| echo "Compiling Stub..." | ||||
| echo " " | ||||
| rm lib/* | ||||
| nasm -f elf src/stub/stub.asm -o lib/stub.o | ||||
| @@ -1,4 +1,4 @@ | ||||
| #/bin/sh | ||||
| #!/usr/bin/env bash | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #!/bin/bash | ||||
| #!/usr/bin/env bash | ||||
| set -e | ||||
| echo " " | ||||
| echo "=======================" | ||||
| echo " " | ||||
| @@ -8,56 +9,67 @@ chmod +x ./compile_checksum.sh | ||||
| ./compile_checksum.sh | ||||
| outfile="src/include/asuro.pas" | ||||
| file="version" | ||||
| while IFS=: read -r line;do | ||||
| 	major=$(echo $line | awk '{print $1}') | ||||
| 	minor=$(echo $line | awk '{print $2}') | ||||
| 	sub=$(echo $line | awk '{print $3}') | ||||
| 	release=$(echo $line | awk '{print $4}') | ||||
| done <"$file" | ||||
| { | ||||
| 	# this script requires semver tool | ||||
| 	wget -q https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver -O bin/semver && chmod +x bin/semver | ||||
| 	export PATH="$(pwd)/bin:$PATH" | ||||
| } | ||||
| tagref=$(git describe --tags) | ||||
| 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}') | ||||
| sourcecount=$(find src -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}') | ||||
| makeversion=$(make -v | grep GNU | awk '{print $3}' | grep -v GNU) | ||||
| nasmversion=$(nasm -v | awk '{print $3'}) | ||||
| compiledate=$(date +"%d/%m/%y") | ||||
| compiletime=$(date +"%T") | ||||
| checksum=$(md5sum checksums.md5 | awk '{print $1}') | ||||
| echo "unit asuro;" > $outfile | ||||
| echo " " >> $outfile | ||||
| echo "interface" >> $outfile | ||||
| echo " " >> $outfile | ||||
| echo "const" >> $outfile | ||||
| echo "     VERSION       = '$major.$minor.$sub-$revision$release';" >> $outfile | ||||
| echo "     VERSION_MAJOR = '$major';" >> $outfile | ||||
| echo "     VERSION_MINOR = '$minor';" >> $outfile | ||||
| echo "     VERSION_SUB   = '$sub';" >> $outfile | ||||
| echo "     REVISION      = '$revision';" >> $outfile | ||||
| echo "     RELEASE       = '$release';" >> $outfile | ||||
| echo "     LINE_COUNT    = $linecount;" >> $outfile | ||||
| echo "     FILE_COUNT    = $sourcecount;" >> $outfile | ||||
| echo "     DRIVER_COUNT  = $drivercount;" >> $outfile | ||||
| echo "     FPC_VERSION   = '$fpcversion';" >> $outfile | ||||
| echo "     NASM_VERSION  = '$nasmversion';" >> $outfile | ||||
| echo "     MAKE_VERSION  = '$makeversion';" >> $outfile | ||||
| echo "     COMPILE_DATE  = '$compiledate';" >> $outfile | ||||
| echo "     COMPILE_TIME  = '$compiletime';" >> $outfile | ||||
| echo "     CHECKSUM      = '$checksum';" >> $outfile | ||||
| echo " " >> $outfile | ||||
| echo "implementation" >> $outfile | ||||
| echo " " >> $outfile | ||||
| echo "end." >> $outfile | ||||
|  | ||||
| [[ -n "$release" ]] && version="$version-$release" | ||||
| cat > $outfile <<EOF | ||||
| unit asuro; | ||||
|   | ||||
| interface | ||||
|   | ||||
| const | ||||
|      VERSION       = '$version'; | ||||
|      VERSION_MAJOR = '$major'; | ||||
|      VERSION_MINOR = '$minor'; | ||||
|      VERSION_SUB   = '$sub'; | ||||
|      REVISION      = '$revision'; | ||||
|      RELEASE       = '$release'; | ||||
|      LINE_COUNT    = $linecount; | ||||
|      FILE_COUNT    = $sourcecount; | ||||
|      DRIVER_COUNT  = $drivercount; | ||||
|      FPC_VERSION   = '$fpcversion'; | ||||
|      NASM_VERSION  = '$nasmversion'; | ||||
|      MAKE_VERSION  = '$makeversion'; | ||||
|      COMPILE_DATE  = '$compiledate'; | ||||
|      COMPILE_TIME  = '$compiletime'; | ||||
|      CHECKSUM      = '$checksum'; | ||||
|   | ||||
| implementation | ||||
|   | ||||
| end. | ||||
| EOF | ||||
| echo "Generating release info..." | ||||
| 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/revision-$revision-blue.svg -O release/revision.svg 2>/dev/null | ||||
| 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/lines-$linecount-blueviolet.svg -O release/lines.svg 2>/dev/null | ||||
| 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/drivers-$drivercount-blueviolet.svg -O release/drivers.svg 2>/dev/null | ||||
| 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/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg 2>/dev/null | ||||
| 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/release_date-$compiledate-lightgrey.svg -O release/date.svg 2>/dev/null | ||||
| wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg 2>/dev/null | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| 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 | ||||
| echo "Done versioning." | ||||
|   | ||||
| @@ -12,15 +12,11 @@ | ||||
| //  See the License for the specific language governing permissions and | ||||
| //  limitations under the License. | ||||
|  | ||||
| { ************************************************ | ||||
|   * Asuro | ||||
|   * Unit: Drivers/AHCI | ||||
|   * Description: AHCI SATA Driver | ||||
|   ************************************************ | ||||
|   * Author: Aaron Hance | ||||
|   * Contributors:  | ||||
|   ************************************************ } | ||||
|  | ||||
| {  | ||||
| 	Drivers->Storage->AHCI - AHCI SATA Driver. | ||||
| 	 | ||||
| 	@author(Aaron Hance <ah@aaronhance.me>) | ||||
| } | ||||
| unit AHCI; | ||||
|  | ||||
| interface | ||||
|   | ||||
| @@ -12,15 +12,11 @@ | ||||
| //  See the License for the specific language governing permissions and | ||||
| //  limitations under the License. | ||||
|  | ||||
| { ************************************************ | ||||
|   * Asuro | ||||
|   * Unit: Drivers/ISR46 | ||||
|   * Description: Primary ATA IRQ | ||||
|   ************************************************ | ||||
|   * Author: Aaron Hance | ||||
|   * Contributors:  | ||||
|   ************************************************ } | ||||
|  | ||||
| {  | ||||
| 	Drivers->Storage->ATA_ISR - Primary ATA IRQ. | ||||
| 	 | ||||
| 	@author(Aaron Hance <ah@aaronhance.me>) | ||||
| } | ||||
| unit ATA_ISR; | ||||
|  | ||||
| interface | ||||
|   | ||||
| @@ -12,16 +12,11 @@ | ||||
| //  See the License for the specific language governing permissions and | ||||
| //  limitations under the License. | ||||
|  | ||||
| { ************************************************ | ||||
|   * Asuro | ||||
|   * Unit: Drivers/storage/asfs | ||||
|   * Description: asfs file system driver | ||||
|   *  | ||||
|   ************************************************ | ||||
|   * Author: Aaron Hance | ||||
|   * Contributors:  | ||||
|   ************************************************ } | ||||
|  | ||||
| {  | ||||
| 	Drivers->Storage->ASFS - Asuro Filesystem Driver. | ||||
| 	 | ||||
| 	@author(Aaron Hance <ah@aaronhance.me>) | ||||
| } | ||||
| unit asfs; | ||||
|  | ||||
| interface | ||||
|   | ||||
| @@ -12,6 +12,11 @@ | ||||
| //  See the License for the specific language governing permissions and | ||||
| //  limitations under the License. | ||||
|  | ||||
| {  | ||||
| 	ProgManager - Central initialization for terminal registered, baked-in programs. | ||||
| 	 | ||||
| 	@author(Kieron Morris <kjm@kieronmorris.me>) | ||||
| } | ||||
| unit progmanager; | ||||
|  | ||||
| interface | ||||
| @@ -23,6 +28,7 @@ uses | ||||
|     edit, netlog, themer, | ||||
|     memview, udpcat, dhclient, vbeinfo; | ||||
|  | ||||
| { Initialize all baked-in programs } | ||||
| procedure init(); | ||||
|  | ||||
| implementation | ||||
|   | ||||
		Reference in New Issue
	
	Block a user