mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-24 15:07:38 +00:00
local ifctester wheel build
This commit is contained in:
@@ -28,6 +28,7 @@ dist:
|
|||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
cp -r $(PACKAGE_NAME) build/
|
cp -r $(PACKAGE_NAME) build/
|
||||||
cp pyproject.toml build/
|
cp pyproject.toml build/
|
||||||
|
if [ -f README.md ]; then cp README.md build/; fi
|
||||||
ifeq ($(IS_STABLE), TRUE)
|
ifeq ($(IS_STABLE), TRUE)
|
||||||
$(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' build/pyproject.toml
|
$(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' build/pyproject.toml
|
||||||
ifdef IS_MODULE
|
ifdef IS_MODULE
|
||||||
|
|||||||
+46
-10
@@ -25,9 +25,15 @@ WEBAPP_BUILD_DIR := $(WEBAPP_DIR)/dist
|
|||||||
PYODIDE_DIR := $(WEBAPP_DIR)/public/pyodide
|
PYODIDE_DIR := $(WEBAPP_DIR)/public/pyodide
|
||||||
PYODIDE_VERSION := 0.28.0
|
PYODIDE_VERSION := 0.28.0
|
||||||
PYODIDE_URL := https://github.com/pyodide/pyodide/releases/download/$(PYODIDE_VERSION)/pyodide-$(PYODIDE_VERSION).tar.bz2
|
PYODIDE_URL := https://github.com/pyodide/pyodide/releases/download/$(PYODIDE_VERSION)/pyodide-$(PYODIDE_VERSION).tar.bz2
|
||||||
|
WEBAPP_GENERATED_DIR := $(WEBAPP_DIR)/public/worker/generated
|
||||||
|
WEBAPP_IFCTESTER_MANIFEST := $(WEBAPP_GENERATED_DIR)/ifctester.json
|
||||||
|
WEBAPP_IFCTESTER_BUILD_DIR := build-webapp-wheel
|
||||||
|
PACKAGE_WEBAPP_DIR := $(PACKAGE_NAME)/webapp
|
||||||
|
PACKAGE_WEBAPP_WWW_DIR := $(PACKAGE_WEBAPP_DIR)/www
|
||||||
|
|
||||||
.PHONY: webapp-dev
|
.PHONY: webapp-dev
|
||||||
webapp-dev:
|
webapp-dev: pyodide-download webapp-stage-ifctester-wheel
|
||||||
|
cd $(WEBAPP_DIR) && npm install
|
||||||
cd $(WEBAPP_DIR) && npm run dev
|
cd $(WEBAPP_DIR) && npm run dev
|
||||||
|
|
||||||
.PHONY: pyodide-download
|
.PHONY: pyodide-download
|
||||||
@@ -62,8 +68,31 @@ pyodide-download:
|
|||||||
echo "Pyodide $(PYODIDE_VERSION) prepared in $(PYODIDE_DIR)"; \
|
echo "Pyodide $(PYODIDE_VERSION) prepared in $(PYODIDE_DIR)"; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
.PHONY: webapp-stage-ifctester-wheel
|
||||||
|
webapp-stage-ifctester-wheel:
|
||||||
|
rm -rf $(WEBAPP_GENERATED_DIR)
|
||||||
|
rm -rf $(WEBAPP_IFCTESTER_BUILD_DIR)
|
||||||
|
mkdir -p $(WEBAPP_IFCTESTER_BUILD_DIR)
|
||||||
|
cp -r $(PACKAGE_NAME) $(WEBAPP_IFCTESTER_BUILD_DIR)/
|
||||||
|
rm -rf $(WEBAPP_IFCTESTER_BUILD_DIR)/$(PACKAGE_NAME)/webapp
|
||||||
|
cp pyproject.toml $(WEBAPP_IFCTESTER_BUILD_DIR)/
|
||||||
|
cp README.md $(WEBAPP_IFCTESTER_BUILD_DIR)/
|
||||||
|
ifeq ($(IS_STABLE), TRUE)
|
||||||
|
$(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' $(WEBAPP_IFCTESTER_BUILD_DIR)/pyproject.toml
|
||||||
|
$(SED) 's/version = "0.0.0"/version = "$(VERSION)"/' $(WEBAPP_IFCTESTER_BUILD_DIR)/$(PACKAGE_NAME)/__init__.py
|
||||||
|
else
|
||||||
|
$(SED) 's/version = "0.0.0"/version = "$(VERSION)a$(VERSION_DATE)"/' $(WEBAPP_IFCTESTER_BUILD_DIR)/pyproject.toml
|
||||||
|
$(SED) 's/version = "0.0.0"/version = "$(VERSION)-alpha$(VERSION_DATE)"/' $(WEBAPP_IFCTESTER_BUILD_DIR)/$(PACKAGE_NAME)/__init__.py
|
||||||
|
endif
|
||||||
|
cd $(WEBAPP_IFCTESTER_BUILD_DIR) && $(PYTHON) -m venv env --system-site-packages && . env/$(VENV_ACTIVATE) && python -m pip install build && python -m build --wheel --no-isolation
|
||||||
|
mkdir -p $(WEBAPP_GENERATED_DIR)
|
||||||
|
wheel=$$(basename $(WEBAPP_IFCTESTER_BUILD_DIR)/dist/$(PACKAGE_NAME)-*.whl); \
|
||||||
|
cp "$(WEBAPP_IFCTESTER_BUILD_DIR)/dist/$$wheel" "$(WEBAPP_GENERATED_DIR)/$$wheel"; \
|
||||||
|
printf '{\n "wheel_url": "/worker/generated/%s"\n}\n' "$$wheel" > "$(WEBAPP_IFCTESTER_MANIFEST)"
|
||||||
|
rm -rf $(WEBAPP_IFCTESTER_BUILD_DIR)
|
||||||
|
|
||||||
.PHONY: webapp-build
|
.PHONY: webapp-build
|
||||||
webapp-build: pyodide-download
|
webapp-build: pyodide-download webapp-stage-ifctester-wheel
|
||||||
cd $(WEBAPP_DIR) && npm install
|
cd $(WEBAPP_DIR) && npm install
|
||||||
cd $(WEBAPP_DIR) && npm run build
|
cd $(WEBAPP_DIR) && npm run build
|
||||||
|
|
||||||
@@ -76,22 +105,29 @@ clean:
|
|||||||
rm -rf $(WEBAPP_BUILD_DIR)
|
rm -rf $(WEBAPP_BUILD_DIR)
|
||||||
rm -rf $(WEBAPP_DIR)/node_modules
|
rm -rf $(WEBAPP_DIR)/node_modules
|
||||||
rm -rf $(PYODIDE_DIR)
|
rm -rf $(PYODIDE_DIR)
|
||||||
|
rm -rf $(WEBAPP_GENERATED_DIR)
|
||||||
|
rm -rf $(WEBAPP_IFCTESTER_BUILD_DIR)
|
||||||
rm -rf $(PACKAGE_NAME)/webapp
|
rm -rf $(PACKAGE_NAME)/webapp
|
||||||
rm -rf dist
|
rm -rf dist
|
||||||
|
|
||||||
.PHONY: dist
|
.PHONY: python-dist
|
||||||
dist: webapp-prepare
|
python-dist:
|
||||||
|
rm -rf dist
|
||||||
# For some reason OS is not initalized when we call common.mk dist, which matters on Windows.
|
# For some reason OS is not initalized when we call common.mk dist, which matters on Windows.
|
||||||
# So we pass it explicitly.
|
# So we pass it explicitly.
|
||||||
$(MAKE) -f ../common.mk dist PACKAGE_NAME=$(PACKAGE_NAME) OS=$(OS)
|
$(MAKE) -f ../common.mk dist PACKAGE_NAME=$(PACKAGE_NAME) OS=$(OS) IS_STABLE=$(IS_STABLE)
|
||||||
|
|
||||||
|
.PHONY: dist
|
||||||
|
dist: webapp-prepare
|
||||||
|
$(MAKE) python-dist OS=$(OS) IS_STABLE=$(IS_STABLE)
|
||||||
|
|
||||||
.PHONY: webapp-prepare
|
.PHONY: webapp-prepare
|
||||||
webapp-prepare: webapp-build
|
webapp-prepare: webapp-build
|
||||||
rm -rf $(PACKAGE_NAME)/webapp/www/*
|
rm -rf $(PACKAGE_WEBAPP_WWW_DIR)
|
||||||
mkdir -p $(PACKAGE_NAME)/webapp/www
|
mkdir -p $(PACKAGE_WEBAPP_WWW_DIR)
|
||||||
cp -r $(WEBAPP_BUILD_DIR)/* $(PACKAGE_NAME)/webapp/www/
|
cp -r $(WEBAPP_BUILD_DIR)/* $(PACKAGE_WEBAPP_WWW_DIR)/
|
||||||
cp $(WEBAPP_DIR)/__init__.py $(PACKAGE_NAME)/webapp/__init__.py
|
cp $(WEBAPP_DIR)/__init__.py $(PACKAGE_WEBAPP_DIR)/__init__.py
|
||||||
cp $(WEBAPP_DIR)/serve.py $(PACKAGE_NAME)/webapp/serve.py
|
cp $(WEBAPP_DIR)/serve.py $(PACKAGE_WEBAPP_DIR)/serve.py
|
||||||
|
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
test:
|
test:
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ node_modules
|
|||||||
dist
|
dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
*.local
|
*.local
|
||||||
|
public/worker/generated
|
||||||
|
|
||||||
# Editor directories and files
|
# Editor directories and files
|
||||||
.vscode/*
|
.vscode/*
|
||||||
@@ -24,4 +25,4 @@ dist-ssr
|
|||||||
*.sw?
|
*.sw?
|
||||||
|
|
||||||
.claude
|
.claude
|
||||||
experiment/*
|
experiment/*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import config from '../../../config.json';
|
|
||||||
import hyperid from 'hyperid';
|
import hyperid from 'hyperid';
|
||||||
|
import config from '../../../config.json';
|
||||||
import type { AuditReportData } from "$src/types/report";
|
import type { AuditReportData } from "$src/types/report";
|
||||||
|
|
||||||
let pyodide: any = null;
|
let pyodide: any = null;
|
||||||
|
|||||||
@@ -83,7 +83,13 @@ async function initEnvironment() {
|
|||||||
await pyodide.loadPackage("shapely");
|
await pyodide.loadPackage("shapely");
|
||||||
|
|
||||||
// Install IfcTester
|
// Install IfcTester
|
||||||
await micropip.install('ifctester');
|
const ifctesterManifest = await fetch('/worker/generated/ifctester.json').then((response) => {
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`[worker] Failed to load IfcTester wheel manifest: ${response.status} ${response.statusText}`);
|
||||||
|
}
|
||||||
|
return response.json() as Promise<{ wheel_url: string }>;
|
||||||
|
});
|
||||||
|
await micropip.install(ifctesterManifest.wheel_url);
|
||||||
|
|
||||||
// Initialize IDS and API
|
// Initialize IDS and API
|
||||||
await API.init(pyodide);
|
await API.init(pyodide);
|
||||||
|
|||||||
Reference in New Issue
Block a user