Skip to content

Commit 3d2d4c9

Browse files
committed
feat: improve new_project.py to not require pl-build
1 parent 26abd0d commit 3d2d4c9

7 files changed

Lines changed: 78 additions & 29 deletions

File tree

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/1.4.350.0/windows/vulkansdk-windows-X64-1.4.350.0.exe" -OutFile VulkanSDK.exe
4747
# ./VulkanSDK.exe --help
4848
./VulkanSDK.exe --accept-licenses --default-answer --root D:/a/VulkanSDK --confirm-command install
49-
python3 -m pip install pl-build
49+
python3 -m pip install pl-build
5050
5151
- name: Prep 1
5252
shell: cmd
@@ -183,7 +183,7 @@ jobs:
183183
curl https://sdk.lunarg.com/sdk/download/1.4.350.0/mac/vulkansdk-macos-1.4.350.0.zip -o vk.zip
184184
unzip vk.zip
185185
sudo ./vulkansdk-macOS-1.4.350.0.app/Contents/MacOS/vulkansdk-macOS-1.4.350.0 --root ~/VulkanSDK/1.4.350.0 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.usr com.lunarg.vulkan.sdl2 com.lunarg.vulkan.glm com.lunarg.vulkan.volk com.lunarg.vulkan.vma com.lunarg.vulkan.ios
186-
python3 -m pip install pl-build
186+
python3 -m pip install pl-build
187187
188188
- name: Prep 1
189189
run: |
@@ -322,7 +322,7 @@ jobs:
322322
sudo apt install libxinerama-dev
323323
sudo apt install libgl-dev
324324
sudo apt install libxi-dev
325-
python3 -m pip install pl-build
325+
python3 -m pip install pl-build
326326
327327
- name: Prep 1
328328
run: |

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ The fastest way to use Pilot Light is to generate a small standalone project.
5454
From the root of this repository:
5555

5656
```bash
57-
python -m pip install pl-build
5857
python scripts/new_project.py ../MyFirstProject
5958
```
6059
Then just run your platforms build script located in the **/src** directory of your new project. The binaries will be located in the **/out** directory. The Pilot Light directory is no longer needed. Running the script again will update your project with the newest Pilot Light files.

internal/templates/gen_build_c.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,20 @@
1919
import sys
2020
import platform as plat
2121

22-
import pl_build.core as pl
23-
import pl_build.backend_win32 as win32
24-
import pl_build.backend_linux as linux
25-
import pl_build.backend_macos as apple
22+
try:
23+
import pl_build.core as pl
24+
import pl_build.backend_win32 as win32
25+
import pl_build.backend_linux as linux
26+
import pl_build.backend_macos as apple
27+
except ImportError:
28+
# just use the packaged build so users don't need to pip install pl-build
29+
if len(sys.argv) > 1:
30+
sys.path.insert(0, sys.argv[1])
31+
import build.core as pl
32+
import build.backend_win32 as win32
33+
import build.backend_linux as linux
34+
import build.backend_macos as apple
35+
2636

2737
#-----------------------------------------------------------------------------
2838
# [SECTION] project

internal/templates/gen_build_c_api.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,19 @@
1919
import sys
2020
import platform as plat
2121

22-
import pl_build.core as pl
23-
import pl_build.backend_win32 as win32
24-
import pl_build.backend_linux as linux
25-
import pl_build.backend_macos as apple
22+
try:
23+
import pl_build.core as pl
24+
import pl_build.backend_win32 as win32
25+
import pl_build.backend_linux as linux
26+
import pl_build.backend_macos as apple
27+
except ImportError:
28+
# just use the packaged build so users don't need to pip install pl-build
29+
if len(sys.argv) > 1:
30+
sys.path.insert(0, sys.argv[1])
31+
import build.core as pl
32+
import build.backend_win32 as win32
33+
import build.backend_linux as linux
34+
import build.backend_macos as apple
2635

2736
#-----------------------------------------------------------------------------
2837
# [SECTION] project

internal/templates/gen_build_cpp.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,19 @@
2323
import sys
2424
import platform as plat
2525

26-
import pl_build.core as pl
27-
import pl_build.backend_win32 as win32
28-
import pl_build.backend_linux as linux
29-
import pl_build.backend_macos as apple
26+
try:
27+
import pl_build.core as pl
28+
import pl_build.backend_win32 as win32
29+
import pl_build.backend_linux as linux
30+
import pl_build.backend_macos as apple
31+
except ImportError:
32+
# just use the packaged build so users don't need to pip install pl-build
33+
if len(sys.argv) > 1:
34+
sys.path.insert(0, sys.argv[1])
35+
import build.core as pl
36+
import build.backend_win32 as win32
37+
import build.backend_linux as linux
38+
import build.backend_macos as apple
3039

3140
#-----------------------------------------------------------------------------
3241
# [SECTION] project

internal/templates/gen_build_cpp_api.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,19 @@
2323
import sys
2424
import platform as plat
2525

26-
import pl_build.core as pl
27-
import pl_build.backend_win32 as win32
28-
import pl_build.backend_linux as linux
29-
import pl_build.backend_macos as apple
26+
try:
27+
import pl_build.core as pl
28+
import pl_build.backend_win32 as win32
29+
import pl_build.backend_linux as linux
30+
import pl_build.backend_macos as apple
31+
except ImportError:
32+
# just use the packaged build so users don't need to pip install pl-build
33+
if len(sys.argv) > 1:
34+
sys.path.insert(0, sys.argv[1])
35+
import build.core as pl
36+
import build.backend_win32 as win32
37+
import build.backend_linux as linux
38+
import build.backend_macos as apple
3039

3140
#-----------------------------------------------------------------------------
3241
# [SECTION] project

scripts/new_project.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
target_directory = "../../project"
1818
file_directory = os.path.dirname(os.path.abspath(__file__))
19+
build_sys_directory = os.path.dirname(os.path.abspath(__file__)) + "/.."
1920

2021
cpp = False
2122
api = False
@@ -35,7 +36,11 @@
3536
if os.path.isdir(target_directory + "/dependencies"):
3637
newProject = False
3738
print("Updating Existing Project")
38-
shutil.rmtree(target_directory + "/dependencies")
39+
shutil.rmtree(target_directory + "/dependencies/pilotlight")
40+
shutil.rmtree(target_directory + "/dependencies/cgltf")
41+
shutil.rmtree(target_directory + "/dependencies/glfw")
42+
shutil.rmtree(target_directory + "/dependencies/imgui")
43+
shutil.rmtree(target_directory + "/dependencies/stb")
3944

4045
if not os.path.isdir(target_directory):
4146
os.mkdir(target_directory)
@@ -45,13 +50,12 @@
4550
os.mkdir(target_directory + "/docs")
4651
os.mkdir(target_directory + "/tests")
4752
os.mkdir(target_directory + "/.vscode")
53+
os.mkdir(target_directory + "/dependencies")
4854

49-
os.mkdir(target_directory + "/dependencies")
5055
os.mkdir(target_directory + "/dependencies/pilotlight")
5156
os.mkdir(target_directory + "/dependencies/pilotlight/include")
5257
os.mkdir(target_directory + "/dependencies/pilotlight/src")
5358

54-
5559
for file in glob.glob(file_directory + "/../extensions/pl_*_ext.h"):
5660
shutil.copy(file, target_directory + "/dependencies/pilotlight/include/")
5761

@@ -87,19 +91,28 @@
8791
shutil.copytree(file_directory + "/../thirdparty/stb", target_directory + "/dependencies/stb")
8892
shutil.copytree(file_directory + "/../shaders", target_directory + "/dependencies/pilotlight/shaders")
8993

94+
if cpp and api:
95+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build.py")
96+
elif api:
97+
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build.py")
98+
elif cpp:
99+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build.py")
100+
else:
101+
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build.py")
102+
90103
if newProject:
91104
print("Generating New Project")
92105
if cpp and api:
93-
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build.py")
106+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp_api.py", target_directory + "/scripts/gen_build_user.py")
94107
shutil.copy(file_directory + "/../internal/templates/template_app_api.cpp", target_directory + "/src/app.cpp")
95108
elif api:
96-
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build.py")
109+
shutil.copy(file_directory + "/../internal/templates/gen_build_c_api.py", target_directory + "/scripts/gen_build_user.py")
97110
shutil.copy(file_directory + "/../internal/templates/template_app_api.cpp", target_directory + "/src/app.c")
98111
elif cpp:
99-
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build.py")
112+
shutil.copy(file_directory + "/../internal/templates/gen_build_cpp.py", target_directory + "/scripts/gen_build_user.py")
100113
shutil.copy(file_directory + "/../internal/templates/template_app.cpp", target_directory + "/src/app.cpp")
101114
else:
102-
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build.py")
115+
shutil.copy(file_directory + "/../internal/templates/gen_build_c.py", target_directory + "/scripts/gen_build_user.py")
103116
shutil.copy(file_directory + "/../internal/templates/template_app.cpp", target_directory + "/src/app.c")
104117

105118
shutil.copy(file_directory + "/../src/pl_config.h", target_directory + "/src/pl_config.h")
@@ -114,7 +127,7 @@
114127

115128
os.chdir(target_directory)
116129
os.chdir("scripts")
117-
subprocess.run([os.path.basename(sys.executable), "gen_build.py"])
130+
subprocess.run([os.path.basename(sys.executable), "gen_build.py", build_sys_directory])
118131

119132
else:
120133
if(os.path.isdir(target_directory + "/out")):
@@ -125,5 +138,5 @@
125138
shutil.rmtree(target_directory + "/cache")
126139
os.chdir(target_directory)
127140
os.chdir("scripts")
128-
subprocess.run([os.path.basename(sys.executable), "gen_build.py"])
141+
subprocess.run([os.path.basename(sys.executable), "gen_build.py", build_sys_directory])
129142

0 commit comments

Comments
 (0)