new setup script
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -23,7 +23,8 @@ build/
|
||||
|
||||
#Clean files from setup.py
|
||||
src/lib/discord_social_sdk/*
|
||||
!src/lib/discord_social_sdk/version.txt
|
||||
src/lib/godot-cpp/*
|
||||
*.zip
|
||||
|
||||
# release
|
||||
release/
|
||||
@@ -32,3 +33,4 @@ project/export/
|
||||
# venv
|
||||
venv/
|
||||
|
||||
|
||||
|
77
setup.py
77
setup.py
@@ -1,61 +1,36 @@
|
||||
import zipfile
|
||||
from distutils.dir_util import copy_tree
|
||||
import shutil
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
import shutil
|
||||
|
||||
with zipfile.ZipFile("src/lib/discord_game_sdk.zip", "r") as zip_ref:
|
||||
zip_ref.extractall("src/lib/discord_game_sdk/")
|
||||
EXPECTED_VERSION = "1.0.7445"
|
||||
|
||||
# Patch the SDK to actually build, since it's missing an include
|
||||
with open("src/lib/discord_game_sdk/cpp/types.h", "r+") as f:
|
||||
s = f.read()
|
||||
f.seek(0)
|
||||
f.write("#include <cstdint>\n" + s)
|
||||
# Extract the version from the zip filename
|
||||
zip_path = "src/lib/DiscordSocialSdk-1.0.7445.zip"
|
||||
match = re.search(r"DiscordSocialSdk-(\d+\.\d+\.\d+)\.zip", zip_path)
|
||||
if match:
|
||||
extracted_version = match.group(1)
|
||||
if extracted_version != EXPECTED_VERSION:
|
||||
print(f"Warning: Last tested version {EXPECTED_VERSION}, but found {extracted_version} in the zip file.")
|
||||
|
||||
copy_tree("src/lib/discord_game_sdk/lib/", "src/lib/discord_game_sdk/bin/")
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk.dylib",
|
||||
"src/lib/discord_game_sdk/bin/aarch64/discord_game_sdk_aarch64.dylib",
|
||||
)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.so",
|
||||
"src/lib/discord_game_sdk/bin/x86_64/libdiscord_game_sdk.so",
|
||||
)
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86/discord_game_sdk.dll",
|
||||
"src/lib/discord_game_sdk/bin/x86/discord_game_sdk_x86.dll",
|
||||
)
|
||||
# Extract the zip file ignoring the version in the filename
|
||||
with zipfile.ZipFile(zip_path, "r") as zip_ref:
|
||||
zip_ref.extractall("src/lib/")
|
||||
|
||||
os.rename(
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.dll.lib",
|
||||
"src/lib/discord_game_sdk/bin/x86_64/discord_game_sdk.lib",
|
||||
)
|
||||
copy_tree("src/lib/discord_game_sdk/bin/aarch64/", "src/lib/discord_game_sdk/bin/")
|
||||
copy_tree("src/lib/discord_game_sdk/bin/x86/", "src/lib/discord_game_sdk/bin/")
|
||||
copy_tree("src/lib/discord_game_sdk/bin/x86_64/", "src/lib/discord_game_sdk/bin/")
|
||||
# Copy the release DLL to the lib directory
|
||||
release_dll_src = "src/lib/discord_social_sdk/bin/release/discord_partner_sdk.dll"
|
||||
release_dll_dest = "src/lib/discord_social_sdk/lib/release/"
|
||||
os.makedirs(release_dll_dest, exist_ok=True)
|
||||
shutil.copy(release_dll_src, release_dll_dest)
|
||||
|
||||
shutil.rmtree("src/lib/discord_game_sdk/c/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/csharp/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/examples/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/lib/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/aarch64/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/x86/", ignore_errors=True)
|
||||
shutil.rmtree("src/lib/discord_game_sdk/bin/x86_64/", ignore_errors=True)
|
||||
os.remove("src/lib/discord_game_sdk/README.md")
|
||||
# Copy the debug DLL to the lib/debug directory
|
||||
debug_dll_src = "src/lib/discord_social_sdk/bin/debug/discord_partner_sdk.dll"
|
||||
debug_dll_dest = "src/lib/discord_social_sdk/lib/debug/"
|
||||
os.makedirs(debug_dll_dest, exist_ok=True)
|
||||
shutil.copy(debug_dll_src, debug_dll_dest)
|
||||
|
||||
if sys.platform == "darwin":
|
||||
# Combine the two libraries into one
|
||||
os.system(
|
||||
"lipo src/lib/discord_game_sdk/bin/{discord_game_sdk.dylib,discord_game_sdk_aarch64.dylib} -output src/lib/discord_game_sdk/bin/libdiscord_game_sdk.dylib -create"
|
||||
)
|
||||
# Change the install name to (library's location)/(its new name)
|
||||
os.system(
|
||||
"install_name_tool -id '@loader_path/libdiscord_game_sdk.dylib'\
|
||||
src/lib/discord_game_sdk/bin/libdiscord_game_sdk.dylib"
|
||||
)
|
||||
# Remove the ones it's made of
|
||||
os.remove("src/lib/discord_game_sdk/bin/discord_game_sdk.dylib")
|
||||
os.remove("src/lib/discord_game_sdk/bin/discord_game_sdk_aarch64.dylib")
|
||||
# Delete the bin folder
|
||||
bin_folder = "src/lib/discord_social_sdk/bin"
|
||||
shutil.rmtree(bin_folder, ignore_errors=True)
|
||||
|
||||
os.system("git submodule update --init --remote")
|
||||
|
@@ -1 +0,0 @@
|
||||
Latest tested version: 1.0.7445
|
Reference in New Issue
Block a user