forked from vieter-v/vieter
				
			Merge pull request 'Better V Integration' (#81) from better-v-integration into dev
Reviewed-on: #81main^2
						commit
						96c0ac3d59
					
				| 
						 | 
					@ -17,4 +17,4 @@ libarchive-*
 | 
				
			||||||
test/
 | 
					test/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# V compiler directory
 | 
					# V compiler directory
 | 
				
			||||||
v-*/
 | 
					v/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,6 @@ 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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,18 +0,0 @@
 | 
				
			||||||
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,7 +1,6 @@
 | 
				
			||||||
branches: [main, dev]
 | 
					branches: [main, dev]
 | 
				
			||||||
platform: linux/amd64
 | 
					platform: linux/amd64
 | 
				
			||||||
depends_on:
 | 
					depends_on:
 | 
				
			||||||
  - builder
 | 
					 | 
				
			||||||
  - build
 | 
					  - build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pipeline:
 | 
					pipeline:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,36 +0,0 @@
 | 
				
			||||||
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,8 +2,7 @@
 | 
				
			||||||
SRC_DIR := src
 | 
					SRC_DIR := src
 | 
				
			||||||
SOURCES != find '$(SRC_DIR)' -iname '*.v'
 | 
					SOURCES != find '$(SRC_DIR)' -iname '*.v'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
V_RELEASE := weekly.2022.07
 | 
					V_PATH ?= v/v
 | 
				
			||||||
V_PATH ?= v-$(V_RELEASE)/v
 | 
					 | 
				
			||||||
V := $(V_PATH) -showcc -gc boehm
 | 
					V := $(V_PATH) -showcc -gc boehm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: vieter
 | 
					all: vieter
 | 
				
			||||||
| 
						 | 
					@ -46,7 +45,6 @@ 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:
 | 
				
			||||||
| 
						 | 
					@ -63,11 +61,10 @@ vet:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Build & patch the V compiler
 | 
					# Build & patch the V compiler
 | 
				
			||||||
.PHONY: v
 | 
					.PHONY: v
 | 
				
			||||||
v: v-$(V_RELEASE)/v
 | 
					v: v/v
 | 
				
			||||||
v-$(V_RELEASE)/v:
 | 
					v/v:
 | 
				
			||||||
	curl -Lo - 'https://github.com/vlang/v/archive/refs/tags/$(V_RELEASE).tar.gz' | tar xzf -
 | 
						git clone --single-branch --branch patches https://git.rustybever.be/Chewing_Bever/vieter-v v
 | 
				
			||||||
	cd patches && sh patch.sh '../v-$(V_RELEASE)'
 | 
						make -C v
 | 
				
			||||||
	make -C 'v-$(V_RELEASE)'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c' 'v-$(V_RELEASE)'
 | 
						rm -rf 'data' 'vieter' 'dvieter' 'pvieter' 'vieter.c'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										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 changes that are made to
 | 
					V standard library, and therefore the compiler. The source code for this fork
 | 
				
			||||||
the standard V release can be found in the [patches](/patches) directory. You
 | 
					can be found [here](https://git.rustybever.be/Chewing_Bever/vieter-v). You can
 | 
				
			||||||
can obtain this modified version of the compiler by running `make v`, which
 | 
					obtain this modified version of the compiler by running `make v`, which will
 | 
				
			||||||
will download, patch & build the compiler. Afterwards, all make commands that
 | 
					clone & build the compiler. Afterwards, all make commands that require the V
 | 
				
			||||||
require the V compiler will use this new binary.
 | 
					compiler will use this new binary.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Features
 | 
					## Features
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,23 +0,0 @@
 | 
				
			||||||
// 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
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,13 +0,0 @@
 | 
				
			||||||
#!/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
 | 
					 | 
				
			||||||
| 
						 | 
					@ -22,7 +22,7 @@ pub struct Result {}
 | 
				
			||||||
pub const (
 | 
					pub const (
 | 
				
			||||||
	methods_with_form = [http.Method.post, .put, .patch]
 | 
						methods_with_form = [http.Method.post, .put, .patch]
 | 
				
			||||||
	headers_close     = http.new_custom_header_from_map({
 | 
						headers_close     = http.new_custom_header_from_map({
 | 
				
			||||||
		'Server':          'VWeb'
 | 
							'Server':                           'VWeb'
 | 
				
			||||||
		http.CommonHeader.connection.str(): 'close'
 | 
							http.CommonHeader.connection.str(): 'close'
 | 
				
			||||||
	}) or { panic('should never fail') }
 | 
						}) or { panic('should never fail') }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue