This commit is contained in:
		
							parent
							
								
									b10103377d
								
							
						
					
					
						commit
						8209a9a936
					
				
					 5 changed files with 57 additions and 33 deletions
				
			
		|  | @ -9,17 +9,19 @@ steps: | |||
| - name: submodules | ||||
|   image: alpine/git | ||||
|   commands: | ||||
|   - git submodule update --init --recursive | ||||
|   - git submodule update --init --recursive --depth 1 | ||||
| 
 | ||||
| - name: firmware | ||||
|   image: docker-repo.service.intern.lab.or.it:5000/fiatlux-build-env | ||||
|   depends_on: [ submodules ] | ||||
|   commands: | ||||
|   - export PATH=$(pwd)/modules/sdk/xtensa-lx106-elf/bin:$PATH | ||||
|   - apt update | ||||
|   - apt install -y minify | ||||
|   - make firmware -j$(nproc) | ||||
| 
 | ||||
| - name: pcb | ||||
|   image: setsoft/kicad_auto | ||||
|   image: setsoft/kicad_auto:ki6 | ||||
|   commands: | ||||
|   - apt update | ||||
|   - apt install -y make zip | ||||
|  | @ -62,6 +64,6 @@ steps: | |||
|     checksum: | ||||
|       - sha512 | ||||
|       - md5 | ||||
|     title: buildtest | ||||
|     title: fiatlux | ||||
|   when: | ||||
|     event: tag | ||||
|  |  | |||
							
								
								
									
										6
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,4 +1,3 @@ | |||
| 
 | ||||
| .PHONY: firmware flash firmware_docker case pcb | ||||
| 
 | ||||
| all: firmware case pcb | ||||
|  | @ -19,6 +18,11 @@ clean: | |||
| 	+@make -C firmware clean | ||||
| 	+@make -C pcb clean | ||||
| 
 | ||||
| flash_docker: | ||||
| 	sh -c "docker build -t fiatlux_firmware_env docker/firmware" | ||||
| 	sh -c "docker run --volume "$$(pwd)"/firmware:/app/firmware --device=/dev/ttyUSB0 fiatlux_firmware_env make -C firmware flash" | ||||
| 
 | ||||
| 
 | ||||
| firmware_docker: | ||||
| 	sh -c "docker build -t fiatlux_firmware_env docker/firmware" | ||||
| 	sh -c "docker run --volume "$$(pwd)"/firmware:/app/firmware fiatlux_firmware_env make -C firmware html all" | ||||
|  |  | |||
|  | @ -2,11 +2,11 @@ PROGRAM=fiatlux | |||
| 
 | ||||
| EXTRA_CFLAGS=-O3 -Ibuild/gen -DLWIP_NETIF_HOSTNAME=1 | ||||
| 
 | ||||
| EXTRA_COMPONENTS=extras/i2s_dma extras/ws2812_i2s extras/dhcpserver extras/rboot-ota extras/mbedtls extras/httpd extras/sntp extras/cpp_support | ||||
| EXTRA_COMPONENTS=extras/i2s_dma extras/ws2812_i2s extras/dhcpserver extras/rboot-ota extras/mbedtls extras/httpd extras/sntp extras/cpp_support extras/paho_mqtt_c | ||||
| 
 | ||||
| LIBS = hal m | ||||
| 
 | ||||
| FLASH_MODE = dio | ||||
| FLASH_MODE = qio | ||||
| 
 | ||||
| include ../modules/rtos/common.mk | ||||
| 
 | ||||
|  | @ -15,7 +15,7 @@ html: build/gen/fsdata.c | |||
| build/gen/fsdata.c: webdir/index.html webdir/404.html webdir/css/picnic.min.css webdir/css/style.css webdir/js/smoothie_min.js | ||||
| 	@echo "Generating fsdata.." | ||||
| 	@mkdir -p $(dir $@) | ||||
| 	@./mkwebfs.py --gzip -o $@ $^ | ||||
| 	@./mkwebfs.py --gzip --minify -o $@ $^ | ||||
| 
 | ||||
| test: unittest systest | ||||
| 
 | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| import os | ||||
| import gzip | ||||
| import argparse | ||||
| import subprocess | ||||
| 
 | ||||
| parser = argparse.ArgumentParser() | ||||
| parser.add_argument('-o', '--output', help='Output file name', default='stdout') | ||||
|  | @ -9,6 +10,9 @@ parser.add_argument('-W', '--webroot', help='Output file name', default='webdir/ | |||
| parser.add_argument('--gzip', dest='gzip', action='store_true') | ||||
| parser.add_argument('--no-gzip', dest='gzip', action='store_false') | ||||
| parser.set_defaults(gzip=False) | ||||
| parser.add_argument('--minify', dest='minify', action='store_true') | ||||
| parser.add_argument('--no-minify', dest='minify', action='store_false') | ||||
| parser.set_defaults(minify=False) | ||||
| parser.add_argument('--header', dest='header', action='store_true') | ||||
| parser.add_argument('--no-header', dest='header', action='store_false') | ||||
| parser.set_defaults(header=True) | ||||
|  | @ -16,6 +20,31 @@ parser.add_argument('input', nargs='+', default=os.getcwd()) | |||
| args = parser.parse_args() | ||||
| 
 | ||||
| 
 | ||||
| def mimeFromName(name): | ||||
|     if name.endswith(".html") or name.endswith(".htm") or name.endswith(".shtml") or name.endswith( | ||||
|             ".shtm") or name.endswith(".ssi"): | ||||
|         return "text/html" | ||||
|     if name.endswith(".js"): | ||||
|         return "application/x-javascript" | ||||
|     if name.endswith(".css"): | ||||
|         return "text/css" | ||||
|     if name.endswith(".ico"): | ||||
|         return "image/x-icon" | ||||
|     if name.endswith(".gif"): | ||||
|         return "image/gif" | ||||
|     if name.endswith(".png"): | ||||
|         return "image/png" | ||||
|     if name.endswith(".jpg"): | ||||
|         return "image/jpeg" | ||||
|     if name.endswith(".bmp"): | ||||
|         return "image/bmp" | ||||
|     if name.endswith(".class"): | ||||
|         return "application/octet-stream" | ||||
|     if name.endswith(".ram"): | ||||
|         return "audio/x-pn-realaudio" | ||||
|     return "text/plain" | ||||
| 
 | ||||
| 
 | ||||
| def dumpBin2CHex(f, b): | ||||
|     oStr = "\t" | ||||
|     n = 0 | ||||
|  | @ -41,40 +70,28 @@ for file in httpFiles: | |||
|     webPath = ("/" + file.removeprefix(args.webroot)).replace("//", "/") | ||||
|     print("{} > {}".format(file, webPath)) | ||||
| 
 | ||||
|     mimeType = mimeFromName(file) | ||||
| 
 | ||||
|     if args.header: | ||||
|         if ("404" in file): | ||||
|             response = b'HTTP/1.0 404 File not found\r\n' | ||||
|         else: | ||||
|             response = b'HTTP/1.0 200 OK\r\n' | ||||
|         response += b"lwIP/1.4.1 (http://savannah.nongnu.org/projects/lwip)\r\n" | ||||
|         fext = file.split('.')[-1] | ||||
|         ctype = b'Content-type: text/plain\r\n' | ||||
|         if (fext.endswith("html") or fext.endswith("htm") or fext.endswith("shtml") or fext.endswith( | ||||
|                 "shtm") or fext.endswith("ssi")): | ||||
|             ctype = b'Content-type: text/html\r\n' | ||||
|         if (fext.endswith("js")): | ||||
|             ctype = b'Content-type: application/x-javascript\r\n' | ||||
|         if (fext.endswith("css")): | ||||
|             ctype = b'Content-type: text/css\r\n' | ||||
|         if (fext.endswith("ico")): | ||||
|             ctype = b'Content-type: image/x-icon\r\n' | ||||
|         if (fext.endswith("gif")): | ||||
|             ctype = b'Content-type: image/gif\r\n' | ||||
|         if (fext.endswith("png")): | ||||
|             ctype = b'Content-type: image/png\r\n' | ||||
|         if(fext.endswith("jpg")): | ||||
|             ctype = b'Content-type: image/jpeg\r\n' | ||||
|         if(fext.endswith("bmp")): | ||||
|             ctype = b'Content-type: image/bmp\r\n' | ||||
|         if(fext.endswith("class")): | ||||
|             ctype = b'Content-type: application/octet-stream\r\n' | ||||
|         if(fext.endswith("ram")): | ||||
|             ctype = b'Content-type: audio/x-pn-realaudio\r\n' | ||||
|         response += ctype | ||||
|         response += b'Content-type: ' + mimeType.encode() + b'\r\n' | ||||
| 
 | ||||
|         binFile = open(file, 'rb') | ||||
|         binData = binFile.read() | ||||
|         compEff = False | ||||
|         if args.minify: | ||||
|             p = subprocess.Popen(["minify", "--html-keep-document-tags", "--mime", mimeType], stdin=subprocess.PIPE, | ||||
|                                  stdout=subprocess.PIPE) | ||||
|             minData = p.communicate(binData)[0] | ||||
|             if len(minData) < len(binData): | ||||
|                 print("- Minify: {} -> {}".format(len(binData), len(minData))) | ||||
|                 compEff = True | ||||
|                 binData = minData | ||||
| 
 | ||||
|         if args.gzip: | ||||
|             compData = gzip.compress(binData, 9) | ||||
|             if len(compData) < len(binData): | ||||
|  | @ -103,7 +120,8 @@ for file in httpFiles: | |||
|         f_fsdata_c.write("};\n\n") | ||||
| 
 | ||||
|         f_fsdata_c.write("const struct fsdata_file {}[] = {{{{\n  {},\n  {}, {} + {}, sizeof({}) - {}, 1 }}}};\n\n" | ||||
|                 .format(escFileFile, lastFileStruct, escFileData, escFileData, len(fnameBin), escFileData, len(fnameBin))) | ||||
|                          .format(escFileFile, lastFileStruct, escFileData, escFileData, len(fnameBin), escFileData, | ||||
|                                  len(fnameBin))) | ||||
|         # TODO: The last value is 1 if args.header == True | ||||
|         lastFileStruct = escFileFile | ||||
| 
 | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| Subproject commit b56c7c8f8f1eb7e233af11357b1cf5d7bc873f2e | ||||
| Subproject commit 7faa16b07ce0d606f9525a316990da5b58e61314 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue