mirror of
https://github.com/bentoml/OpenLLM.git
synced 2026-04-25 09:32:37 -04:00
fix(binary): correct folders when building standalone installer (#228)
This commit is contained in:
106
openllm-python/pyoxidizer.bzl
Normal file
106
openllm-python/pyoxidizer.bzl
Normal file
@@ -0,0 +1,106 @@
|
||||
# Copyright 2023 BentoML Team. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Entrypoint for using pyoxidizer to package openllm into standalone binary distribution."""
|
||||
|
||||
VERSION = VARS["version"]
|
||||
APP_NAME = "openllm"
|
||||
DISPLAY_NAME = "OpenLLM"
|
||||
AUTHOR = "BentoML"
|
||||
|
||||
def make_msi(target_triple):
|
||||
if target_triple == "x86_64-pc-windows-msvc":
|
||||
arch = "x64"
|
||||
elif target_triple == "i686-pc-windows-msvc":
|
||||
arch = "x86"
|
||||
else:
|
||||
arch = "unknown"
|
||||
|
||||
# https://gregoryszorc.com/docs/pyoxidizer/main/tugger_starlark_type_wix_msi_builder.html
|
||||
msi = WiXMSIBuilder(
|
||||
id_prefix = APP_NAME,
|
||||
product_name = DISPLAY_NAME,
|
||||
product_version = VERSION,
|
||||
product_manufacturer = AUTHOR,
|
||||
arch = arch,
|
||||
)
|
||||
msi.msi_filename = DISPLAY_NAME + "-" + VERSION + "-" + arch + ".msi"
|
||||
msi.help_url = "https://github.com/bentoml/OpenLLM/"
|
||||
msi.license_path = CWD + "/LICENSE.md"
|
||||
|
||||
# https://gregoryszorc.com/docs/pyoxidizer/main/tugger_starlark_type_file_manifest.html
|
||||
m = FileManifest()
|
||||
|
||||
exe_prefix = "targets/" + target_triple + "/"
|
||||
m.add_path(
|
||||
path = exe_prefix + APP_NAME + ".exe",
|
||||
strip_prefix = exe_prefix,
|
||||
)
|
||||
|
||||
msi.add_program_files_manifest(m)
|
||||
|
||||
return msi
|
||||
|
||||
def make_exe_installer():
|
||||
# https://gregoryszorc.com/docs/pyoxidizer/main/tugger_starlark_type_wix_bundle_builder.html
|
||||
bundle = WiXBundleBuilder(
|
||||
id_prefix = APP_NAME,
|
||||
name = DISPLAY_NAME,
|
||||
version = VERSION,
|
||||
manufacturer = AUTHOR,
|
||||
)
|
||||
|
||||
bundle.add_vc_redistributable("x64")
|
||||
bundle.add_vc_redistributable("x86")
|
||||
|
||||
bundle.add_wix_msi_builder(
|
||||
builder = make_msi("x86_64-pc-windows-msvc"),
|
||||
display_internal_ui = True,
|
||||
install_condition = "VersionNT64",
|
||||
)
|
||||
bundle.add_wix_msi_builder(
|
||||
builder = make_msi("i686-pc-windows-msvc"),
|
||||
display_internal_ui = True,
|
||||
install_condition = "Not VersionNT64",
|
||||
)
|
||||
|
||||
return bundle
|
||||
|
||||
def make_macos_app_bundle():
|
||||
# https://gregoryszorc.com/docs/pyoxidizer/main/tugger_starlark_type_macos_application_bundle_builder.html
|
||||
bundle = MacOsApplicationBundleBuilder(DISPLAY_NAME)
|
||||
bundle.set_info_plist_required_keys(
|
||||
display_name = DISPLAY_NAME,
|
||||
identifier = "com.github.bentoml." + APP_NAME,
|
||||
version = VERSION,
|
||||
signature = "oplm",
|
||||
executable = APP_NAME,
|
||||
)
|
||||
|
||||
# https://gregoryszorc.com/docs/pyoxidizer/main/tugger_starlark_type_apple_universal_binary.html
|
||||
universal = AppleUniversalBinary(APP_NAME)
|
||||
|
||||
for target in ["aarch64-apple-darwin", "x86_64-apple-darwin"]:
|
||||
universal.add_path("targets/" + target + "/" + APP_NAME)
|
||||
|
||||
m = FileManifest()
|
||||
m.add_file(universal.to_file_content())
|
||||
bundle.add_macos_manifest(m)
|
||||
|
||||
return bundle
|
||||
|
||||
register_target("windows_installers", make_exe_installer, default = True)
|
||||
register_target("macos_app_bundle", make_macos_app_bundle)
|
||||
|
||||
resolve_targets()
|
||||
Reference in New Issue
Block a user