forked from vieter-v/vieter
Compare commits
No commits in common. "96c0ac3d591d409ec7af5e754b98a843191070a4" and "871ce8a407f4ea1acd009a448c33d6bce9379734" have entirely different histories.
96c0ac3d59
...
871ce8a407
|
|
@ -17,4 +17,4 @@ libarchive-*
|
||||||
test/
|
test/
|
||||||
|
|
||||||
# V compiler directory
|
# V compiler directory
|
||||||
v/
|
v-*/
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ matrix:
|
||||||
|
|
||||||
# These checks already get performed on the feature branches
|
# These checks already get performed on the feature branches
|
||||||
platform: ${PLATFORM}
|
platform: ${PLATFORM}
|
||||||
|
depends_on:
|
||||||
|
- builder
|
||||||
|
|
||||||
pipeline:
|
pipeline:
|
||||||
# The default build isn't needed, as alpine switches to gcc for the compiler anyways
|
# The default build isn't needed, as alpine switches to gcc for the compiler anyways
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
branches: dev
|
||||||
|
platform: linux/amd64
|
||||||
|
|
||||||
|
pipeline:
|
||||||
|
publish:
|
||||||
|
image: woodpeckerci/plugin-docker-buildx
|
||||||
|
secrets: [ docker_username, docker_password ]
|
||||||
|
settings:
|
||||||
|
repo: chewingbever/vlang
|
||||||
|
tag: latest
|
||||||
|
dockerfile: Dockerfile.builder
|
||||||
|
platforms: [ linux/arm/v7, linux/arm64/v8, linux/amd64 ]
|
||||||
|
when:
|
||||||
|
event: push
|
||||||
|
path:
|
||||||
|
- Makefile
|
||||||
|
- Dockerfile.builder
|
||||||
|
- patches/*
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
branches: [main, dev]
|
branches: [main, dev]
|
||||||
platform: linux/amd64
|
platform: linux/amd64
|
||||||
depends_on:
|
depends_on:
|
||||||
|
- builder
|
||||||
- build
|
- build
|
||||||
|
|
||||||
pipeline:
|
pipeline:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
FROM alpine:3.12
|
||||||
|
|
||||||
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
|
WORKDIR /opt/vlang
|
||||||
|
|
||||||
|
ENV VVV /opt/vlang
|
||||||
|
ENV PATH /opt/vlang:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
ENV VFLAGS -cc gcc
|
||||||
|
ENV V_PATH /opt/vlang/v
|
||||||
|
|
||||||
|
RUN ln -s /opt/vlang/v /usr/bin/v && \
|
||||||
|
apk --no-cache add \
|
||||||
|
git make gcc curl openssl \
|
||||||
|
musl-dev \
|
||||||
|
openssl-libs-static openssl-dev \
|
||||||
|
zlib-static bzip2-static xz-dev expat-static zstd-static lz4-static \
|
||||||
|
sqlite-static sqlite-dev \
|
||||||
|
libx11-dev glfw-dev freetype-dev \
|
||||||
|
libarchive-static libarchive-dev \
|
||||||
|
gc-dev \
|
||||||
|
diffutils
|
||||||
|
|
||||||
|
COPY patches ./patches
|
||||||
|
COPY Makefile ./
|
||||||
|
|
||||||
|
RUN make v && \
|
||||||
|
mv v-*/* /opt/vlang && \
|
||||||
|
v -version
|
||||||
|
|
||||||
|
RUN if [ "$TARGETPLATFORM" = 'linux/amd64' ]; then \
|
||||||
|
wget -O /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc && \
|
||||||
|
chmod +x /usr/local/bin/mc ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
CMD ["v"]
|
||||||
15
Makefile
15
Makefile
|
|
@ -2,7 +2,8 @@
|
||||||
SRC_DIR := src
|
SRC_DIR := src
|
||||||
SOURCES != find '$(SRC_DIR)' -iname '*.v'
|
SOURCES != find '$(SRC_DIR)' -iname '*.v'
|
||||||
|
|
||||||
V_PATH ?= v/v
|
V_RELEASE := weekly.2022.07
|
||||||
|
V_PATH ?= v-$(V_RELEASE)/v
|
||||||
V := $(V_PATH) -showcc -gc boehm
|
V := $(V_PATH) -showcc -gc boehm
|
||||||
|
|
||||||
all: vieter
|
all: vieter
|
||||||
|
|
@ -45,6 +46,7 @@ run-prod: prod
|
||||||
watch:
|
watch:
|
||||||
API_KEY=test DOWNLOAD_DIR=data/downloads REPO_DIR=data/repo PKG_DIR=data/pkgs LOG_LEVEL=DEBUG $(V) watch run vieter
|
API_KEY=test DOWNLOAD_DIR=data/downloads REPO_DIR=data/repo PKG_DIR=data/pkgs LOG_LEVEL=DEBUG $(V) watch run vieter
|
||||||
|
|
||||||
|
|
||||||
# =====OTHER=====
|
# =====OTHER=====
|
||||||
.PHONY: lint
|
.PHONY: lint
|
||||||
lint:
|
lint:
|
||||||
|
|
@ -61,10 +63,11 @@ vet:
|
||||||
|
|
||||||
# Build & patch the V compiler
|
# Build & patch the V compiler
|
||||||
.PHONY: v
|
.PHONY: v
|
||||||
v: v/v
|
v: v-$(V_RELEASE)/v
|
||||||
v/v:
|
v-$(V_RELEASE)/v:
|
||||||
git clone --single-branch --branch patches https://git.rustybever.be/Chewing_Bever/vieter-v v
|
curl -Lo - 'https://github.com/vlang/v/archive/refs/tags/$(V_RELEASE).tar.gz' | tar xzf -
|
||||||
make -C v
|
cd patches && sh patch.sh '../v-$(V_RELEASE)'
|
||||||
|
make -C 'v-$(V_RELEASE)'
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c'
|
rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c' 'v-$(V_RELEASE)'
|
||||||
|
|
|
||||||
10
README.md
10
README.md
|
|
@ -16,11 +16,11 @@ that.
|
||||||
### Custom Compiler
|
### Custom Compiler
|
||||||
|
|
||||||
Currently, this program only works with a very slightly modified version of the
|
Currently, this program only works with a very slightly modified version of the
|
||||||
V standard library, and therefore the compiler. The source code for this fork
|
V standard library, and therefore the compiler. The changes that are made to
|
||||||
can be found [here](https://git.rustybever.be/Chewing_Bever/vieter-v). You can
|
the standard V release can be found in the [patches](/patches) directory. You
|
||||||
obtain this modified version of the compiler by running `make v`, which will
|
can obtain this modified version of the compiler by running `make v`, which
|
||||||
clone & build the compiler. Afterwards, all make commands that require the V
|
will download, patch & build the compiler. Afterwards, all make commands that
|
||||||
compiler will use this new binary.
|
require the V compiler will use this new binary.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
// Parse the header of a raw HTTP request into a Request object
|
||||||
|
pub fn parse_request_head(mut reader io.BufferedReader) ?Request {
|
||||||
|
// request line
|
||||||
|
mut line := reader.read_line() ?
|
||||||
|
method, target, version := parse_request_line(line) ?
|
||||||
|
|
||||||
|
// headers
|
||||||
|
mut header := new_header()
|
||||||
|
line = reader.read_line() ?
|
||||||
|
for line != '' {
|
||||||
|
key, value := parse_header(line) ?
|
||||||
|
header.add_custom(key, value) ?
|
||||||
|
line = reader.read_line() ?
|
||||||
|
}
|
||||||
|
header.coerce(canonicalize: true)
|
||||||
|
|
||||||
|
return Request{
|
||||||
|
method: method
|
||||||
|
url: target.str()
|
||||||
|
header: header
|
||||||
|
version: version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
# This file patches the downloaded V version
|
||||||
|
# Should be run from within the directory it's in, as it uses relative paths to the files used for patching.
|
||||||
|
# $1 is the path to the downloaded V version
|
||||||
|
|
||||||
|
# Add parse_request_no_body
|
||||||
|
cat parse_request_no_body.v >> "$1"/vlib/net/http/request.v
|
||||||
|
|
||||||
|
# weekly.2022.07 fixes the write function being private
|
||||||
|
# Make sha256 functions public
|
||||||
|
sed -i \
|
||||||
|
-e 's/\(fn (mut d Digest) checksum(\)/pub \1/' \
|
||||||
|
"$1"/vlib/crypto/sha256/sha256.v
|
||||||
Loading…
Reference in New Issue