Compare commits

...

No commits in common. "master" and "multilang_experiment" have entirely different histories.

209 changed files with 604 additions and 5885 deletions

49
.github/CODEOWNERS vendored
View File

@ -1,49 +0,0 @@
# Reference to configuration - https://github.blog/2017-07-06-introducing-code-owners/
# Relevant https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
# This file is used to set permission per team or user to allow auto-merging
# Maintainers
* @kreyren @RXT0112/maintainers
# Documentation maintainers
/docs/ @RXT0112/documentators
# Dependencies
Cargo.toml @dependabot-preview
requirements.txt @dependabot-preview
# Legal team
LICENSE.md @kreyren
# Rustlang maintainers
*.rs @RXT0112/rustlang
Cargo.toml @RXT0112/rustlang
# Python maintainers
*.py @RXT0112/python
requirements.txt @RXT0112/python
# Vlang maintainers
*.v @RXT0112/vlang
# Clang maintainers
*.c @RXT0112/clang
# CPP maintainers
*.cpp @RXT0112/cpp
# Shell maintainers
*.sh @RXT0112/shell
# Bash maintainers
*.bash @RXT0112/bash
# Brainfuck maintainers
*.br @RXT0112/brainfuck
# java maintainers
*.jar @RXT0112/java
# csharp maintainers
*.cs @RXT0112/csharp

View File

@ -1,9 +0,0 @@
# Contributing guideliness
FIXME: Preamble needed
FIXME: Do not assign translate variables in fixme messages
### Translate the project
Search the code for `FIXME-TRANSLATE` and add logic for your language

3
.github/FUNDING.yml vendored
View File

@ -16,5 +16,4 @@ issuehunt: rixotstudio
otechie: rixotstudio
# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
# Referer link on github.com/kreyren
custom: https://my.fsf.org/join?referrer=3706032
custom: https://my.fsf.org/join

View File

@ -1,33 +0,0 @@
---
name: Bug report
about: if Something is not working as expected
title: 'bug:'
labels: 'bug'
assignees: '@Zernit/bugwranglers'
---
### Describe the bug
<!-- Give us a **short** summary of what the issue is -->
text
### To Reproduce
<!-- Provide steps to reproduce otherwise the issue will be considered as invalid -->
1. ...
2. ...
### Expected behavior
<!-- What do you expect to happend instead of current behavior? -->
text
### Additional context
<!-- Add any other context about the issue here -->
text
### What do you expect to happend to solve this issue?
<!-- To specify expected behavior from an upstream -->
text

View File

@ -1,10 +0,0 @@
# Disable blank issues
blank_issues_enabled: false
contact_links:
- name: IRC
url: https://webchat.freenode.net/#zernit
about: For simple questions and brainstorming
- name: Discord
url: https://discord.gg/5V4psY
about: Community maintained support in Zernit section

View File

@ -1,20 +0,0 @@
---
name: Feature request
about: For feature proposals
title: 'REQUEST:'
labels: 'feature-request'
assignees: '@Zernit/bugwranglers'
---
### Describe the feature
<!-- Give us a **short** summary of your proposed feature -->
### Expected behavior
<!-- What do you expect to happend instead of current behavior? -->
### Additional context
<!-- Add any other context about the issue here -->

View File

@ -1,8 +0,0 @@
---
name: Legal request
about: To propose changes in the license
labels: 'license'
assignees: '@Zernit/legal-team'
---
<!-- Please keep your request as short as possible, the longer the request the longer it's going to take for us to process it -->

View File

@ -1,9 +0,0 @@
---
name: Other
about: If none of the above fits your request
labels: 'assign-me'
assignees: '@Zernit/helpers'
---
<!-- Please keep your request as short as possible, the longer the request the longer it's going to take for us to process it -->

View File

@ -1,10 +0,0 @@
---
name: Question
about: In case you need upstream help
title: 'Q:'
labels: 'question'
assignees: '@Zernit/helpers'
---
<!-- Please keep your question as short as possible, the longer the question the longer it's going to take for us to process it -->

88
.github/README.md vendored
View File

@ -1,86 +1,20 @@
**FIXME:** Markdownlint has to be optimized for this file<br>
**FIXME:** Source the header in different markdown file to make GitHub README different from GitLab.
**NOTICE:** This project in in "init phase" so everything will be remade into a new orphen branch once methods for quality assurance, documentation, automatization and code is decided to be used as a foundation for new commits
**FIXME:** Change the name based on name repository used.
fixme: Source the header in different markdown file to make GitHub README different from GitLab
<h1 align="center">
<a href=https://github.com/RXT0112/Zernit>Zernit</a> (RXT0112)
</h1>
<h4 align="center">Community maintained (FIXME: Unknown clarification) designed to work cross-platform and using multiple programming languages depending on which one provides the most efficiency per required runtime on target system</h4>
fixme: Change the name based on repository used.
<p align="center">
<img src="https://img.shields.io/badge/Maintained%3F-Yes-green?style=for-the-badge">
<img src="https://img.shields.io/github/license/RXT0112/Zernit?style=for-the-badge">
<img src="https://img.shields.io/github/issues/RXT0112/Zernit?color=violet&style=for-the-badge">
<img src="https://img.shields.io/github/stars/RXT0112/Zernit?style=for-the-badge">
<img src="https://img.shields.io/github/forks/RXT0112/Zernit?color=teal&style=for-the-badge">
</p>
# RXT0112 (WIP name)
**NOTICE:** Code-related implementation merge requests are currently not accepted due to the lack of repository management for multi-language project which is currently being worked on, however merge request will be processed if submitted with a priority affected by this restriction.
Package manager for unix and windows written in rustlang
**FIXME:** Change the URL based on the website used<br>
fixme: Change the URL based on the website used<br>
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/RXT0112/RXT0112)
**FIXME:** Add a pretty button<br>
**FIXME:** codesandbox currently cannot be used for zernit<br>
**FIXME:** Add tracking for scodsandbox usage on zernit<br>
https://codesandbox.io/sgithub/RXT0112/RXT0112
fixme: Add prety button<br>
https://codesandbox.io/s/github/RXT0112/RXT0112
**FIXME:** Change the URL based on the website used<br>
**FIXME:** repl.it currently cannot be used for zernit<br>
**FIXME:** Add tracking for scodsandbox usage on zernit<br>
[![Run on Repl.it](https://repl.it/badge/github/RXT0112/Zernit)](https://repl.it/github/RXT0112/Zernit)
## ABSTRACT
Package manager capable of source and binary import/export with tracking in `world` file and options.
## When to make a new issue?
### Questions
All relavant questions are welcomed and will be answered as soon as possible depending on the lenght of the question and the understanding of the supporter.
### Bugs
Everything relevant that does not work as expected or can be improved. The more issues we are aware of the more work we can put in to resolve them.
### Feature requests
Propose anything we will listen and consider it as long as it's relevant.
### Legal requests
**NOTICE:** This is currently being implemented so there might be a delay in responses due to the lack of resources
This project has custom community maintained license which is designed to avoid common issues related to FSF/GNU/OSS-endorsed licenses while directing the workflow, see License below for more info.
Anything relevant to legal is welcomed in:
- Our bug tracker
- Mentioning `@RXT0112/legal-team` in your relevant GitHub tickets
- Sending an e-mail on [zernit-legal@rixotstudio.cz](mailto:zernit-legal@rixotstudio.cz)
## Mentoring program
**NOTICE:** This is currently work in progress and provided with limited resources
This project provides a free mentoring program for anyone who makes a new merge request with (TBD)
This mentoring support is provided by the community for the community to provide a free education to improve the community-wide code quality and to ensure that everyone who wants to code has the resources to start and learn.
If you need a help on projects outside of project RXT0112 then mension `@RXT0112/mentors` in your GitHub tickets.
Mentoring support is also provided on community server (TBD)
Project RXT0112 hopes to provide an environment for everyone to learn, freel free to mension our mentoring program in your repositories.
## Where to get support
1. For simple questions, guidance and mentoring use chat on https://webchat.freenode.net/#zernit-support
2. For complicated issues either:
- Mension `@RXT0112/support` in your issues or relevant merge requests on GitHub
- Make a new issue in relevant RXT0112 organization (anything relevant is welcomed!)
3. Sent an email on [zernit-support@rixotstudio.cz](mailto:zernit-support@rixotstudio.cz)
## License
This project is designed around a community maintained license that is used to direct a workflow while preserving end-user's freedoms to fix common FSF/GNU/OSS-endorsed license issues (FIXME: Reference the issues) that would allow blockchain implementation and for-profit business plan.
**NOTICE:** The for-profit business plan is currently being investigated to make it suitable for this project, might be turned in non-profit
Developed with GUI in mind

View File

@ -1,8 +0,0 @@
# Container image that runs your code
FROM alpine:3.10
# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh
# Code file to execute when the docker container starts up (`entrypoint.sh`)
ENTRYPOINT ["/entrypoint.sh"]

View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2019 GitHub Actions
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,23 +0,0 @@
# Hello world docker action
This action prints "Hello World" to the log or "Hello" + the name of a person to greet. To learn how this action was built, see "[Creating a Docker container action](https://help.github.com/en/articles/creating-a-docker-container-action)" in the GitHub Help documentation.
## Inputs
### `who-to-greet`
**Required** The name of the person to greet. Default `"World"`.
## Outputs
### `time`
The time we greeted you.
## Example usage
```yaml
uses: actions/hello-world-docker-action@master
with:
who-to-greet: 'Mona the Octocat'
```

View File

@ -1,17 +0,0 @@
# FIXME: Hook https://man.sr.ht/builds.sr.ht/api.md so that we can use sourcehub in GitHub action
name: 'Hello World'
description: 'Greet someone and record the time'
inputs:
who-to-greet: # id of input
description: 'Who to greet'
required: true
default: 'World'
outputs:
time: # id of output
description: 'The time we greeted you'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.who-to-greet }}

View File

@ -1,5 +0,0 @@
#!/bin/sh -l
echo "Hello $1"
time=$(date)
echo ::set-output name=time::$time

31
.github/label-pr.yml vendored
View File

@ -20,30 +20,9 @@
- regExp: ".*\\.br+$"
labels: ["brainfuck"]
- regExp: ".*\\.jar+$"
labels: ["java"]
# Repo specific
#- regExp: ".*\\LICENSE*+$"
# labels: ["license"]
- regExp: ".*\\.v+$"
labels: ["vlang"]
- regExp: ".*\\.cs+$"
labels: ["csharp"]
- regExp: "^/tests/.*"
labels: ["tests"]
- regExp: "^/benches/.*"
labels: ["benches"]
- regExp: "^/LICENSE/.*"
labels: ["license"]
- regExp: ".*\\.md+$"
labels: ["markdown"]
- regExp: "^(Cargo\\.toml|requirements\\.txt)$"
labels: ["dependencies"]
# Repository specific
- regExp: "^/docs/.*"
labels: ["docs"]
- regExp: "^(.*\\Cargo.toml)$"
labels: ["dependencies"]

83
.github/labels.yml vendored
View File

@ -1,5 +1,29 @@
# This file handles labels on GitHub
- name: bug
color: d73a4a
description: "Something isn't working"
- name: docs
color: 0075ca
description: "Improvements or additions to documentation"
- name: duplicate
color: cfd8d7
description: "This issue or pull request already exists"
- name: enhancement
color: a22eef
description: "Proposal for code improvement"
- name: license
color: 1a7546
description: "Relevant to licensing"
- name: dependencies
color: ca0ef0
description: "Relevant to dependencies"
# Priority handling
- name: P - SHTF
color: ae00ff
@ -25,47 +49,6 @@
color: 73ff00
description: "FIXME"
# MISC
- name: bug
color: d73a4a
description: "Something isn't working"
- name: question
color: 7300ff
description: "For questions"
- name: feature-request
color: 03fc5a
description: "Feature requests"
- name: docs
color: 0075ca
description: "Improvements or additions to documentation"
- name: duplicate
color: cfd8d7
description: "This issue or pull request already exists"
- name: enhancement
color: a22eef
description: "Proposal for code improvement"
- name: license
color: 1a7546
description: "Relevant to licensing"
- name: dependencies
color: ca0ef0
description: "Relevant to dependencies"
- name: tests
color: 8d0fd6
description: "Relevant to tests"
- name: benches
color: cc1250
description: "Relevant to benchmarks"
# Programming language specific
- name: python
color: 00aeff
@ -93,20 +76,4 @@
- name: CCP
color: 009dff
description: "Relevant to CCP"
- name: vlang
color: 03cafc
description: "Relevant to vlang"
- name: csharp
color: 08400a
description: "Relevant to csharp"
- name: java
color: ad690a
description: "Relevant to java"
- name: markdown
color: 454545
description: "Relevant to markdown"
description: "Relevant to CCP"

View File

@ -1,9 +0,0 @@
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Hello world action step
uses: ./.github/custom-actions/sourcehub-layer

View File

@ -1,176 +0,0 @@
# Workflow for cpp
name: cpp
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.cpp'
jobs:
# Linting
lint-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -qP ".*cppcheck.*"; then sudo apt install -y cppcheck; fi
- name: Linting..
run: cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.cpp$''); do cppcheck "$file"; done
# Kernel specific builds
build-macos-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-macos-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
build-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
# Docker builds
## Debian - testing
build-gcc-cpp-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Fedora - latest
build-gcc-cpp-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Archlinux - latest
build-gcc-cpp-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Gentoo stage3-amd64
build-gcc-cpp-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
## Exherbo
build-gcc-cpp-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-cpp
build-clang-cpp-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-cpp
# Run tests
## Exherbo (Linux representative)
check-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-gcc-cpp
check-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-clang-cpp
## Windows
check-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-cpp
check-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-cpp
## Darwin
check-darwin-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-cpp
check-darwin-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-cpp
# Benchmarks
## Exherbo
bench-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-gcc-cpp
bench-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-clang-cpp

View File

@ -1,22 +0,0 @@
# Workflow for CPP
name: Jekyll
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- 'docs/**'
jobs:
jekyll:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get dependencies (FIXME-UPSTREAM)
run: sudo gem install jekyll
- name: Building..
# FIXME: Avoid using `cd`
run: cd docs && jekyll build

View File

@ -1,31 +0,0 @@
# Workflow for CPP
name: Jekyll Publish
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
push:
branches:
- master
- init-new
paths:
- 'docs/_posts/**'
jobs:
jekyll:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Get dependencies (FIXME-UPSTREAM)
run: sudo gem install jekyll
- name: Building..
# FIXME: Avoid using `cd`
run: cd docs && jekyll build
- name: Deploying..
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ secrets.GITHUB_REPOSITORY }}
GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
uses: BryanSchuetz/jekyll-deploy-gh-pages@master

View File

@ -1,91 +0,0 @@
# Workflow for vlang
name: vlang
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.v'
jobs:
# Kernel specific builds
build-ubuntu-vlang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
if ! command -v v >/dev/null; then
wget https://github.com/vlang/v/releases/latest/download/v_linux.zip -O "$HOME/.cache/vlang.zip"
[ ! -d /opt/vlang ] && mkdir /opt/vlang
[ ! -d "$HOME/.cache/" ] && mkdir "$HOME/.cache/"
[ ! -f /opt/vlang/v ] && unzip "$HOME/.cache/vlang.zip" -d /opt/vlang/v
[ ! -x /usr/bin/v ] && ln -sf /usr/bin/v /opt/vlang/v
fi
- name: Building..
run: make build-vlang
build-darwin-vlang:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
if ! command -v v >/dev/null; then
wget https://github.com/vlang/v/releases/latest/download/v_linux.zip -O "$HOME/.cache/vlang.zip"
[ ! -d /opt/vlang ] && mkdir /opt/vlang
[ ! -d "$HOME/.cache/" ] && mkdir "$HOME/.cache/"
[ ! -f /opt/vlang/v ] && unzip "$HOME/.cache/vlang.zip" -d /opt/vlang/v
[ ! -x /usr/bin/v ] && ln -sf /usr/bin/v /opt/vlang/v
fi
- name: Building..
run: make build-vlang
build-windows-vlang:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
ECHO fixme
EXIT
- name: Building..
run: make build-vlang
# Docker builds
build-vlang-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-vlang
build-vlang-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-vlang
# Run tests
check-vlang:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-18.04]
steps:
- uses: actions/checkout@v2
- name: running tests..
run: make check-vlang
# Benchmarks
bench-vlang:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest, ubuntu-18.04]
steps:
- uses: actions/checkout@v2
- name: running benchmarks..
run: make bench-vlang

View File

@ -1,67 +0,0 @@
name: Bash
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.bash'
- "tools/dockerfreeze"
jobs:
# Linting
lint:
runs-on: ubuntu-latest
container: debian:stable
steps:
- name: Installing dependencies..
run: |
# Sync repos
# Check for git
if ! apt list --installed 2>/dev/null | grep -qP "^git\/stable.*"; then
# Check if we can install git
if ! apt list | grep -qP "^git\/stable.*"; then
apt update
elif apt list | grep -qP "^git\/stable.*"; then
true
else
exit 255
fi
# Install git
apt install -y git
elif apt list --installed 2>/dev/null | grep -qP "^git\/stable.*"; then
true
else
exit 255
fi
# Check for shellcheck
if ! apt list --installed 2>/dev/null | grep -qP "^shellcheck\s{1}-.*"; then
# Check if we can install shellcheck
if ! apt list | grep -qP "^shellcheck\s{1}-.*"; then
apt update
elif apt list | grep -qP "^shellcheck\s{1}-.*"; then
true
else
exit 255
fi
# Install shellcheck
apt install -y shellcheck
elif apt list --installed 2>/dev/null | grep -qP "^shellcheck\s{1}-.*"; then
true
else
exit 255
fi
- name: Pulling git dir..
uses: actions/checkout@v2
- name: Processing files..
# Make sure that bash is used
shell: bash
run: |
cd "$GITHUB_WORKSPACE"
# Process files
## NOTICE: Do not use for loop to avoid pitfall https://mywiki.wooledge.org/BashPitfalls#pf1
git --git-dir="$GITHUB_WORKSPACE/.git" ls-files -z -- '*.bash' tools/dockerfreeze | while IFS= read -rd '' file; do
printf 'linting bash file %s\n' "$file"
shellcheck --external-sources --shell=bash "$file"
done

View File

@ -1,208 +0,0 @@
# Workflow for CPP
name: C
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.c'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt-list --installed cppcheck | grep -q ".*cppcheck.*"; then sudo apt install -y cppcheck; fi
- name: Linting..
run: cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.c$'); do cppcheck "$file"; done
## Valgrind test on gcc
valgrind-gcc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -q ".*valgrind.*"; then sudo apt install -y valgrind; fi
- name: Linting..
run: |
make build-gcc-c
# NOTICE: This requires to input the arguments invidually
# FIXME: Use regex to gather arguments
valgrind --leak-check=full -v build/build-gcc-c/zernit-gcc-c -h -unexpected
## Valgrind on clang
valgrind-clang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! apt list --installed | grep -qP ".*valgrind.*"; then sudo apt install -y valgrind; fi
- name: Linting..
run: |
make build-clang-c
# NOTICE: This requires to input the arguments invidually
# FIXME: Use regex to gather arguments
valgrind --leak-check=full -v build/build-clang-c/zernit-clang-c -h -unexpected
# Kernel specific builds
build-macos-gcc-c:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-windows-gcc-c:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-macos-clang-c:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: make build-clang-c
build-windows-clang-c:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Downloading dependencies..
run: Invoke-WebRequest -OutFile LLVM-3.7.0-win64.exe https://releases.llvm.org/3.7.0/LLVM-3.7.0-win64.exe
- name: Install dependencies..
run: |
echo FIXME_INSTALL_CLANG
EXIT
- name: Building..
run: make build-clang-c
# Docker builds
## Debian - testing
build-gcc-c-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-debian:
runs-on: ubuntu-latest
steps:
- uses: docker://debian/testing:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Fedora - latest
build-gcc-c-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-fedora:
runs-on: ubuntu-latest
steps:
- uses: docker://fedora/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Archlinux - latest
build-gcc-c-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-archlinux:
runs-on: ubuntu-latest
steps:
- uses: docker://archlinux/latest:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Gentoo stage3-amd64
build-gcc-c-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-gentoo:
runs-on: ubuntu-latest
steps:
- uses: docker://gentoo/stage3-amd64:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
## Exherbo
build-gcc-c-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-gcc-c
build-clang-c-exherbo:
runs-on: ubuntu-latest
steps:
- uses: docker://exherbo/exherbo_ci:latest
- uses: actions/checkout@v2
- name: building..
run: make build-clang-c
# Run tests
## Exherbo (Linux representative)
check-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-gcc-c
check-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- run: make check-clang-c
## Windows
check-windows-gcc-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-c
check-windows-clang-cpp:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-c
## Darwin
check-darwin-gcc-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-gcc-c
check-darwin-clang-cpp:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- run: make check-clang-c
# Benchmarks
## Exherbo
bench-exherbo-gcc-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-gcc-cpp
bench-exherbo-clang-cpp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://exherbo/exherbo_ci:latest
- name: running benchmarks..
run: make bench-clang-cpp

61
.github/workflows/cona-isa.yml vendored Normal file
View File

@ -0,0 +1,61 @@
name: ConaIsa
on: [pull_request]
jobs:
rustlang:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: build
run: make build-rustlang
- name: tests
run: make check-rustlang
gc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: make build-gc
run: make build-gc
- name: make check-gc
run: make check-gc
gcc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: make build-gcc
run: make build-gcc
- name: make check-gcc
run: make check-gcc
shell:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: shellcheck
uses: azohra/shell-linter@v0.2.0
python:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest

View File

@ -1,30 +0,0 @@
name: Dockerfile
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.Dockerfile'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: |
# Fix untill hadolint it available by downstream
if ! apt-cache search hadolint | grep -qP "^hadolint -"; then
# Install hadolint if not already installed through apt
if ! apt list --installed | grep -qP "^hadolint -"; then
if ! apt-cache search hadolint | grep -qP "^hadolint -.*"; then { if command -v wget >/dev/null; then apt install -y wget; fi ;} && wget https://github.com/hadolint/hadolint/releases/download/v1.17.5/hadolint-Linux-x86_64 -O /usr/bin/hadolint && { [ ! -x hadolint ] && chmod +x /usr/bin/hadolint ;}; elif apt-cache search hadolint | grep -qP "^hadolint -.*"; then apt install -y hadolint; fi
fi
fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.Dockerfile$'); do
printf 'checking dockerfile %s using hadolint\n' "$file"
hadolint "$file"
done

View File

@ -1,4 +1,4 @@
name: ConaIsa
name: Greetings
on: [pull_request, issues]

View File

@ -1,18 +1,18 @@
name: ConaIsa
name: label-maker
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '*.labels\.yml$'
on:
schedule:
- cron: "*/30 * * * *"
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Assigning labels
-
name: Checkout
uses: actions/checkout@v1
-
name: Run Labeler
if: success()
uses: crazy-max/ghaction-github-labeler@v1
with:

View File

@ -1,13 +1,12 @@
# Workflow to associate labels automatically
name: Label management
name: labeler
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
# Trigger the workflow on pull request events
on: [pull_request]
jobs:
label:
runs-on: ubuntu-latest
runs-on: ubuntu-18.04
steps:
# We need to checkout the repository to access the configured file (.github/label-pr.yml)
- uses: actions/checkout@v2

View File

@ -1,23 +0,0 @@
name: Markdown
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.md'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Installing dependencies..
run: if ! command -v markdownlint; then sudo npm install -g markdownlint-cli; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.md$'); do
printf 'linting markdown file %s' "$file"
markdownlint "$file" --ignore node_modules
done

View File

@ -1,391 +0,0 @@
# Workflow for python
name: Python
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.py'
- 'requirements.txt'
jobs:
# Linting 3.5
lint-linux-python-3_5:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_5:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-windows-python-3_5:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
security-check-python-3_5:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.5
- name: Installing python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Installing linting dependencies
run: |
if apt list --installed | grep -qP "^bandit -"; then sudo apt install -y bandit; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do
printf 'checking python file %s for security issues\n' "$file"
bandit "$file"
done
# Linting 3.6
lint-linux-python-3_6:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_6:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-window-python-3_6:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
security-check-python-3_6:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Installing python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Installing linting dependencies
run: |
if apt list --installed | grep -qP "^bandit -"; then sudo apt install -y bandit; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do
printf 'checking python file %s for security issues\n' "$file"
bandit "$file"
done
# Linting 3.7
lint-linux-python-3_7:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_7:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-windows-python-3_7:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
security-check-python-3_7:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Installing python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Installing linting dependencies
run: |
if apt list --installed | grep -qP "^bandit -"; then sudo apt install -y bandit; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do
printf 'checking python file %s for security issues\n' "$file"
bandit "$file"
done
# Linting 3.8
lint-linux-python-3_8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-macos-python-3_8:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
lint-windows-python-3_8:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
# FIXME: False triggers on files which names continues after set extension
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do pytest "$file"; done
security-check-python-3_8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configuring backend..
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Installing python dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Installing linting dependencies
run: |
if apt list --installed | grep -qP "^bandit -"; then sudo apt install -y bandit; fi
- name: Linting..
run: |
cd "$GITHUB_WORKSPACE" && for file in $(git ls-tree --name-only -r ${{ github.sha }} | grep '\.py$'); do
printf 'checking python file %s for security issues\n' "$file"
bandit "$file"
done

View File

@ -1,84 +0,0 @@
# Workflow for Rustlang
name: Rustlang
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.rs'
- Cargo.toml
jobs:
# Kernel specific builds
ubuntu-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
macos-build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
windows-build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Building..
run: cargo build
# Docker builds
debian-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://debian:testing
- name: Building..
run: cargo build
fedora-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://fedora:latest
- name: Building..
run: cargo build
fedora-next-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://fedora:rawhide
- name: Building..
run: cargo build
archlinux-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://archlinux:latest
- name: Building..
run: cargo build
gentoo-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: docker://gentoo/stage3-amd64:latest
- name: Building..
run: cargo build
# Run tests
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Testing..
run: cargo test
# Benchmarks
bench:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Benchmarking..
run: cargo bench

View File

@ -1,66 +0,0 @@
name: Shell
# Relevant to events - https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows
on:
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
paths:
- '**.sh'
jobs:
# Linting
lint:
runs-on: ubuntu-latest
container: debian:stable
steps:
- name: Installing dependencies..
run: |
# Sync repos
# Check for git
if ! apt list --installed 2>/dev/null | grep -qP "^git\/stable.*"; then
# Check if we can install git
if ! apt list | grep -qP "^git\/stable.*"; then
apt update
elif apt list | grep -qP "^git\/stable.*"; then
true
else
exit 255
fi
# Install git
apt install -y git
elif apt list --installed 2>/dev/null | grep -qP "^git\/stable.*"; then
true
else
exit 255
fi
# Check for shellcheck
if ! apt list --installed 2>/dev/null | grep -qP "^shellcheck\s{1}-.*"; then
# Check if we can install shellcheck
if ! apt list | grep -qP "^shellcheck\s{1}-.*"; then
apt update
elif apt list | grep -qP "^shellcheck\s{1}-.*"; then
true
else
exit 255
fi
# Install shellcheck
apt install -y shellcheck
elif apt list --installed 2>/dev/null | grep -qP "^shellcheck\s{1}-.*"; then
true
else
exit 255
fi
- name: Pulling git dir..
uses: actions/checkout@v2
- name: Processing files..
# Make sure that bash is used
shell: bash
run: |
cd "$GITHUB_WORKSPACE"
# Process files
## NOTICE: Do not use for loop to avoid pitfall https://mywiki.wooledge.org/BashPitfalls#pf1
git --git-dir="$GITHUB_WORKSPACE/.git" ls-files -z -- '*.sh' | while IFS= read -rd '' file; do
printf 'linting shell file %s\n' "$file"
shellcheck --external-sources --shell=sh "$file"
done

19
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'Stale issue message'
stale-pr-message: 'Stale pull request message'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'

View File

@ -1,17 +0,0 @@
name: Staler
on:
schedule:
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'FIXME: Stale issue message (https://github.com/RXT0112/Zernit/edit/master/.github/workflows/stale.yml)'
stale-pr-message: 'FIXME: Stale pull request message (https://github.com/RXT0112/Zernit/edit/master/.github/workflows/stale.yml)'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'

View File

@ -1,22 +1,5 @@
privileged: true
image:
file: gitpod/debian.Dockerfile
# FIXME: Change gitpod user on GITPOD_GIT_USER_NAME env value
tasks:
# Does not accept Quotation without '|' ?
- init: |
printf 'FIXME: %s\n' "Get rid of me"
command: |
printf 'FIXME: %s\n' "This is a hotfix for https://github.com/gitpod-io/gitpod/issues/1252 manipulating PS1 env var"
# FIXME: The color of second line does not transfer to the environment unless Ctrl+C is pressed
export PS1="\033[1m\e[38;5;201m[ \t : \w : EXIT \$? ]\033[0m\e[38;5;011m\n\u@gitpod \\$ \[$(tput sgr0)\]"
# ^^^^^^^ - bolt
# ^^^^^^^^^^^^ - Purple color
# ^^^^^^ - remove bolt
# ^^^^^^^^^^^ - Gold color
clear
file: gitpod/gitpod.Dockerfile
vscode:
extensions:
@ -26,9 +9,4 @@ vscode:
- hbenl.vscode-test-explorer@2.15.0:koqDUMWDPJzELp/hdS/lWw==
- belfz.search-crates-io@1.2.1:kSLnyrOhXtYPjQpKnMr4eQ==
- serayuzgur.crates@0.4.7:HMkoguLcXp9M3ud7ac3eIw==
- timonwong.shellcheck@0.9.0:hsU/Rd39aqPYowTqL+DbXg==
- krosf.vscode-valgrind@0.0.1:YTn5lOY8OnPKJYDqJPr/Sg==
- matklad.rust-analyzer@0.1.20200217:zozmBmOg1N91pRISIsYXBg==
- exiasr.hadolint@0.3.0:/FkAW3eTb+z9O7VZAyAa0w==
- DavidAnson.vscode-markdownlint@0.34.0:l4DL7iPpo7DdhfUHIUtcuQ==
- yzhang.markdown-all-in-one@2.7.0:5+DmuGcePw8L9PtfgOAAHg==
- timonwong.shellcheck@0.9.0:hsU/Rd39aqPYowTqL+DbXg==

View File

@ -1,12 +0,0 @@
ignored:
- DL3007 # Usage of latest version is expected
- DL3008 # Pinning specific version on apt is not sane
- DL3015 # We don't mind recommended packages
- DL4001 # Allow usage of curl and wget
- DL4006 # False-trigger on /bin/sh usage?
trustedRegistries:
- docker.io
- debian
- gitpod
- hadolint

View File

@ -1,8 +0,0 @@
// FIXME-LINT(18032020): Outputs invalid errors in gitpod
{
// We do not need newlines on EOF
"single-trailing-newline": false,
// We don't care fore line lenght due to the softwrap
"line-length": false
}

View File

@ -1,3 +0,0 @@
Configuration directory for [theia](https://github.com/eclipse-theia/theia)
Theia is also used by gitpod

View File

@ -1,19 +0,0 @@
{
"editor.wordWrap": "on",
// To show invisibles
"editor.renderWhitespace": "all",
"editor.tabSize": 2,
"editor.tabCompletion": "on",
"setup.dontask": true,
// rustlang
"crates.upToDateDecorator": "",
"rust.wait_to_build": 0,
// FIXME: Expand nproc command here
// NOTICE: Gitpod is currently (130220) limited on 8 threads
// FIXME: We are unable to shot datatype helpers (https://github.com/gitpod-io/gitpod/issues/1200)
"rust.jobs": 8,
"rust.build_on_save": true,
"rust.target_dir": "build/rustlang",
"rust-analyzer.displayInlayHints": true,
"rust-analyzer.highlightingOn": true,
}

View File

@ -1,6 +1,5 @@
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# FIXME-LINT(18032020): Outputs wrong highlights in gitpod
# Based in part upon 'travis.yml' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/.travis.yml), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
@ -9,37 +8,30 @@ sudo: required
# Use matrix to run tests on different environments
matrix:
include:
## BUILD ##
# Exherbo Linux
# Exherbo with GCC
- name: "Exherbo Linux with GCC"
os: linux
dist: bionic
group: exherbo
cache:
directories:
- /var/db/paludis
env:
DOCKER="exherbo_ci:latest"
VARIANT="exherbo"
TOOL="build"
TOOL="compile"
COMPILER_C="gcc"
COMPILER_CXX="g++"
# Exherbo with Clang
- name: "Exherbo Linux with Clang"
os: linux
dist: bionic
group: exherbo
cache:
directories:
- /var/db/paludis
env:
DOCKER="exherbo_ci:latest"
VARIANT="exherbo"
TOOL="build"
TOOL="compile"
COMPILER_C="clang"
COMPILER_CXX="clang++"
@ -54,13 +46,10 @@ matrix:
group: travis_latest
env:
DOCKER="ubuntu:eoan"
VARIANT="ubuntu-19.10"
TOOL="build"
VARIANT="ubuntu"
TOOL="compile"
COMPILER_C="gcc"
COMPILER_CXX="g++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="git make cargo rustc"
# Ubuntu 19.10 (Eoan Ermine) with Clang
- name: "Ubuntu 19.10 (Eoan Ermine) with Clang"
os: linux
@ -71,12 +60,10 @@ matrix:
group: travis_latest
env:
DOCKER="ubuntu:eoan"
VARIANT="ubuntu-19.10"
TOOL="build"
VARIANT="ubuntu"
TOOL="compile"
COMPILER_C="clang"
COMPILER_CXX="clang++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="git make cargo rustc"
# Debian Linux
# Debian Testing
@ -86,75 +73,84 @@ matrix:
group: travis_latest
env:
DOCKER="debian:testing"
VARIANT="debian-testing"
TOOL="build"
VARIANT="debian"
TOOL="compile"
COMPILER_C="gcc"
COMPILER_CXX="g++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="rustc cargo git make pkg-config libssl-dev"
- name: "Debian Testing with Clang"
os: linux
dist: bionic
group: travis_latest
env:
DOCKER="debian:testing"
VARIANT="debian-testing"
TOOL="build"
VARIANT="debian"
TOOL="compile"
COMPILER_C="clang"
COMPILER_CXX="clang++"
REPOSITORY="https://github.com/RXT0112/Zernit.git"
PACKAGES="rustc cargo git make pkg-config libssl-dev"
# - name: "Debian Testing packaging with pbuilder"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# DOCKER="debian:testing"
# VARIANT="debian"
# TOOL="pbuilder"
# # Debian Sid
# - name: "Debian Sid with GCC"
# Debian Sid
- name: "Debian Sid with GCC"
os: linux
dist: bionic
group: travis_latest
env:
DOCKER="debian:sid"
VARIANT="debian"
TOOL="compile"
COMPILER_C="gcc"
COMPILER_CXX="g++"
- name: "Debian Sid with Clang"
os: linux
dist: bionic
group: travis_latest
env:
DOCKER="debian:sid"
VARIANT="debian"
TOOL="compile"
COMPILER_C="clang"
COMPILER_CXX="clang++"
# - name: "Debian Sid packaging with pbuilder"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# DOCKER="debian:sid"
# VARIANT="debian"
# TOOL="build"
# COMPILER_C="gcc"
# COMPILER_CXX="g++"
# REPOSITORY="https://github.com/RXT0112/Zernit.git"
# PACKAGES="rustc cargo build-essentials make"
# TOOL="pbuilder"
# - name: "Debian Sid with Clang"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# DOCKER="debian:sid"
# VARIANT="debian"
# TOOL="build"
# COMPILER_C="clang"
# COMPILER_CXX="clang++"
# REPOSITORY="https://github.com/RXT0112/Zernit.git"
# PACKAGES="rustc cargo build-essentials make"
# FreeBSD
# FreeBSD 12.0-RELEASE
- name: "FreeBSD 12.0-RELEASE with Clang"
os: linux
dist: bionic
group: travis_latest
env:
QEMU="FreeBSD"
VARIANT="12.0-RELEASE"
TOOL="compile"
COMPILER_C="clang"
COMPILER_CXX="clang++"
# # FreeBSD
# # FreeBSD 12.0-RELEASE
# - name: "FreeBSD 12.0-RELEASE with Clang"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# QEMU="FreeBSD"
# VARIANT="12.0-RELEASE"
# TOOL="build"
# COMPILER_C="clang"
# COMPILER_CXX="clang++"
# - name: "FreeBSD 12.0-RELEASE with GCC"
# os: linux
# dist: bionic
# group: travis_latest
# env:
# QEMU="FreeBSD"
# VARIANT="12.0-RELEASE"
# TOOL="build"
# COMPILER_C="gcc"
# COMPILER_CXX="g++"
- name: "FreeBSD 12.0-RELEASE with GCC"
os: linux
dist: bionic
group: travis_latest
env:
QEMU="FreeBSD"
VARIANT="12.0-RELEASE"
TOOL="compile"
COMPILER_C="gcc"
COMPILER_CXX="g++"
# FIXME: MacOS needs refactor of C programs to be compatible (https://travis-ci.org/Kreyrock/Kreyrock/jobs/620509927?utm_medium=notification&utm_source=github_status)
# MacOS X
@ -166,8 +162,6 @@ matrix:
osx_image: xcode11.2
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.14, xcode11.2 with gcc"
os: osx
@ -176,8 +170,6 @@ matrix:
osx_image: xcode11.2
compiler: gcc
group: travis_latest
env:
TOOL="build"
## MacOS 10.14.4
- name: "MacOS 10.14.4, xcode10.3 with clang"
@ -187,8 +179,6 @@ matrix:
osx_image: xcode10.3
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.14.4, xcode10.3 with gcc"
os: osx
@ -197,8 +187,6 @@ matrix:
osx_image: xcode10.3
compiler: gcc
group: travis_latest
env:
TOOL="build"
## MacOS 10.13
- name: "MacOS 10.13, xcode9.4 with clang"
@ -208,8 +196,6 @@ matrix:
osx_image: xcode9.4
compiler: clang
group: travis_latest
env:
TOOL="build"
- name: "MacOS 10.13, xcode9.4 with gcc"
os: osx
@ -218,23 +204,16 @@ matrix:
osx_image: xcode9.4
compiler: gcc
group: travis_latest
env:
TOOL="build"
# Others
# Default linux
- name: "Linux, default check"
- name: "Linux, default build"
os: linux
dist: bionic
group: travis_latest
env:
TOOL="check"
# Windows
# - name: "Windows build"
# os: windows
# env:
# TOOL="build"
TOOL="compile"
before-install:
- QA/travis-ci/before-install.sh
@ -243,5 +222,6 @@ install:
- QA/travis-ci/install.sh
script:
- QA/travis-ci/test.sh
- QA/travis-ci/build.sh
- make build
# We already have logic for linting so there is no need to use 'make check'
- QA/tests/HELL/hell.sh

5
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,5 @@
# Contributing guideliness
FIXME: Preamble needed
FIXME: Do not assign translate variables in fixme messages

View File

@ -13,16 +13,7 @@ edition = "2018"
# FIXME: Replace with latest once development is in gold
clap = "2.33.0"
# Used for repository management as alternative to 'make'
cargo-make = "0.30.0"
cargo-make = "0.26.2"
# Used for reading toml files
toml = "0.5.6"
# Custom logging solution
zernit-logger = { path = "src/libs/rustlang/zernit-logger" }
[dev-dependencies]
# Used for benchmarking
criterion = "0.3.1"
[[bench]]
name = "example_bench"
harness = false
zernit-logger = { path = "src/libs/rustlang/zernit-logger" }

View File

@ -1,3 +1,45 @@
All rights reserved by Jacob Hrbek <kreyren@rixotstudio.cz> in 12/07/2018 unless explicitedly specified otherwise.
All rights reserved by Jacob Hrbek <kreyren@rixotstudio.cz> 2020.
This repository is designed to be used with a licences specified in src/licences that are custom made for this project and projects alike to define a new standard.
Author (Jacob Hrbek) revokes all permissions to modify, redistribute, fork or any other handling of any content in this repository to everyone unless license provided per file or directory states otherwise.
This is done to protect the intelectual property untill following stub version is finished.
This section of this license identified as 'stub version' is not yet in effect.
=== START OF STUB VERSION ===
This license is now voided until finished into a production to replace current license by which it's meant to be announced the change by the original creator of this project (github.com/kreyren)
Expecting
- Paid for commercial use (small fee maybe depending on the amount of employees) unless said person is actively contributing to the repository (free-of-charge)
- Do not allow keeping the source code closed
- Forks are allowed only for contribution unless upstream prevents implementation (excluding changes to the license over which the upstream has full control for obvious reasons, but allow contributions to the license) of a feature for which the fork would be allowed as standalone (This is made to direct the workflow)
- Add method to handle projects that rewrite this in a different programming language -> Host in our organization
- Anyone can request additional rights for the use of this software (We try to make this as free as possible with the option to finance the development)
- Paid for non-contributing users?
- Since non-contributing users are basically investment (usually with low return value) of our resources and to encourage contribution in docummentation, etc..?
---
# RXT GENERAL ZERNIT LICENSE (RXT0112-LICENSE)
Version 0, 20 January 2020
Copyright (C) 2020 [RiXotStudio](http://rixotstudio.cz)
<!-- FIXME: Rephrase -->
None is allowed to distribute copies of this license without explicit permission granted by this license.
<!-- FIXME: Render preamble in the middle of the documment -->
## Preamble
This license is made to protect the intellectual property and direct workflow of project codenamed as **RXT0112** also known as **Zernit** where this license is developed based on [GPL-3 license](https://www.gnu.org/licenses/gpl-3.0.en.html) and [Free Software Foundation](https://www.fsf.org) philosophy.
This license is community maintained where only the authorised personel further clarified below are allowd to make changes.
## TERMINOLOGY
authorised person = ...
Original Creator (OC) == Jacob Hrbek <kreyren@rixotstudio.cz>
## Forks
To avoid segmentation of this project this permission denies

View File

@ -8,52 +8,47 @@ all:
@ printf '%s\n' "Unknown option '$1' parsed in target all"
@ exit 2
## UNLEASH RUNTIME ##
unleash-elisp:
@ src/RXT0112-1/downstream-classes/zeres-0/elisp/UNLEASH.el
## BUILD ##
# All build targets are expected in 'build/build-LANG' where 'LANG' is the unique identifier of the language used
# FIXME: Replace 'exit 1' with helpful messages
build: build-rustlang build-clang-c build-gcc-c build-gcc-ccp build-clang build-brainfuck build-python build-vlang build-golang
@ printf 'WARN: %s\n' "You are abould to build all targets on multilang project"
# Fetch files from third parties
vendor:
@ [ ! -d vendor ] && mkdir vendor
@ [ ! -d vendor/rustlang ] && mkdir vendor/rustlang
@ git clone https://github.com/clap-rs/clap.git vendor/rustlang/clap-rs
@ for file in vendor/rustlang/clap-rs/benches/*; do cp "$$file" benches/rustlang/claprs-$${file##vendor/rustlang/clap-rs/benches/} || exit 1; done
build:
@ printf 'FIXME: %s\n' "Build all targets if executed"
@ exit 1
# FIXME: Build in '$repodir/build/build-rustlang' instead of '$repodir/target' for multilang support
build-rustlang:
@ cargo build --verbose
# FIXME: Add logic
build-clang-c:
build-gc:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/build-clang-c ] && { mkdir build/build-clang-c || exit 1 ;} || exit 0
@ [ ! -d build ] && { mkdir build || exit 1 ;}
@ [ ! -d build/target-gc ] && { mkdir build/build-gc || exit 1 ;}
@ # Compilation
@ [ ! -f build/build-clang-c/zernit-clang-c ] && { clang src/bin/main.c -o build/build-clang-c/zernit-clang-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for clang-c finished"
build-gcc-c:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;} || exit 0
@ [ ! -d build/target-gcc-c ] && { mkdir build/build-gcc-c || exit 1 ;} || exit 0
@ # Compilation
@ [ ! -f build/build-gcc-c/zernit-gcc-c ] && { gcc src/bin/main.c -o build/build-gcc-c/zernit-gcc-c || exit 1 ;} || exit 0
@ printf '%s\n' "Compilation of target for gcc-c finished"
@ ## gc is not available on github -> Using GCC
@
@ [ ! -f build/build-gc/gc-zernit ] && { gcc src/bin/main.c -o build/build-gc/gc-zernit || exit 1 ;}
@ printf '%s\n' "Compilation of target for gc finished"
# FIXME: Replace 'exit 1' with helpful messages
build-gcc-ccp:
build-gcc:
@ # Make a build directory
@ [ ! -d build ] && { mkdir build || exit 1 ;}
@ [ ! -d build/target-gcc ] && { mkdir build/build-gcc || exit 1 ;}
@ # Compilation
@ [ ! -f build/build-gcc ] && { gcc src/bin/main.c -o build/build-gcc/gcc-zernit || exit 1 ;}
@ [ ! -f build/build-gcc ] && { gc src/bin/main.c -o build/build-gcc/gcc-zernit || exit 1 ;}
@ printf '%s\n' "Compilation of target for gcc finished"
build-clang-ccp:
build-clang:
@ printf 'FIXME: %s\n' "translate zernit in clang"
@ exit 1
@ -61,19 +56,13 @@ build-brainfuck:
@ printf 'FIXME: %s\n' "translate zernit in brainfuck"
@ exit 1
# FIXME: requires python3.6+ and pip3
build-python:
@ pip3 install -r requirements.txt
@ printf 'FIXME: %s\n' "translate zernit in python"
@ exit 1
build-vlang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-vlang ] && mkdir build/build-vlang
@ /opt/vlang/v -o build/build-vlang/zernit-vlang src/bin/main.v
build-golang:
@ [ ! -d build ] && mkdir build
@ [ ! -d build/build-golang ] && mkdir build/build-golang
@ go build -o build/build-golang/zernit-golang src/bin/main.go
@ printf 'FIXME: %s\n' "translate zernit in vlang"
@ exit 1
## CHECK/TESTS ##
@ -81,15 +70,15 @@ check:
@ printf 'FIXME: %s\n' "Check all targets if executed"
@ exit 1
check-gcc-c:
check-gc:
@ printf 'FIXME: %s\n' "Add tests for gc"
@ exit 1
check-clang-c:
check-gcc:
@ printf 'FIXME: %s\n' "Add tests for gcc"
@ exit 1
check-gcc-ccp:
check-clang:
@ printf 'FIXME: %s\n' "Add tests for clang"
@ exit 1
@ -117,21 +106,12 @@ check-vlang:
@ printf 'FIXME: %s\n' "Add tests for vlang"
@ exit 1
## BENCHES ##
# FIXME: Run all benches if this is executed
bench: bench-rustlang
# FIXME: Run vendor and
bench-rustlang:
@ cargo bench
## CLEAN ##
clean: clean-vendor clean-benches
@ [ -d build ] && { rm -rf build || exit 1 ;} || exit 0
clean:
@ [ -d build ] && rm -r build
@ printf '%s\n' "Build directory has been cleaned"
clean-vendor:
@ # FIXME: Output helpful message if directory doesn't exists
@ [ -d vendor ] && { rm -rf vendor || exit 1 ;} || exit 0
@ [ -d vendor ] && rm -r vendor

1
QA/README.md Normal file
View File

@ -0,0 +1 @@
Backend for Quality Assurance

51
QA/github/NAME-ME.yml Normal file
View File

@ -0,0 +1,51 @@
name: NAME-ME
on: [push, pull_request]
# TODO
## Change profile photo of this CI
## Greet end-user submiting merge request that is not in blacklist (blacklist used for trusted devs) with message ensuring QA
## Greet end-user submiting merge request with checklist
## Adapt lable handling
jobs:
build-ubuntu:
runs-on: ubuntu-latest
steps:
- name: Install dependencies
# FIXME: Get libfuse3-dev for tests on etcfs.c
run: sudo apt-get install meson cppcheck clang gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot uthash-dev gzip rsync autopoint shellcheck -y && sudo wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt && sudo chmod +x /usr/bin/shfmt
- uses: actions/checkout@v1
#- name: Compile
# Disable signature for tests
# run: CFLAGS="-O3 --pipe" make SKIPSIGN=true --jobs
- name: Lint
run: make check
build-macos:
runs-on: macos-latest
steps:
- name: Install dependencies
run: brew install shellcheck
- uses: actions/checkout@v1
- name: Lint
run: make check
build-freebsd:
runs-on: freebsd-latest
steps:
- name: Install dependencies
run: pkg install hs-ShellCheck
- uses: actions/checkout@v1
- name: Lint
run: make check
build-redox:
runs-on: redox-latest
steps:
- name: Install dependencies
run: printf '%s\n' "This is a gesture to redox developers to encourage development, once we are able to install required packages we will use them"
- name: Lint
run: make check
build-windows:
runs-on: windows-latest
steps:
- name: Lint
run: make check

View File

@ -9,7 +9,7 @@
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
. "$(dirname "$0")/get-container.sh"
fixme "Travis - before-install.sh disables SC1117 as hotfix"

View File

@ -5,7 +5,7 @@
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
. "$(dirname "$0")/travis-common.sh"
if [ -n "$DOCKER" ]; then
@ -18,8 +18,7 @@ if [ -n "$DOCKER" ]; then
fi
# Get name of package
fixme "Output package name based on repository name"
PACKAGE="Zernit"
PACKAGE="Kreyrock"
# Set container name
CONTAINER=$(printf '%s\n' "$PACKAGE-$DOCKER-$TOOL" | sed -e "s/:/_/g")
@ -28,9 +27,7 @@ if [ -n "$DOCKER" ]; then
fi
export CONTAINER
elif [ -z "$DOCKER" ]; then
info "Docker is not used"
else
die 256 "Unexpected happend while processing DOCKER variable"
info "Docker is not used"
unset CONTAINER
fi

190
QA/travis-ci/install.sh Executable file
View File

@ -0,0 +1,190 @@
#!/usr/bin/env bash
# shellcheck disable=SC1117
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'install.sh' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "$(dirname "$0")/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "$(dirname "$0")/get-container.sh"
fixme "Travis - install.sh is disabling SC1117 as hotfix"
# QA: Why US mirror?
UBUNTU_MIRROR="us.archive.ubuntu.com"
RETRY_MAXTRIALS=5
RETRY_PAUSE=60
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ] && [ "$VARIANT" = ubuntu ]; then
sudo apt update
if [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" = "libfuse3-dev" ]; then
# Fetch all dependencies
sudo apt-get install meson uthash-dev libcap-dev cppcheck libattr1-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot uthash-dev gzip rsync autopoint uthash-dev shellcheck -y
elif [ "$(apt-cache search libfuse3-dev | grep -o "libfuse3-dev")" = "libfuse3-dev" ]; then
sudo apt-get install meson uthash-dev libcap-dev cppcheck clang gcc git libattr1-dev ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot uthash-dev gzip rsync autopoint shellcheck -y
# Travis is incompetent to provide usefull version of linux (https://travis-ci.community/t/more-virtual-environments/6213/7) so we have to fetch libfuse3-dev manually
warn "Travis-CI's ubuntu still doesn NOT offer 'libfuse3-dev', using hack to fetch it manually"
mkdir "$HOME/build/fuse3"
fixme "Export latest fuse3 instead of hard-coded in ci/before-install.sh"
wget https://github.com/libfuse/libfuse/releases/download/fuse-3.6.2/fuse-3.6.2.tar.xz -O "$HOME/build/fuse3/fuse-3.6.2.tar.xz"
tar xpf "$HOME/build/fuse3/fuse-3.6.2.tar.xz" --directory="$HOME/build/fuse3/"
mkdir "$HOME/build/fuse3/fuse-3.6.2/build"
fixme "Avoid using cd in ci/before-install.sh"
cd "$HOME/build/fuse3/fuse-3.6.2/build"|| die
meson .. --prefix /usr
ninja
sudo ninja install
else
die "Unexpected in install.sh configuring linux as-is"
fi
# Fetch shfmt (HACK!)
if [ "$(apt-cache search shfmt | grep -o "shfmt")" = "shfmt" ]; then
info "Installing shfmt"
apt install -y shfmt
elif [ "$(apt-cache search shfmt | grep -o "shfmt")" != "shfmt" ]; then
warn "Package shfmt is not available, using hack to fetch it manually.."
# Get shfmt
if [ -e /usr/bin/shfmt ]; then
warn "File /usr/bin/shfmt already exists! This is unexpected assuming that shfmt is already provided on linux as-is?"
elif [ ! -e /usr/bin/shfmt ]; then
sudo wget https://github.com/mvdan/sh/releases/download/v3.0.0-beta1/shfmt_v3.0.0-beta1_linux_amd64 -O /usr/bin/shfmt
[ ! -x /usr/bin/shfmt ] && sudo chmod +x /usr/bin/shfmt
else
die "Unexpected happend in /usr/bin/shfmt"
fi
else
die "Unexpected happend in feteching shfmt in linux as-is"
fi
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
# Apt-based
if [ "$VARIANT" = ubuntu ] || [ "$VARIANT" = debian ]; then
# QA: Why are these variables? Looks like perfect scenario for a function..
APT_UPDATE='env LANG=C.UTF-8 apt-get update -o Acquire::GzipIndexes=false'
APT_INSTALL="env LANG=C.UTF-8 DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef --no-install-recommends"
# APT_UPGRADE="env LANG=C.UTF-8 DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef --no-install-recommends"
# APT_ADD_REPOSITORY="env LANG=C.UTF-8 apt-add-repository -y"
# Prepare container
info "Preparing container ..."
# Use uncompressed package lists. Necessary to work around
# "apt-show-version" problems due to usage of compressed lists in
# Docker containers:
# https://askubuntu.com/questions/916199/install-apt-show-versions-inside-an-ubuntu-docker-container
sudo docker exec "$CONTAINER" env LANG=C.UTF-8 sed -e "s#http://archive.ubuntu.com/ubuntu/#http://$UBUNTU_MIRROR/ubuntu/#g" -i /etc/apt/sources.list
fixme "Do not use bash in install.sh"
#sudo docker exec "$CONTAINER" bash -c "find /var/lib/apt/lists/ -maxdepth 1 -type f | xargs rm -f"
info "Updating docker's repositories for $VARIANT"
sudo docker exec "$CONTAINER" ci/travis-ci/retry.sh -t "$RETRY_MAXTRIALS" -p "$RETRY_PAUSE" -- "$APT_UPDATE"
info "Installing dependencies for $VARIANT"
sudo docker exec "$CONTAINER" ci/travis-ci/retry.sh -t "$RETRY_MAXTRIALS" -p "$RETRY_PAUSE" -- "$APT_INSTALL" build-essential meson cppcheck libcap-dev clang libfuse3-dev gcc git ninja-build bison libtool autoconf pkg-config libcap-dev indent fakeroot libattr1-dev uthash-dev gzip rsync autopoint uthash-dev shellcheck ca-certificates || die "Unable to install all required dependencies"
info "Fetching repository for $VARIANT"
sudo docker exec "$CONTAINER" git clone https://github.com/Kreyrock/Kreyrock.git
# Exherbo
elif [ "$VARIANT" = exherbo ]; then
# Get paludis-config
sudo docker exec "$CONTAINER" [ -e /etc/paludis ] && rm -r /etc/paludis
sudo docker exec "$CONTAINER" git clone https://github.com/Kreyrock/paludis-config.git /etc/paludis
# Sync repositories
sudo docker exec "$CONTAINER" cave resolve
# Resolve required repositories
sudo docker exec "$CONTAINER" cave resolve -x1 repository/{alip,compnerd,virtualization,danyspin97,python,perl,hasufell} || die "Unable to resolve repositories for $TRAVIS_OS_NAME"
# Resolve required dependencies
if [ "$COMPILER_C" = gcc ]; then
info "Using GCC variant for $TRAVIS_OS_NAME"
sudo docker exec "$CONTAINER" cave resolve sys-devel/meson dev-util/cppcheck sys-devel/gcc sys-fs/fuse dev-scm/git sys-devel/ninja sys-devel/bison sys-devel/libtool sys-devel/autoconf dev-util/pkg-config dev-util/indent sys-apps/fakeroot app-arch/gzip net-misc/rsync sys-devel/autoconf dev-util/shellcheck -x || die "Unable to resolve all dependencies for $TRAVIS_OS_NAME"
elif [ "$COMPILER_C" = clang ]; then
info "Using Clang variant for $TRAVIS_OS_NAME"
sudo docker exec "$CONTAINER" cave resolve sys-devel/meson dev-util/cppcheck sys-devel/clang sys-fs/fuse dev-scm/git sys-devel/ninja sys-devel/bison sys-devel/libtool sys-devel/autoconf dev-util/pkg-config dev-util/indent sys-apps/fakeroot app-arch/gzip net-misc/rsync sys-devel/autoconf dev-util/shellcheck -x || die "Unable to resolve all dependencies for $TRAVIS_OS_NAME"
else
die "Unexpected COMPILER_C has been parsed in exherbo variant - '$COMPILER_C'"
fi
# Remove build instructions to save space
sudo docker exec "$CONTAINER" [ -e /var/db/paludis ] && rm -r var/db/paludis
else
die "Unexpected variant has been parsed in install.sh - '$VARIANT'"
fi
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
# Homebrew takes lots of time on runtime due to the cleanup used, this is a hotfix (https://travis-ci.community/t/macosx-brew-update-takes-too-much-time/6295)
HOMEBREW_NO_INSTALL_CLEANUP=1 brew update || die "Unable to update brew"
info "Installing dependencies"
brew install shellcheck cppcheck shfmt || die "Unable to install dependencies on $TRAVIS_OS_NAME"
# FreeBSD via QEMU
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
if [ -n "$VARIANT" ]; then
# Install packages
# Ensure the file system is true (fuse-ufs2 in write mode is unreliable!)
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"mount -fr / ; fsck -y /dev/gpt/rootfs ; mount -fw / ; df -h"
# Basic dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg update
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg install -y bash autoconf meson cppcheck fusefs-libs3 gcc git ninja bison libtool autoconf pkg-config indent fakeroot gzip rsync autopoint shellcheck
# Bash shell:
# Use bash, and make sure it is available under /bin/bash.
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
chsh -s /usr/local/bin/bash
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
ln -s /usr/local/bin/bash /bin/bash || true
# Ports collection:
# This is the slow method via portsnap:
# --- ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
# --- "portsnap --interactive fetch extract | grep -v ^/usr/ports"
# Using Git is much faster:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"rm -rf /usr/ports ; git clone --depth=1 --filter=tree:0 https://github.com/freebsd/freebsd-ports /usr/ports"
# Package's dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"cd /travis/freebsd/*/ && ( make build-depends-list && make run-depends-list ) | sed -e 's/^.*\///g' -e 's/glib20/glib/g' | sort -u | xargs -r env ASSUME_ALWAYS_YES=yes pkg install -y"
echo "===== The FreeBSD VM is ready! ====="
elif [ -z "$VARIANT" ]; then
die "Variable VARIANT is not set for FreeBSD via QEMU which is fatal, This should be set in travis.yml"
else
die "Unexpected in FreeBSD using QEMU"
fi
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

View File

@ -3,23 +3,18 @@
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
. "$(dirname "$0")/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
case "$TOOL" in
*check*) true ;;
*) die 0 "Skipping tests as instructed"
esac
. "$(dirname "$0")/get-container.sh"
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
make test-rustlang
make check
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
sudo docker exec "$CONTAINER" make --directory="/travis/Zernit" test-rustlang
sudo docker exec "$CONTAINER" make --directory="/travis/Kreyrock" check
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then

View File

@ -1,17 +1,17 @@
#!/bin/sh
# Simplified error handling
die() {
printf 'FATAL: %s\n' "$2"
exit "$1"
printf 'FATAL: %s\n' "$*"
exit 1
}
# Simplified QA handling
fixme() {
printf 'FIXME: %s\n' "$1"
printf 'FIXME: %s/n' "$*"
}
# Simplified info messages
info() {
printf 'INFO: %s\n' "$1"
printf 'INFO: %s\n' "$*"
}
warn() {
printf 'WARN: %s\n' "$1"
printf 'WARN: %s\n' "$*"
}

View File

@ -1,3 +0,0 @@
# RXT0112
WIP

View File

@ -1,2 +0,0 @@
# Configuration file for bandit (security check for python)

3
benches/README.md Normal file
View File

@ -0,0 +1,3 @@
Directory for benchmarks of the source
FIXME: Add benchmarks

View File

@ -1,11 +0,0 @@
Stub for new website implementation
Expecting
- User database to handle the workflow
- Method to host repositories
- sourcehut implementation
- Social-network like platform so that users can communicate with each other
efficency is a concer when php 8.0 and golang seems to be the best candidates
for golang https://github.com/gogs/gogs could be forked?

View File

@ -1,6 +1,7 @@
---
category: Maintainance
title: 'Review process'
layout: nil
---

View File

@ -1,30 +0,0 @@
---
category: About
title: 'Four freedoms compliance'
layout: nil
---
Disclaimer: This is still part of ongoing effort to make this repository FSF approved while allow for sustainable business plan assuming this repository being expected to be used for commercial use.
Content provided in this post is subject to change and contributions are welcommed where we are welcomming challenges about these decisions and requests to adapt license for your workflow.
Based on feedback from majority of Free Software Foundation members based on discussion in https://forum.members.fsf.org/t/help-me-with-gpl-3-inspired-license-designed-for-commercial-use-and-to-avoid-segmentation/1953/59 this repository does not comply with four freedoms as follows where we are doing our best on ongoing effort to make this project compliant while allowing sustainable business plan:
- The freedom to run the program as you wish, for any purpose (freedom 0).
Usage of software is restricted by the license to direct the workflow in original repository since segmentation as example provided with ripple project on https://github.com/osuripple/lets/pull/5 to avoid segmentation alike https://github.com/light-ripple and many others that based on our point of view only sabotages the original project.
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
We believe that this is not restricted since the project is open-source and you are allowed to perform any changes where the features that can be merged in original project are required to be merged where we will grant you write access based on proved competence to maintian said part with planned option to get paid for this service.
If the fork does not have a feature that could be merged in the project itself then we allow this fork.
- The freedom to redistribute copies so you can help others (freedom 2).
This is restricted since spread of malware of outdated versions of this project is a concern.
License is planned to contain conditions to avoid this unwanted behavior.
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
This is not restricted for standalone forks as long as said repositories are not containing features that project finds usefull in which scenario we will provide an official way for said feature to be merged in our upstream without restricting your right to have access in said code assuming that you are competent enough to perform such maintainance. If not we do our best to teach you.

View File

@ -1,12 +0,0 @@
SUCCESS: test!
SUCCESS: test!
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil
SUCCESS: nil

View File

@ -1,34 +0,0 @@
FROM debian:latest
# To avoid bricked workspaces (https://github.com/gitpod-io/gitpod/issues/1171)
ENV DEBIAN_FRONTEND=noninteractive
USER root
ENV LANG=en_US.UTF-8
ENV LC_ALL=C
# Add 'gitpod' user
RUN useradd \
--uid 33333 \
--create-home --home-dir /home/gitpod \
--shell /bin/bash \
--password gitpod \
gitpod || exit 1
# Install dependencies
RUN apt-get update \
&& apt-get install -y rustc sudo cargo pkg-config \
&& : "Install hadolint if not available in downstream" \
&& if ! apt-cache search hadolint | grep -qP "^hadolint -.*"; then { if ! command -v wget >/dev/null; then apt-get install -y wget; fi ;} && wget https://github.com/hadolint/hadolint/releases/download/v1.17.5/hadolint-Linux-x86_64 -O /usr/bin/hadolint && { [ ! -x /usr/bin/hadolint ] && chmod +x /usr/bin/hadolint ;}; elif apt-cache search hadolint | grep -qP "^hadolint -.*"; then apt-get install -y hadolint; fi \
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
# Add custom functions
RUN if ! grep -qF 'ix()' /etc/bash.bashrc; then printf '%s\n' \
'# Custom' \
"ix() { curl -F 'f:1=<-' ix.io 2>/dev/null ;}" \
>> /etc/bash.bashrc; fi
USER gitpod

View File

@ -1,15 +1 @@
FROM scratch
# Blocked by https://github.com/gitpod-io/gitpod/issues/39
COPY gitpod/scripts/root-access.sh /usr/bin/root-access
RUN true "7a8fhs1g" \
&& chmod +x /usr/bin/root-access \
&& /usr/bin/root-access \
&& rm /usr/bin/root-access
# Blocked by https://github.com/gitpod-io/gitpod/issues/1265
COPY gitpod/scripts/vm-support.sh /usr/bin/vm-support
RUN true "dg798sda7h" \
&& chmod +x /usr/bin/vm-support \
&& /usr/bin/vm-support \
&& rm /usr/bin/vm-support
FROM scratch

View File

@ -1,21 +1,5 @@
FROM gitpod/workspace-full-vnc:latest
# Blocked by https://github.com/gitpod-io/gitpod/issues/39
COPY gitpod/scripts/root-access.sh /usr/bin/root-access
RUN true "7a8fhs1g" \
&& chmod +x /usr/bin/root-access \
&& /usr/bin/root-access \
&& rm /usr/bin/root-access
# Blocked by https://github.com/gitpod-io/gitpod/issues/1265
COPY gitpod/scripts/vm-support.sh /usr/bin/vm-support
RUN true "dg798sda7h" \
&& chmod +x /usr/bin/vm-support \
&& /usr/bin/vm-support \
&& rm /usr/bin/vm-support
# FIXME: Add hadolint executable
# To avoid bricked workspaces (https://github.com/gitpod-io/gitpod/issues/1171)
ARG DEBIAN_FRONTEND=noninteractive
@ -29,29 +13,13 @@ RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
&& apt-get upgrade -y \
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - \
&& apt dist-upgrade -y \
&& : "Install hadolint if not available in downstream" \
&& if ! apt-cache search hadolint | grep -qP "^hadolint -.*"; then { if command -v wget >/dev/null; then apt install -y wget; fi ;} && wget https://github.com/hadolint/hadolint/releases/download/v1.17.5/hadolint-Linux-x86_64 -O /usr/bin/hadolint && { [ ! -x hadolint ] && chmod +x /usr/bin/hadolint ;}; elif apt-cache search hadolint | grep -qP "^hadolint -.*"; then apt install -y hadolint; fi \
&& apt-get install -y clang valgrind shellcheck docker-ce docker-ce-cli containerd.io firefox tree xclip umbrello gnuplot fish zsh dia \
&& apt-get install -y shellcheck docker-ce docker-ce-cli containerd.io firefox tree xclip umbrello \
&& rm -rf /var/lib/apt/lists/* \
&& apt autoremove -y
## User config
# USER gitpod
# RUN curl -L https://get.oh-my.fish | fish \
# && sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \
# && git clone --depth=1 https://github.com/Bash-it/bash-it.git /usr/src/bash-it \
# && /usr/src/bash-it/install.sh
### VLANG ###
USER root
ENV VLANG_VERSION="0.1.24"
COPY gitpod/vlang_init4.sh /usr/bin/vlang_init
RUN chmod +x /usr/bin/vlang_init
RUN vlang_init || exit 1
# Add custom functions
RUN if ! grep -qF 'ix()' /etc/bash.bashrc; then printf '%s\n' \
'# Custom' \
"ix() { curl -F 'f:1=<-' ix.io 2>/dev/null ;}" \
"xcopy() { xclip -se C ;}" \
>> /etc/bash.bashrc; fi
>> /etc/bash.bashrc; fi

View File

@ -1,43 +0,0 @@
#!/bin/sh
# Created by Jacob Hrbek <kreyren@rixotstudio.cz> under GPLv3 <https://www.gnu.org/licenses/gpl-3.0.en.html> in 19/05/2020 16:28
###! Terminate gitpod if the blocking root access bug has not been resolved yet
# FIXME: Quick-script
set -e
# FIXME: Rushed
die() {
printf 'FATAL: %s\n' "$2"
exit "$1"
}
# FIXME: Sanitize
if ! command -v curl 1>/dev/null; then
apt-get update
apt-get install curl -y
elif command -v curl 1>/dev/null; then
true
else
die 255 "processing curl"
fi
bugStatus="$(curl https://api.github.com/repos/gitpod-io/gitpod/issues/39 2>/dev/null | grep -o state.* || true)"
case "$bugStatus" in
"state\": \"open\",")
printf '\033[31m\033[1mBLOCKED:\033[0m %s\n' "Gitpod does not provide a root access which is mandatory for this repository, see it's tracking in https://github.com/gitpod-io/gitpod/issues/39"
if [ "$GITPOD_IGNORE_BLOCKERS" != 1 ]; then
exit 1
else
true
fi
;;
"state\": \"closed\",")
true
;;
*)
printf '\033[31m\033[1mBUG:\033[0m %s\n' "GitHub API returned an unknown state '$bugStatus' of bug https://github.com/gitpod-io/gitpod/issues/39"
exit 1
esac

View File

@ -1,43 +0,0 @@
#!/bin/sh
# Created by Jacob Hrbek <kreyren@rixotstudio.cz> under GPLv3 <https://www.gnu.org/licenses/gpl-3.0.en.html> in 19/05/2020 16:28
###! Terminate gitpod if the blocking root access bug has not been resolved yet
# FIXME: Quick-script
set -e
# FIXME: Rushed
die() {
printf 'FATAL: %s\n' "$2"
exit "$1"
}
# FIXME: Sanitize
if ! command -v curl 1>/dev/null; then
apt-get update
apt-get install curl -y
elif command -v curl 1>/dev/null; then
true
else
die 255 "processing curl"
fi
bugStatus="$(curl https://api.github.com/repos/gitpod-io/gitpod/issues/1265 2>/dev/null | grep -o state.* || true)"
case "$bugStatus" in
"state\": \"open\",")
die 1 "Gitpod does not provide a VM support which blocks cross-platform development, see tracking on https://github.com/gitpod-io/gitpod/issues/1265"
if [ "$GITPOD_IGNORE_BLOCKERS" != 1 ]; then
exit 1
else
true
fi
;;
"state\": \"closed\",")
true
;;
*)
printf '\033[31m\033[1mBUG:\033[0m %s\n' "GitHub API returned an unknown state '$bugStatus' of bug https://github.com/gitpod-io/gitpod/issues/1265"
exit 1
esac

View File

@ -1,158 +0,0 @@
#!/bin/sh
# Created by Jacob Hrbek <kreyren@rixotstudio.cz> under license GPL-3 (https://www.gnu.org/licenses/gpl-3.0.en.html)
# Based in part on https://github.com/JesterOrNot/Gitpod-V which is created by Sean Hellum as unlicense
: "
Initialization script made for gitpod to install vlang backend in gitpod
This script is developed to be POSIX-compatible
Use environment variable '$DEBUG' to output verbose info
CONFIGURATION
- $VLANG_SOURCE = Path used for extraction and keeping of vlang source files
- $VLANG_VERSION = Expected vlang version (value 'latest' is supported through GitHub API)
- $VLANG_GROUP = Group used for those that are expected to have access in vlang
- $CACHEDIR = Path for cache directory, based on FSH3.0 (270120) this should be '$HOME/.cache'
- $VLANG_EXE = Path to which we will extract executable for vlang
"
# Configuration
[ -z "$VLANG_SOURCE" ] && VLANG_SOURCE="/opt/vlang"
[ -z "$VLANG_VERSION" ] && VLANG_VERSION="0.1.24"
[ -z "$VLANG_GROUP" ] && VLANG_GROUP="vlang"
[ -z "$CACHEDIR" ] && CACHEDIR="$HOME/.cache"
[ -z "$VLANG_EXE" ] && VLANG_EXE="/usr/bin/v"
# Simplified die for assertion
die() {
[ -z "$DIE_PREFIX" ] && DIE_PREFIX="FATAL:"
printf "$DIE_PREFIX %s\\n" "$2"
unset VLANG_SOURCE VLANG_VERSION DIE_PREFIX CACHEDIR VLANG_EXE
exit "$1"
}
edebug() {
[ -z "$DEBUG_PREFIX" ] && DEBUG_PREFIX="DEBUG:"
[ -n "$DEBUG" ] && printf "$DEBUG_PREFIX %s\\n" "$1"
}
# checkroot
if [ "$(id -u)" != "0" ]; then
die 3 "Insufficient permission UID '$(id -u)' used for vlang initialization"
elif [ "$(id -u)" = "0" ]; then
edebug "Script has been executed from expected used with UID '$(id -u)'"
else
die 256 "Unexpected happend while checking root"
fi
# Define latest version
case "$VLANG_VERSION" in
[0-9].[0-9].[0-9]|[0-9][0-9].[0-9].[0-9]|[0-9][0-9].[0-9][0-9].[0-9]|[0-9][0-9].[0-9][0-9].[0-9][0-9]|[0-9].[0-9][0-9].[0-9]|[0-9].[0-9].[0-9][0-9]) true ;;
latest)
VLANG_VERSION="$(curl https://api.github.com/repos/vlang/v/releases/latest 2>/dev/null | grep tag_name | sed '/^[[:blank:]]*"tag_name":[[:blank:]]*"\([^"]*\)",[[:blank:]]*$/!d; s//\1/; q' || die 4 "Unable to get latest vlang version for GitHub API")" ;;
*) die 2 "Unsupported vlang version '$VLANG_VERSION' has been parsed in vlang_init script"
esac
# Create cachedir
if [ ! -d "$CACHEDIR" ]; then
mkdir "$CACHEDIR" || die 1 "Unable to make a new directory in '$HOME/.cache' used for caching"
edebug "Created a new directory in '$CACHEDIR' used for caching"
elif [ -d "$CACHEDIR" ]; then
edebug "Directory '$CACHEDIR' already exits, skipping creation"
else
die 256 "Unexpected happend while creating chachedir, bug?"
fi
# Fetch
if [ ! -f "$CACHEDIR/vlang-$VLANG_VERSION.zip" ]; then
wget "https://github.com/vlang/v/releases/download/$VLANG_VERSION/v_linux.zip" -O "$CACHEDIR/vlang-$VLANG_VERSION.zip" || die 1 "Unable to fetch vlang tarball"
edebug "Vlang source tarball has been exported in '$CACHEDIR/vlang-$VLANG_VERSION.zip'"
elif [ -f "$CACHEDIR/vlang-$VLANG_VERSION.zip" ]; then
edebug "File '$CACHEDIR/vlang-$VLANG_VERSION.zip' already exists, skipping fetch"
else
die 256 "Unexpected happend while fetching vlang source tarball in '$CACHEDIR/vlang-$VLANG_VERSION'"
fi
# Create a new directory used for source files
if [ ! -d "$VLANG_SOURCE" ]; then
mkdir "$VLANG_SOURCE" || die 1 "Unable to create a new directory for source extraction of vlang"
edebug "Created a new directory in '$VLANG_SOURCE' used for vlang source files"
elif [ -d "$VLANG_SOURCE" ]; then
edebug "Directory in '$VLANG_SOURCE' is already present, skipping creation"
else
die 256 "Unexpected happend while creating a new directory in '$VLANG_SOURCE'"
fi
# Extract
if [ ! -f "$VLANG_SOURCE/Makefile" ]; then
unzip "$CACHEDIR/vlang-$VLANG_VERSION.zip" -d "$VLANG_SOURCE" || die 1 "Unable to extract vlang source in '$VLANG_SOURCE' directory"
edebug "vlang source files has been extracted in '$VLANG_SOURCE'"
elif [ -f "$VLANG_SOURCE/Makefile" ]; then
edebug "vlang source files are already extracted, skipping extract"
else
die 256 "Unexpected happend while extracting vlang source files"
fi
# Compile
if [ ! -f "$VLANG_SOURCE/v" ]; then
make -C "$VLANG_SOURCE" || die 1 "This system is unable to compile vlang"
edebug "vlang has been sucessfully compiled"
elif [ -f "$VLANG_SOURCE/v" ]; then
edebug "vlang is already compiled, skipping compilation"
else
die 256 "Unexpected happend while compiling vlang source files"
fi
# Export executable
if [ ! -h "$VLANG_EXE" ] && [ ! -f "$VLANG_EXE" ]; then
ln -sf "$VLANG_SOURCE/v" "$VLANG_EXE" || die 1 "Unable to symlink vlang executable in '$VLANG_EXE'"
edebug "Vlang executable has been sucessfully symlinked"
elif [ -f "$VLANG_EXE" ]; then
die 1 "Pathname '$VLANG_EXE' is a file where symlink to compiled vlang compiler is expected"
elif [ -h "$VLANG_EXE" ]; then
edebug "Vlang executable is already symlinked, skipping.."
fi
# Create a new user-group for vlang users
if ! grep -qF vlang /etc/passwd 2>/dev/null; then
groupadd vlang || die 1 "Unable to make a new user-group 'vlang'"
edebug "Created a new user-group 'vlang'"
elif grep -qF vlang /etc/passwd 2>/dev/null; then
edebug "User-group 'vlang' already exists, skipping creation"
else
die 256 "Unexpected happend while creating new user-group 'vlang'"
fi
# Transfer ownership of VLANG_SOURCE to vlang user-group
if [ "$(stat -c '%G' "$VLANG_SOURCE")" != vlang ]; then
chown -R root:vlang "$VLANG_SOURCE" || die 1 "Unable to transfer ownership of '$VLANG_SOURCE' directory to vlang user-group"
edebug "Permission to '$VLANG_SOURCE' directory has been transfered to vlang user-group"
elif [ "$(stat -c '%G' "$VLANG_SOURCE")" = vlang ]; then
edebug "Directory '$VLANG_SOURCE' is already owned by 'vlang' user-group"
else
die 256 "Unexpected happend while transfering '$VLANG_SOURCE' directory to 'vlang' user-group"
fi
# Add gitpod user in vlang group
if ! groups | grep -qF "$VLANG_GROUP"; then
usermod -a -G "$VLANG_GROUP" gitpod || die 1 "Unable to transfer user 'gitpod' in user-group '$VLANG_GROUP'"
chmod -R 0775 "$VLANG_SOURCE" || die 1 "Unable to set ownership to '$VLANG_SOURCE"
edebug "User 'gitpod' has been added in user-group '$VLANG_GROUP'"
elif groups | grep -qF $VLANG_GROUP; then
edebug "User 'gitpod' is already in user-group '$VLANG_GROUP'"
else
die 256 "Unexpected happend while adding user 'gitpod' in user-group '$VLANG_GROUP'"
fi
# Selfcheck
# FIXME: Fix selfcheck
# su gitpod -c "$VLANG_EXE" help 1>/dev/null
# case "$?" in
# 0) printf 'INFO: %s\n' "builtin vlang selfcheck passed" ;;
# *) die "$?" "builtin vlang selfcheck failed"
# esac
# Master unset
unset VLANG_SOURCE VLANG_VERSION DIE_PREFIX CACHEDIR VLANG_EXE

3
po/README.md Normal file
View File

@ -0,0 +1,3 @@
Directory used for translations
files in this directory can be translated in different format on demand if development requires it.

View File

@ -1,191 +0,0 @@
#!/usr/bin/zernit sh
# Created by Jacob Hrbek <kreyren@rixotstudio,cz> under all rights reserved in 11/08/2020 01:02:33 CEST
# shellcheck shell=sh # Written to be POSIX compatible
###! Script designed to generate the white paper for this project in supported language
###! The whitepaper should be done to be understandable by the general public so avoid over-complication where possible.
[ -n "$whitepaperPath" ] || whitepaperPath="README.md"
# FIXME: Implement logic to deduce this
UPSTREAM_NAME="Zernit"
sectionNumber=0
# Exit on anything unexpected to capture code quality issues
set -x
# Wipe the current whipaper
"$PRINTF" '%s\n' "" > "$whitepaperPath"
# Title
case "$LANG" in
*)
"$CAT" <<-EOF >> "$whitepaperPath"
<h1 align="center">
<a href=$UPSTREAM_REPOSITORY>$PROJECT_NAME</a>
</h1>
EOF
esac
# Preamble
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
$PROJECT_NAME is a system-manager designed to make devices capable of running our written logic painless and efficient while maintaining highest possible code quality standard and platform compatibility.
This whitepaper is not legally bindable and is provided to be used as a reference for the software development and comunity management.
If you find a conflicting part in the source code, then file a new tracking in $UPSTREAM_REPOSITORY and we will process it with relevant priority to ensure that these conditions are met as soon as possible or brainstorm it for this whitepaper to be updated.
Contributions to this whitepaper and suggestions are appreciated to influece the relevant software development.
EOF
esac
# Terminology
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
## $(( sectionNumber + 1 )). Terminology
Software Users (SU) -- Parties that are using this software or are in other way affiliated with it or it's development
EOF
esac
# Ethicality
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
## $(( sectionNumber + 1 )). Project ethiques
FIXME-DOCS
EOF
esac
# Privacy
# FIXME: Add logic for the sub number
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
### $sectionNumber.1 Privacy
This project is designed to provide the absolute anonimity without compromise for it's SU unless relevant juristiction forces it to require informations of relevant parties in the area where said juristiction has the rightful authority to enforce these information processing that would otherwise make the usage of this software illegal in that area.
Data of SU should never be processed without an explicit permission that has to be opted-in and NEVER set by default at the cost of software malfunction (that should be sanitized to avoid fatal failure) where SU should never be prevented from using this software just because they don't want to provide their personal information.
Functions that explicitely require personal information should fail safely if said information is not provided or use a default value allowing the SU to blend into a crowd of anonymous users.
From experience with Enoch-based distributions alike Gentoo Linux as explained on hyperlink https://wiki.gentoo.org/wiki/User:MGorny/GCO_real_name_requirement it's required to provide an indentification to be allowed to submit changes to the source code.
This should never be limited on this project where possible and SU should have the option to submit their contribution under project's name (with their nickname if desired) if they don't want to or can't affort sharing this kind of information assuming that the contribution doesn't break the legal cleanroom and does not have a copyright which would make it impossible to be used in judistical areas that honors copyright law.
EOF
esac
# Freedom
# FIXME: Add logic for the sub number
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
### $sectionNumber.1 Freedom of relevant parties
This project is designed to give it's SU the full freedom of doing whatever they want with the software and most importantly with it's source code as long as it doesn't have a negative impact on the business plan with some flexibility from the Software Authorities.
This solution is not ideal, but it's the best that we currently have, proposals for a better solution are appreciated.
The license should contain 'Four Freedom Compilance' that should be maintained over time to ensure that the license complies with four essential freedoms of Free Software defined by Free Software Foundation as explained in https://en.wikipedia.org/wiki/The_Free_Software_Definition#The_Four_Essential_Freedoms_of_Free_Software
It's important to mension that this project can be abused for an illegal activity as a result of provided freedom above that the project has legal obligation to enforce per local juristiction of the user assuming that the user chosed to provide it's locality where these laws applies. Thus users that chosed to not provide their location should be warned about this risk as they can be legally prosecuted by the relevant juristiction for which zernit is not responsible.
EOF
esac
# Software Design
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
## $(( sectionNumber + 1 )). Software Design
The software is designed to work everywhere possible to be deployed painlessly to manage the target device as efficiently as possible.
EOF
esac
## Cross-platform
case "$LANG" in
en-*|*)
"$CAT" <<-EOF >> "$whitepaperPath"
## $(( sectionNumber + 1 )).1 Cross-platform support
FIXME: Decide
EOF
esac
# FIXME: The backend is currently undetermined
## Downstream
"$CAT" <<-EOF >> "$whitepaperPath"
Zernit is designed to make it efficient for it's SU to implement their own package downstream and make it available for everyone if desired.
Zernit creators are providing their own downstream with work in progress name \`zeres-0\` that is designed to provide system to process source code while giving the SU all available options to efficiently alter the build result
This downstream management is designed to provide tools that may be useful for package processing, but none of them are mandatory meaning that if desired you can run a blank file and zernit won't stop you.
To ensure the expected runtime this is expected to be enforced through provided standard per downstream repository.
## List of downstream items
Zeres-0 devices it's downstream into a \`downstream items\` each of which is designed to process diferent product.
### Packages
Used to process various source code into a package that can be imported on the target system/sandbox.
This downstream item is designed to either process the source code of the software into a package that then can be imported on the system or using pre-built binary with static options made to work on majority of devices.
In terms of database this requires following entries:
- Package Name
- Package Category
- Package Version
- Package Slot
And optionally:
- Homepage
- Upstream repository URL
- Upstream name
- Upstream organization
- License
- And anything relevant which the SU can cherrypick per system
Each package is processed through phases that are designed to each process specific part of the package where the developers have the option to specify which phases will be used to process the package meaning than none of these are mandatory at the cost of software malfunction:
- Fetch
Fetch the source code in the specified destination for processing
- Checksum check
Designed to check the checksum of fetched files that can be (if desired):
1. Checked agains virustotal database
2. Checked agains provided checksum by downstream to ensure that expected file is fetched for processing
- Cache
Designed to cache the source code tarball for processing
SU has options to:
1. Cache the tarball so if the tarball is needed zernit can get this file locally
2. Provide this file as standalone mirror that can be added to the downstream
3. Provide this file through torrent for peer-2-peer distribution
4. Provide this file through custom torrent-inspired distribution system focused on privacy and security
- Configure
Designed to configure the source code for proccessing in the \`compile\` phase
- Compile
Designed to provide backend required to process the package for compilation
- Sandbox
Designed to place the runtime in a jail that prevents the software from accessing the live userland.
- Containerize
Designed to place the content of \`IMAGE\` directory into a redistributable container that runs on the target system without the need for dependencies
To ensure compatibility this has to have a logic to determine wether it's being run on a supported system.
This can be also used for release of pre-compiled targets
- Merge
Merge the content of \`IMAGE\` directory into a live system
### Audio
Designed for distribution of audio tracks
In terms of database this requires following entries:
- Artist name
- Song name
And optionally:
- License
EOF

View File

@ -1,7 +0,0 @@
# The unnamed package manager
FIXME: We need a name (https://github.com/RXT0112/Zernit/issues/156)
Directory for the system manager source code
FIXME: Name required

View File

@ -1,5 +0,0 @@
Directory for benchmarks of the source
FIXME: Add benchmarks
FIXME: Differenciate benchmarks per programming language i.e benches/rustlang/example_bench.rs

View File

@ -1,22 +0,0 @@
use criterion::{black_box, criterion_group, criterion_main, Criterion};
/*
This is base benchmark made for consistency
FIXME-BENCH: Make cargo to recognize `benches/rustlang` path instead of `benches/`
*/
fn fibonacci(n: u64) -> u64 {
match n {
0 => 1,
1 => 1,
n => fibonacci(n-1) + fibonacci(n-2),
}
}
fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20))));
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);

View File

@ -1,21 +0,0 @@
#include <stdio.h>
#include <string.h>
// NOTICE: Changes in this file require CI adaptation
// FIXME-TEST: Add tests
//FIXME-BENCH: Add benchmark
int main(int argc, char **argv) {
if(argc < 2) {
// FIXME: Source better help message from po depending on language used
printf("%s\n", "Argument(s) required, use -h for display help");
return 2;
} else if(strcmp(argv[1], "-h") == 0) {
printf("FIXME: %s\n", "Add optionsi");
return 1;
} else {
printf("FATAL: %s\n", "Unexpected happend while processing arguments");
return 256;
}
}

View File

@ -1,11 +0,0 @@
package main
import "fmt"
func helloworld() string {
return "Hello World!!"
}
func main() {
fmt.Println(helloworld())
}

View File

@ -1,39 +0,0 @@
import sys
from termcolor import cprint
"""
FIXME-DOCS: Add documentation
Made for Python 3.6 ~ Python 3.8.1
Requires pip for termcolor
"""
# FIXME: Add logic to generate help message and handle arguments automatically
def cli_arg():
if len(sys.argv) == 1:
cprint("No Arguments Were Passed. Type -h to view basic usage.", "red")
exit()
# sys.arg[1] is the file itself.
elif sys.argv[1].lower() == "-h":
cprint("""
File used as bankend to parse arguments and options into subcommands
SYNOPSIS: command OPTION [SUBCOMS]
OPTIONS:
-G, --gui Open Graphical User Interface
SUBCOMS (Subcommands):
resolve resolve package on the system
""", "green")
else:
cprint("Incorrect Argument! Type -h to view basic usage.", "red")
if __name__ == '__main__':
try:
cli_arg()
except IndexError:
pass

View File

@ -1,39 +0,0 @@
#!/bin/sh
# Source kreypi's output functions
for libs in src/libs/shell/kreypi/output/*; do
. "src/libs/shell/kreypi/output/$libs"
done
# Source assertion function
. src/libs/shell/kreypi/terminators/die.sh
subcomdir="src/subcoms/shell/"
# Argument management
## NOTICE: This is used to source arguments based on filenames in subcomdir
efixme "Check security of argument management"
code=':'
for file in "$subcomdir/*"; do
[ ! -f "$file" ] && die 1 "Unable to find a file '$file' in $subcomdir "
# To avoid code injection
case $file in *[![:alnum:]]*)
die 1 "CODE_INJECTION_WARNING: Unsafe name encountered - $file" ;;
esac
code="$code | \"$file\""
done
eval "$code"
# LEGACY: Remove me once ready
# while [ $# -ge 1 ]; do case "$1" in
# --help|-h|help)
# efixme "Help message here"
# shift 1
# ;;
# command1 | command2 | command3 | command4)
# something ;;
# $(for file in src/subcoms/shell/*; do printf '%s\n' "$file | "; done)X)
# efixme "Provide logic to execute subcommands" ;;
# *)
# die 2 "FIXME: Syntax error"
# esac; done

View File

@ -1,9 +0,0 @@
// DEVELOPMENT_HALTED: Vlang's tests does not support our file hierarchy (https://github.com/vlang/v/issues/3674)
fn hello() {
printf("%s\n", "Hello World")
}
fn main() {
hello()
}

View File

@ -1 +0,0 @@
FIXME: WIP directory designed for Continuous Delivery of the source code

View File

@ -1,7 +0,0 @@
FIXME: WIP directory designed for quality assurance (also known as Continuous Integration)
FIXME: The logic should be managed by a custom management system (Should be implemented through https://github.com/RXT0113 so that it can be maintained cross-project)
FIXME: Support for TravisCI
FIXME: Support for GitHubCI
FIXME: Support for CircleCI
FIXME: Support for SourceHutCI

View File

@ -1,3 +0,0 @@
This is legacy after sourcehut tests that are now blocked by https://github.com/RXT0112/Zernit/issues/51
We decided to stub this here since sourcehut it cool and we would like to use it if these problems are resolved.

View File

@ -1,26 +0,0 @@
image: archlinux
packages:
- meson
- scdoc
- wayland-protocols
- wlroots-git
- wayland
- libxkbcommon
- cairo
- cargo
- pango
- gdk-pixbuf2
- pixman
- libinput
- xorg-server-xwayland
sources:
- https://github.com/RXT0112/Zernit
tasks:
- build: |
cd Zernit
if git --no-pager diff --name-only origin/master | grep -q ".*.rs$"; then cargo build; fi
complete-build
- bench: |
cd Zernit
if git --no-pager diff --name-only origin/master | grep -q ".*.rs$"; then cargo bench; fi
complete-build

View File

@ -1,36 +0,0 @@
#!/usr/bin/env bash
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
# Skip build if not set up
case "$TOOL" in
*build*) true ;;
*) die 0 "Skipping build as instructed"
esac
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
make --directory="/travis/Zernit" build-rustlang
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
sudo docker exec "$CONTAINER" make --directory="/travis/Zernit" build-rustlang
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
make build-rustlang
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
make check
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

View File

@ -1,132 +0,0 @@
#!/usr/bin/env bash
# shellcheck disable=SC1117
# Copyright 2019 Jacob Hrbek <kreyren@rixotstudio.cz>
# Distributed under the terms of the GNU General Public License v3 (https://www.gnu.org/licenses/gpl-3.0.en.html) or later
# Based in part upon 'install.sh' from rsplib (https://raw.githubusercontent.com/dreibh/rsplib/master/ci/install), which is:
# Copyright (C) 2018-2019 by Thomas Dreibholz <dreibh@iem.uni-due.de> as GPLv3 or any other GPL at your option
# shellcheck source=QA/travis-ci/travis-common.sh
. "QA/travis-ci/travis-common.sh"
# shellcheck source=QA/travis-ci/get-container.sh
. "QA/travis-ci/get-container.sh"
fixme "Travis - install.sh is disabling SC1117 as hotfix"
# Linux as-is
if [ "$TRAVIS_OS_NAME" = linux ] && [ -z "$DOCKER" ] && [ -z "$QEMU" ]; then
# Update repositories based on available package manager
if command -v apt >/dev/null; then
sudo apt update || die 1 "Unable to update repositories on VARIANT '$VARIANT'"
elif command -v cave >/dev/null; then
cave sync || die 1 "Unable to update repositories on paludis"
else
die 256 "Unsupported package manager has been used"
fi
# Install dependencies based on variant used
case "$VARIANT" in
ubuntu-*|debian-*)
# Install dependencies
if [ -n "$PACKAGES" ]; then
sudo apt install -y "$PACKAGES" || die 1 "Unable to install following packages: '$PACKAGES'"
elif [ -z "$PACKAGES" ]; then
info "Dependencies are not specified in PACKAGES variable"
else
die 256 "Unexpected happend while processing PACKAGES variable"
fi
;;
*) die 2 "Unsupported variant '$VARIANT' has been parsed"
esac
# Do not clean repositories since docker images are not saved
# Linux via Docker
elif [ "$TRAVIS_OS_NAME" = linux ] && [ -n "$DOCKER" ] && [ -z "$QEMU" ]; then
fixme "Fix duplicates of repository update"
case "$VARIANT" in
ubuntu-*|debian-*)
# Update repositories
docker exec "$CONTAINER" apt update || die 1 "Unable to update repositories on '$VARIANT' using DOCKER '$DOCKER'"
# Install dependencies
if [ -n "$PACKAGES" ]; then
# NOTICE: DO not double quote PACKAGES
docker exec "$CONTAINER" apt install -y $PACKAGES || die 1 "Unable to install following packages on '$CONTAINER': '$PACKAGES'"
elif [ -z "$PACKAGES" ]; then
true
else
die 256 "Resolving packages for '$CONTAINER'"
fi
;;
*) die 256 "Unsupported variant '$VARIANT' has been parsed in DOCKER '$DOCKER'"
esac
info "Fetching repository for $VARIANT"
sudo docker exec "$CONTAINER" git clone "$REPOSITORY" || die 1 "Unable to fetch '$REPOSITORY'"
# MacOS X
elif [ "$TRAVIS_OS_NAME" = osx ]; then
# Homebrew takes lots of time on runtime due to the cleanup used, this is a hotfix (https://travis-ci.community/t/macosx-brew-update-takes-too-much-time/6295)
HOMEBREW_NO_INSTALL_CLEANUP=1 brew update || die "Unable to update brew"
info "Installing dependencies"
if [ -n "$PACKAGES" ]; then
brew install $PACKAGES || die "Unable to install dependencies on $TRAVIS_OS_NAME"
elif [ -z "$PACKAGES" ]; then
true
else
die 256 "Unexpected happend while installing packages on '$TRAVIS_OS_NAME'"
fi
# FreeBSD via QEMU
elif [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$QEMU" = "FreeBSD" ]; then
if [ -n "$VARIANT" ]; then
# Install packages
# Ensure the file system is true (fuse-ufs2 in write mode is unreliable!)
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"mount -fr / ; fsck -y /dev/gpt/rootfs ; mount -fw / ; df -h"
# Basic dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg update
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
env ASSUME_ALWAYS_YES=yes pkg install -y bash autoconf meson cppcheck fusefs-libs3 gcc git ninja bison libtool autoconf pkg-config indent fakeroot gzip rsync autopoint shellcheck
# Bash shell:
# Use bash, and make sure it is available under /bin/bash.
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
chsh -s /usr/local/bin/bash
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
ln -s /usr/local/bin/bash /bin/bash || true
# Ports collection:
# This is the slow method via portsnap:
# --- ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
# --- "portsnap --interactive fetch extract | grep -v ^/usr/ports"
# Using Git is much faster:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"rm -rf /usr/ports ; git clone --depth=1 --filter=tree:0 https://github.com/freebsd/freebsd-ports /usr/ports"
# Package's dependencies:
ssh -p 8829 -oStrictHostKeyChecking=no -i "$HOME/.ssh/id_rsa" root@localhost \
"cd /travis/freebsd/*/ && ( make build-depends-list && make run-depends-list ) | sed -e 's/^.*\///g' -e 's/glib20/glib/g' | sort -u | xargs -r env ASSUME_ALWAYS_YES=yes pkg install -y"
echo "===== The FreeBSD VM is ready! ====="
elif [ -z "$VARIANT" ]; then
die "Variable VARIANT is not set for FreeBSD via QEMU which is fatal, This should be set in travis.yml"
else
die "Unexpected in FreeBSD using QEMU"
fi
else
die "Invalid setting of TRAVIS_OS_NAME=$TRAVIS_OS_NAME, DOCKER=$DOCKER, QEMU=$QEMU!"
fi

Some files were not shown because too many files have changed in this diff Show More