diff --git a/PULL_REQUEST_TEMPLATE.md b/.github/pull_request_template.md similarity index 100% rename from PULL_REQUEST_TEMPLATE.md rename to .github/pull_request_template.md diff --git a/SECURITY.md b/.github/security.md similarity index 100% rename from SECURITY.md rename to .github/security.md diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b8f9f5627f..9ac8cf5992 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -35,6 +35,6 @@ jobs: mkdocs-git-revision-date-plugin mkdocs-autolinks-plugin \ mkdocs-awesome-pages-plugin - run: git config user.name 'github-actions[bot]' && git config user.email 'github-actions[bot]@users.noreply.github.com' - + - name: Publish docs - run: mkdocs gh-deploy + run: mkdocs gh-deploy -f scripts/IronOS-mkdocs.yml -d ../site diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 9f944d03a4..765910f9d8 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -32,7 +32,7 @@ jobs: - name: copy license text run: | cp LICENSE source/Hexfile/LICENSE - cp LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md + cp scripts/LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md - name: Archive ${{ matrix.model }} artifacts uses: actions/upload-artifact@v3 @@ -83,7 +83,7 @@ jobs: - name: copy license text run: | cp LICENSE source/Hexfile/LICENSE - cp LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md + cp scripts/LICENSE_RELEASE.md source/Hexfile/LICENSE_RELEASE.md - name: Archive ${{ matrix.model }} artifacts uses: actions/upload-artifact@v3 diff --git a/Bootup Logo/README.md b/Bootup Logo/README.md deleted file mode 100644 index 30aeabd683..0000000000 --- a/Bootup Logo/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Bootup logo's - -IronOS supports both a bootup logo _AND_ bootup animations. - -However, they are no longer included in this repo. - -[Please read the docs](https://ralim.github.io/IronOS/Logo/) diff --git a/Development Resources/DO NOT FLASH_Flash Backup.hex b/Development Resources/Hex/DO NOT FLASH_Flash Backup.hex similarity index 100% rename from Development Resources/DO NOT FLASH_Flash Backup.hex rename to Development Resources/Hex/DO NOT FLASH_Flash Backup.hex diff --git a/Development Resources/force_blank_flash.hex b/Development Resources/Hex/force_blank_flash.hex similarity index 100% rename from Development Resources/force_blank_flash.hex rename to Development Resources/Hex/force_blank_flash.hex diff --git a/Development Resources/BatteryIcon.bmp b/Development Resources/Pics/BatteryIcon.bmp similarity index 100% rename from Development Resources/BatteryIcon.bmp rename to Development Resources/Pics/BatteryIcon.bmp diff --git a/Development Resources/sa-720x300.png b/Development Resources/Pics/sa-720x300.png similarity index 100% rename from Development Resources/sa-720x300.png rename to Development Resources/Pics/sa-720x300.png diff --git a/Development Resources/TS100 V2.46 Schematics V1.0.pdf b/Development Resources/TS100/TS100 V2.46 Schematics V1.0.pdf similarity index 100% rename from Development Resources/TS100 V2.46 Schematics V1.0.pdf rename to Development Resources/TS100/TS100 V2.46 Schematics V1.0.pdf diff --git a/Development Resources/TS80-Bootloader.hex b/Development Resources/TS80/TS80-Bootloader.hex similarity index 100% rename from Development Resources/TS80-Bootloader.hex rename to Development Resources/TS80/TS80-Bootloader.hex diff --git a/Documentation/Development.md b/Documentation/Development.md index b43ae2d100..83470d892f 100644 --- a/Documentation/Development.md +++ b/Documentation/Development.md @@ -125,7 +125,7 @@ On Windows follow the instructions on the official documentation to install 'Win ```sh cd IronOS - ./start_dev.sh + ./scripts/deploy.sh ``` This script will build a Docker image and run a container with the necessary tools to build the firmware. diff --git a/Documentation/Flashing/MHP30.md b/Documentation/Flashing/MHP30.md index ff8484b03d..4ac4c5d1d7 100644 --- a/Documentation/Flashing/MHP30.md +++ b/Documentation/Flashing/MHP30.md @@ -55,7 +55,7 @@ sgr1ff1n (Shane) commented in [issue 11](https://github.com/Ralim/IronOS/issues/ While in the past there were reports of unreliable upgrades, the consensus in [issue 11](https://github.com/Ralim/IronOS/issues/11) is that things work mostly as expected in Linux. -@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/master/Flashing/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros. +@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/dev/scripts/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros. If you want to do it manually (or if the script does not work for some reason) the general procedure is the same as for Windows, the differences are in the way to mount the unit and copy the firmware. Remember that after flashing, the firmware filename will have changed to end in `.RDY` or `.ERR` or `.NOT` and only `.RDY` means the flashing was successful! diff --git a/Documentation/Flashing/TS100.md b/Documentation/Flashing/TS100.md index c5b8d1d2f9..787164e108 100644 --- a/Documentation/Flashing/TS100.md +++ b/Documentation/Flashing/TS100.md @@ -55,7 +55,7 @@ sgr1ff1n (Shane) commented in [issue 11](https://github.com/Ralim/IronOS/issues/ While in the past there were reports of unreliable upgrades, the consensus in [issue 11](https://github.com/Ralim/IronOS/issues/11) is that things work mostly as expected in Linux. -@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/master/Flashing/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros. +@awigen has contributed a script [flash_ts100_linux.sh](https://raw.githubusercontent.com/Ralim/IronOS/dev/scripts/flash_ts100_linux.sh) that works on Ubuntu 16.04 as well as other distros. If you want to do it manually (or if the script does not work for some reason) the general procedure is the same as for Windows, the differences are in the way to mount the unit and copy the firmware. Remember that after flashing, the firmware filename will have changed to end in `.RDY` or `.ERR` or `.NOT` and only `.RDY` means the flashing was successful! diff --git a/docker-compose.yml b/Env.yml similarity index 65% rename from docker-compose.yml rename to Env.yml index 83e749479d..28024651d0 100644 --- a/docker-compose.yml +++ b/Env.yml @@ -6,7 +6,8 @@ services: tty: true build: context: . + dockerfile: scripts/IronOS.Dockerfile command: /bin/sh volumes: - - ./ci:/build/ci:Z + - ./scripts/ci:/build/ci:Z - ./:/build/source:Z diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..40d6b8b2cb --- /dev/null +++ b/Makefile @@ -0,0 +1,125 @@ +#!/usr/bin/env make +INFO:=top-level Makefile for IronOS - Soldering Iron Open Source Firmware Project. + + +### global adjustable variables + +# command for "docker compose" from DOCKER env. var. +ifdef DOCKER +DOCKER_BIN:=$(DOCKER) +else +DOCKER_BIN:= +endif + +# detect availability of docker +ifndef DOCKER_BIN +DOCKER_COMPOSE:=$(shell command -v docker-compose 2>/dev/null) +DOCKER_TOOL:=$(shell command -v docker 2>/dev/null) +ifdef DOCKER_COMPOSE +DOCKER_BIN:=$(DOCKER_COMPOSE) +else ifdef DOCKER_TOOL +DOCKER_BIN:=$(DOCKER_TOOL) compose +else +$(error ERROR: Can't find docker-compose nor docker tool. Please, install docker and try again) +endif # DOCKER_* checks +endif # DOCKER_BIN + +# command for python-based mkdocs tool +ifndef MKDOCS +MKDOCS:=mkdocs +endif + + +### global static variables + +# docker-related files +DOCKER_YML=$(CURDIR)/Env.yml +DOCKER_FILE=$(CURDIR)/scripts/IronOS.Dockerfile + +# docker dependencies +DOCKER_DEPS=$(DOCKER_YML) $(DOCKER_FILE) + +# compose docker-compose command +DOCKER_CMD=$(DOCKER_BIN) -f $(DOCKER_YML) run --rm builder + +# MkDocs config +MKDOCS_YML=$(CURDIR)/scripts/IronOS-mkdocs.yml + + +### targets + +# default target to show help +help: + @echo + @echo "Welcome!\nThis is $(INFO)" + @echo "To read more about supported commands (aka \"targets\"), type \"make list\"." + @echo "But if you're impatient then just type \"make docker-build\" - it will:" + @echo "\t * download, configure & start docker container" + @echo "\t * compile builds of IronOS firmware for all supported models inside that container" + @echo "\t * export generated binaries to \"scripts/ci/artefacts/\" local directory" + @echo "Patches are welcome. Happy Hacking!" + @echo + +# target to list supported targets with additional info +list: + @echo "" + @echo "Supported top-level targets:" + @echo "\t * help - shows short basic help" + @echo "\t * list - this output" + @echo "\t * docker-shell - start docker container with shell inside to work on IronOS with all tools needed" + @echo "\t * docker-build - compile builds of IronOS for supported models inside docker container and place them to \"scripts/ci/artefacts/\"" + @echo "\t * docker-clean - delete created docker container (but not pre-downloaded data for it)" + @echo "\t * docs - generate \"site\"/ directory with documentation in a form of static html files using ReadTheDocs framework and $(MKDOCS_YML) local config file" + @echo "\t * docs-deploy - generate & deploy docs online to gh-pages branch of current github repo" + @echo "\t * clean-full - delete files & directories generated by all the targets above " + @echo "" + @echo "NOTES on supported pass-trough targets:" + @echo "\t * main Makefile is located in source/ directory and used to build the firmware itself;" + @echo "\t * this top-level Makefile supports to call targets from source/Makefile;" + @echo "\t * if you set up development environment right on your host, then to build firmware locally, you can just type right from here:" + @echo + @echo "\t> make firmware-LANG_ID model=MODEL_ID" + @echo + @echo "Full list of current supported IDs:" + @echo "\t * LANG_ID: BE BG CS DA DE EL EN ES FI FR HR HU IT JA_JP LT NB NL_BE NL PL PT RO RU SK SL SR_CYRL SR_LATN SV TR UK VI YUE_HK ZH_CN ZH_TW" + @echo "\t * MODEL_ID: TS100 TS101 TS80 TS80P MHP30 Pinecil Pinecilv2 S60" + @echo + @echo "For example, to make a local build of IronOS firmware for TS100 with English language, just type:" + @echo "\n\t> make firmware-EN model=TS100" + @echo + +# bash one-liner to generate langs for "make list": +# echo "`ls Translations/ | grep -e "^translation_.*.json$" | sed -e 's,^translation_,,g; s,\.json$,,g; ' | tr '\n' ' '`" + +# former start_dev.sh +docker-shell: $(DOCKER_DEPS) + $(DOCKER_CMD) + +# former build.sh +docker-build: $(DOCKER_DEPS) + $(DOCKER_CMD) /bin/bash /build/ci/buildAll.sh + +# delete container +docker-clean: + -docker rmi ironos-builder:latest + +# generate docs in site/ directory (DIR for -d is relative to mkdocs.yml file location, hence use default name/location site by setting up ../site) +docs: $(MKDOCS_YML) Documentation/* Documentation/Flashing/* Documentation/images/* + $(MKDOCS) build -f $(MKDOCS_YML) -d ../site + +# deploy docs to gh-pages branch of current repo automagically using ReadTheDocs framework +docs-deploy: $(MKDOCS_YML) Documentation/* Documentation/Flashing/* Documentation/images/* + $(MKDOCS) gh-deploy -f $(MKDOCS_YML) -d ../site + +# pass-through target for Makefile inside source/ dir +%: + make -C source/ $@ + +# global clean-up target +clean-full: docker-clean + make -C source/ clean-all + rm -Rf site + rm -Rf scripts/ci/artefacts + +.PHONY: docker-shell docker-build docker-clean docs clean-full + diff --git a/README.md b/README.md index 2125e63016..f1cbc655fc 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,15 @@ For notes on installation for your device, please refer to the flashing guide fo - Boost mode lets you temporarily change the temperature when soldering (i.e. raise the temperature for short periods) - (TS100/Pinecil) Battery charge level indicator if power source set to a lipo cell count - (TS80/TS80P/Pinecil) Power bank operating voltage is displayed -- [Custom boot up logo support](https://ralim.github.io/IronOS/Logo/) +- [Custom boot up logo support](https://ralim.github.io/IronOS/Logo/)[^bootlogo] - Automatic LCD rotation based on the orientation + +[^bootlogo]: **BOOTUP LOGO NOTICE**: + IronOS supports both a bootup logo _AND_ bootup animations. + However, _**they are no longer included in this repo**_. + **Please, [read the docs](https://ralim.github.io/IronOS/Logo/) for more information**. + ## Menu System This new firmware uses a new menu system to allow access to the settings on the device. diff --git a/build.sh b/build.sh deleted file mode 100755 index 268abd2828..0000000000 --- a/build.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -docker-compose run --rm builder /bin/bash /build/ci/buildAll.sh diff --git a/mkdocs.yml b/scripts/IronOS-mkdocs.yml similarity index 97% rename from mkdocs.yml rename to scripts/IronOS-mkdocs.yml index 13d9a2ff17..9514aa1b1c 100644 --- a/mkdocs.yml +++ b/scripts/IronOS-mkdocs.yml @@ -6,7 +6,7 @@ site_description: "IronOS Open Source Soldering Iron firmware for Miniware and P # repo config repo_url: https://github.com/ralim/IronOS/ -docs_dir: Documentation +docs_dir: ../Documentation edit_uri: edit/dev/Documentation/ # Theme and config @@ -46,8 +46,8 @@ plugins: - autolinks - awesome-pages - git-revision-date - - + + # Markdown Extensions markdown_extensions: - attr_list diff --git a/Dockerfile b/scripts/IronOS.Dockerfile similarity index 93% rename from Dockerfile rename to scripts/IronOS.Dockerfile index c3f98f34e6..b3026b4d33 100644 --- a/Dockerfile +++ b/scripts/IronOS.Dockerfile @@ -26,4 +26,4 @@ RUN python3 -m pip install ${PIP_PKGS} RUN git config --global --add safe.directory /build/source COPY . /build/source -COPY ./ci /build/ci +COPY ./scripts/ci /build/ci diff --git a/LICENSE_RELEASE.md b/scripts/LICENSE_RELEASE.md similarity index 100% rename from LICENSE_RELEASE.md rename to scripts/LICENSE_RELEASE.md diff --git a/ci/buildAll.sh b/scripts/ci/buildAll.sh similarity index 100% rename from ci/buildAll.sh rename to scripts/ci/buildAll.sh diff --git a/ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5 b/scripts/ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5 similarity index 100% rename from ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5 rename to scripts/ci/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2.md5 diff --git a/ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5 b/scripts/ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5 similarity index 100% rename from ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5 rename to scripts/ci/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2.md5 diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000000..fa89036d53 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash + +# little helper for docker deployment to: +# - start development environment for IronOS ("shell" sub-command) +# - generate full set of builds ("build" sub-command) + +#set -x +#set -e + +usage() +{ + echo -e "\nUsage: ${0} [CMD]\n" + echo "CMD:" + echo -e "\tshell - start docker container with shell inside to work on IronOS with all tools needed" + echo -e "\tbuild - compile builds of IronOS inside docker container for supported hardware" + echo -e "\tclean - delete created docker container (but not pre-downloaded data for it)\n" + echo -e "STORAGE NOTICE: for \"shell\" and \"build\" commands extra files will be downloaded so make sure that you have ~5GB of free space.\n" +} + +### main + +docker_conf="Env.yml" + +# allow providing custom path to docker tool using DOCKER_BIN external env. var. +# (compose sub-command must be included, i.e. DOCKER_BIN="/usr/local/bin/docker compose" ./deploy.sh) + +if [ -z "${DOCKER_BIN}" ]; then + docker_bin="" +else + docker_bin="${DOCKER_BIN}" +fi; + +# detect availability of docker + +docker_compose="$(command -v docker-compose)" +if [ -n "${docker_compose}" ] && [ -z "${docker_bin}" ]; then + docker_bin="${docker_compose}" +fi; + +docker_tool="$(command -v docker)" +if [ -n "${docker_tool}" ] && [ -z "${docker_bin}" ]; then + docker_bin="${docker_tool} compose" +fi; + +if [ -z "${docker_bin}" ]; then + echo "ERROR: Can't find docker-compose nor docker tool. Please, install docker and try again." + exit 1 +fi; + +# construct command to run + +cmd="${1}" +if [ -z "${cmd}" ] || [ "${cmd}" = "shell" ]; then + docker_cmd="run --rm builder" +elif [ "${cmd}" = "build" ]; then + docker_cmd="run --rm builder /bin/bash /build/ci/buildAll.sh" +elif [ "${cmd}" = "clean" ]; then + docker rmi ironos-builder:latest + exit "${?}" +else + usage + exit 1 +fi; + +# get absolute location of project root dir to make docker happy with config(s) +# (successfully tested on relatively POSIX-compliant Dash shell) + +# this script +script_file="/deploy.sh" +# IronOS/scripts/deploy.sh +script_path="${PWD}"/"${0}" +# IronOS/scripts/ +script_dir=${script_path%"${script_file}"} +# IronOS/ +root_dir="${script_dir}/.." +# IronOS/Env.yml +docker_file="-f ${root_dir}/${docker_conf}" + +# change dir to project root dir & run constructed command + +cd "${root_dir}" || exit 1 +echo -e "\n====>>>> Firing up & starting container..." +if [ "${cmd}" = "shell" ]; then +echo -e "\t* type \"exit\" to end the session when done;" +fi; +echo -e "\t* type \"${0} clean\" to delete created container (but not cached data)" +echo -e "\n====>>>> ${docker_bin} ${docker_file} ${docker_cmd}\n" +eval "${docker_bin} ${docker_file} ${docker_cmd}" +exit "${?}" + diff --git a/Flashing/flash_ts100_linux.sh b/scripts/flash_ts100_linux.sh similarity index 100% rename from Flashing/flash_ts100_linux.sh rename to scripts/flash_ts100_linux.sh diff --git a/start_dev.sh b/start_dev.sh deleted file mode 100755 index ef95947f0b..0000000000 --- a/start_dev.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -docker-compose run --rm builder