jeff-dh / SolidPython

A python frontend for solid modelling that compiles to OpenSCAD
137 stars 24 forks source link

BOSL2 as submodule2 #20

Closed ssuchter closed 1 year ago

ssuchter commented 1 year ago

This PR removes a copy of BOSL2 checked in to this repo, in favor of using a submodule.

A prebuild step is added to error out of packaging if this submodule has not been initialized.

Note: BOSL2's code was updated while this PR was being prepared. As this PR isn't about updating BOSL2, the version was pinned as the BOSL2 version from remotes/origin/revarbat_dev~7, commit 56031aea9a4012176bf59ff8d7b38e1d8f509fb0. Ultimately that should be updated to a recent version, but this is out of scope of this PR.

I tested this change by checking out without initializing the submodule, and found that poetry build fails:

GWLW4HPQVR:~/src/ssuchter-SolidPython3% poetry build
Preparing build environment with build-system requirements poetry-core>=1.0.0
Building solidpython2 (2.0.1)
Cannot find ./solid2/libs/BOSL2/std.scad - probably you have not initalized the BOSL submodule
You probably need to run 'git submodule init ; git submodule update'
     (or clone with --recurse-submodules)

Then I tested that the build when the submodule is initialized, it does properly package BOSL2 .scad files:

GWLW4HPQVR:~/src% git clone -b BOSL2_as_submodule2 --recurse-submodules git@github.com:ssuchter/SolidPython.git ssuchter-SolidPython5
Cloning into 'ssuchter-SolidPython5'...
remote: Enumerating objects: 4703, done.
remote: Counting objects: 100% (1676/1676), done.
remote: Compressing objects: 100% (541/541), done.
remote: Total 4703 (delta 1198), reused 1534 (delta 1133), pack-reused 3027
Receiving objects: 100% (4703/4703), 2.46 MiB | 4.92 MiB/s, done.
Resolving deltas: 100% (3141/3141), done.
Submodule 'solid2/libs/BOSL2' (git@github.com:revarbat/BOSL2.git) registered for path 'solid2/libs/BOSL2'
Cloning into '/Users/ssuchter/src/ssuchter-SolidPython5/solid2/libs/BOSL2'...
remote: Enumerating objects: 13317, done.
remote: Counting objects: 100% (1069/1069), done.
remote: Compressing objects: 100% (468/468), done.
remote: Total 13317 (delta 664), reused 969 (delta 601), pack-reused 12248
Receiving objects: 100% (13317/13317), 7.09 MiB | 9.32 MiB/s, done.
Resolving deltas: 100% (9133/9133), done.
Submodule path 'solid2/libs/BOSL2': checked out '56031aea9a4012176bf59ff8d7b38e1d8f509fb0'
GWLW4HPQVR:~/src% cd ssuchter-SolidPython5
GWLW4HPQVR:~/src/ssuchter-SolidPython5% poetry build
Creating virtualenv solidpython2-571uyeT4-py3.10 in /Users/ssuchter/Library/Caches/pypoetry/virtualenvs
Preparing build environment with build-system requirements poetry-core>=1.0.0
Building solidpython2 (2.0.1)
GWLW4HPQVR:~/src/ssuchter-SolidPython5% tar tzf dist/solidpython2-2.0.1.tar.gz| grep BOSL2 | grep scad | head
solidpython2-2.0.1/solid2/libs/BOSL2/.github/openscad_docsgen.json
solidpython2-2.0.1/solid2/libs/BOSL2/.openscad_docsgen_rc
solidpython2-2.0.1/solid2/libs/BOSL2/.openscad_mdimggen_rc
solidpython2-2.0.1/solid2/libs/BOSL2/affine.scad
solidpython2-2.0.1/solid2/libs/BOSL2/attachments.scad
solidpython2-2.0.1/solid2/libs/BOSL2/ball_bearings.scad
solidpython2-2.0.1/solid2/libs/BOSL2/beziers.scad
solidpython2-2.0.1/solid2/libs/BOSL2/bosl1compat.scad
solidpython2-2.0.1/solid2/libs/BOSL2/bottlecaps.scad
solidpython2-2.0.1/solid2/libs/BOSL2/builtins.scad