This reverts commit 94082e07a7.
This commit is contained in:
5
BuildChecker/.gitignore
vendored
Normal file
5
BuildChecker/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
INSTALLED_HOOKS_VERSION
|
||||||
|
DISABLE_SUBMODULE_AUTOUPDATE
|
||||||
|
*.nuget*
|
||||||
|
project.assets.json
|
||||||
|
project.packagespec.json
|
||||||
46
BuildChecker/BuildChecker.csproj
Normal file
46
BuildChecker/BuildChecker.csproj
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
This is a dummy .csproj file to check things like submodules.
|
||||||
|
Better this than other errors.
|
||||||
|
|
||||||
|
If you want to create this kind of file yourself, you have to create an empty .NET application,
|
||||||
|
Then strip it of everything until you have the <Project> tags.
|
||||||
|
VS refuses to load the project if you make a bare project file and use Add -> Existing Project... for some reason.
|
||||||
|
|
||||||
|
You want to handle the Build, Clean and Rebuild tasks to prevent missing task errors on build.
|
||||||
|
|
||||||
|
If you want to learn more about these kinds of things, check out Microsoft's official documentation about MSBuild:
|
||||||
|
https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild
|
||||||
|
-->
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<Python>python3</Python>
|
||||||
|
<Python Condition="'$(OS)'=='Windows_NT' Or '$(OS)'=='Windows'">py -3</Python>
|
||||||
|
<ProjectGuid>{C899FCA4-7037-4E49-ABC2-44DE72487110}</ProjectGuid>
|
||||||
|
<TargetFrameworkMoniker>.NETFramework, Version=v4.7.2</TargetFrameworkMoniker>
|
||||||
|
<RestorePackages>false</RestorePackages>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="Build">
|
||||||
|
<Exec Command="$(Python) git_helper.py" CustomErrorRegularExpression="^Error" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Rebuild" DependsOnTargets="Build" />
|
||||||
|
<Target Name="Clean">
|
||||||
|
<Message Importance="low" Text="Ignoring 'Clean' target." />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Compile">
|
||||||
|
</Target>
|
||||||
|
<Target Name="CoreCompile">
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
104
BuildChecker/git_helper.py
Normal file
104
BuildChecker/git_helper.py
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Installs git hooks, updates them, updates submodules, that kind of thing.
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
SOLUTION_PATH = Path("..") / "SpaceStation14.sln"
|
||||||
|
# If this doesn't match the saved version we overwrite them all.
|
||||||
|
CURRENT_HOOKS_VERSION = "2"
|
||||||
|
QUIET = len(sys.argv) == 2 and sys.argv[1] == "--quiet"
|
||||||
|
|
||||||
|
|
||||||
|
def run_command(command: List[str], capture: bool = False) -> subprocess.CompletedProcess:
|
||||||
|
"""
|
||||||
|
Runs a command with pretty output.
|
||||||
|
"""
|
||||||
|
text = ' '.join(command)
|
||||||
|
if not QUIET:
|
||||||
|
print("$ {}".format(text))
|
||||||
|
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
completed = None
|
||||||
|
|
||||||
|
if capture:
|
||||||
|
completed = subprocess.run(command, cwd="..", stdout=subprocess.PIPE)
|
||||||
|
else:
|
||||||
|
completed = subprocess.run(command, cwd="..")
|
||||||
|
|
||||||
|
if completed.returncode != 0:
|
||||||
|
print("Error: command exited with code {}!".format(completed.returncode))
|
||||||
|
|
||||||
|
return completed
|
||||||
|
|
||||||
|
|
||||||
|
def update_submodules():
|
||||||
|
"""
|
||||||
|
Updates all submodules.
|
||||||
|
"""
|
||||||
|
|
||||||
|
if os.path.isfile("DISABLE_SUBMODULE_AUTOUPDATE"):
|
||||||
|
return
|
||||||
|
|
||||||
|
# If the status doesn't match, force VS to reload the solution.
|
||||||
|
# status = run_command(["git", "submodule", "status"], capture=True)
|
||||||
|
run_command(["git", "submodule", "update", "--init", "--recursive"])
|
||||||
|
# status2 = run_command(["git", "submodule", "status"], capture=True)
|
||||||
|
|
||||||
|
# Something changed.
|
||||||
|
# if status.stdout != status2.stdout:
|
||||||
|
# print("Git submodules changed. Reloading solution.")
|
||||||
|
# reset_solution()
|
||||||
|
|
||||||
|
|
||||||
|
def install_hooks():
|
||||||
|
"""
|
||||||
|
Installs the necessary git hooks into .git/hooks.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Read version file.
|
||||||
|
if os.path.isfile("INSTALLED_HOOKS_VERSION"):
|
||||||
|
with open("INSTALLED_HOOKS_VERSION", "r") as f:
|
||||||
|
if f.read() == CURRENT_HOOKS_VERSION:
|
||||||
|
if not QUIET:
|
||||||
|
print("No hooks change detected.")
|
||||||
|
return
|
||||||
|
|
||||||
|
with open("INSTALLED_HOOKS_VERSION", "w") as f:
|
||||||
|
f.write(CURRENT_HOOKS_VERSION)
|
||||||
|
|
||||||
|
print("Hooks need updating.")
|
||||||
|
|
||||||
|
hooks_target_dir = Path("..")/".git"/"hooks"
|
||||||
|
hooks_source_dir = Path("hooks")
|
||||||
|
|
||||||
|
# Clear entire tree since we need to kill deleted files too.
|
||||||
|
for filename in os.listdir(str(hooks_target_dir)):
|
||||||
|
os.remove(str(hooks_target_dir/filename))
|
||||||
|
|
||||||
|
for filename in os.listdir(str(hooks_source_dir)):
|
||||||
|
print("Copying hook {}".format(filename))
|
||||||
|
shutil.copy2(str(hooks_source_dir/filename),
|
||||||
|
str(hooks_target_dir/filename))
|
||||||
|
|
||||||
|
|
||||||
|
def reset_solution():
|
||||||
|
"""
|
||||||
|
Force VS to think the solution has been changed to prompt the user to reload it, thus fixing any load errors.
|
||||||
|
"""
|
||||||
|
|
||||||
|
with SOLUTION_PATH.open("r") as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
with SOLUTION_PATH.open("w") as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
install_hooks()
|
||||||
|
update_submodules()
|
||||||
0
Hooks/post-checkout → BuildChecker/hooks/post-checkout
Normal file → Executable file
0
Hooks/post-checkout → BuildChecker/hooks/post-checkout
Normal file → Executable file
0
Hooks/post-merge → BuildChecker/hooks/post-merge
Normal file → Executable file
0
Hooks/post-merge → BuildChecker/hooks/post-merge
Normal file → Executable file
@@ -21,9 +21,8 @@ We are happy to accept contributions from anybody. Get in Discord if you want to
|
|||||||
## Building
|
## Building
|
||||||
|
|
||||||
1. Clone this repo.
|
1. Clone this repo.
|
||||||
2. In the root folder run `git submodule update --init --recursive`
|
2. Run `RUN_THIS.py` to init submodules and download the engine.
|
||||||
3. Copy the two files from the `Hooks` folder to `.git/hooks`
|
3. Compile the solution.
|
||||||
4. Compile the solution.
|
|
||||||
|
|
||||||
[More detailed instructions on building the project.](https://hackmd.io/@ss14/docs/%2FBZkI4RlUQbm09QWrXCZ3kg)
|
[More detailed instructions on building the project.](https://hackmd.io/@ss14/docs/%2FBZkI4RlUQbm09QWrXCZ3kg)
|
||||||
|
|
||||||
|
|||||||
18
RUN_THIS.py
Executable file
18
RUN_THIS.py
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Import future so people on py2 still get the clear error that they need to upgrade.
|
||||||
|
from __future__ import print_function
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
IS_WINDOWS = sys.platform in ("win32", "cygwin")
|
||||||
|
|
||||||
|
version = sys.version_info
|
||||||
|
if version.major < 3 or (version.major == 3 and version.minor < 5):
|
||||||
|
print("ERROR: You need at least Python 3.5 to build SS14.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if IS_WINDOWS:
|
||||||
|
subprocess.run(["py", "-3", "git_helper.py"], cwd="BuildChecker")
|
||||||
|
else:
|
||||||
|
subprocess.run(["python3", "git_helper.py"], cwd="BuildChecker")
|
||||||
Reference in New Issue
Block a user