build_package_image.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env python3
  2. #
  3. # Copyright (c) Contributors to the Open 3D Engine Project.
  4. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. #
  6. # SPDX-License-Identifier: Apache-2.0 OR MIT
  7. #
  8. #
  9. from pathlib import Path
  10. from tempfile import TemporaryDirectory
  11. import argparse
  12. import os
  13. import shutil
  14. import sys
  15. sys.path.append(str(Path(__file__).parent.parent.parent / 'Scripts'))
  16. from builders.vcpkgbuilder import VcpkgBuilder
  17. import builders.monkeypatch_tempdir_cleanup
  18. def main():
  19. parser = argparse.ArgumentParser()
  20. parser.add_argument(
  21. '--platform-name',
  22. dest='platformName',
  23. choices=['windows', 'mac', 'linux', 'linux-aarch64'],
  24. default=VcpkgBuilder.defaultPackagePlatformName(),
  25. )
  26. args = parser.parse_args()
  27. vcpkg_platform_map = {
  28. 'windows': 'windows',
  29. 'android': 'android',
  30. 'mac': 'mac',
  31. 'ios': 'ios',
  32. 'linux': 'linux',
  33. 'linux-aarch64': 'linux' }
  34. vcpkg_platform = vcpkg_platform_map[args.platformName]
  35. if args.platformName == 'linux-aarch64':
  36. os.environ['VCPKG_FORCE_SYSTEM_BINARIES'] = '1'
  37. packageSystemDir = Path(__file__).resolve().parents[1]
  38. packageSourceDir = packageSystemDir / 'poly2tri'
  39. outputDir = packageSystemDir / f'poly2tri-{args.platformName}'
  40. cmakeFindFile = packageSourceDir / f'Findpoly2tri_{args.platformName}.cmake'
  41. if not cmakeFindFile.exists():
  42. cmakeFindFile = packageSourceDir / 'Findpoly2tri.cmake'
  43. # vcpkg uses https://github.com/greenm01/poly2tri repo (88de490), but we need
  44. # the more recent version from https://github.com/jhasse/poly2tri repo (7f0487a),
  45. # patching vcpkg to build jhasse version.
  46. buildJhasseRepoPatch = (packageSourceDir / 'build-poly2tri-jhasse-repo.patch')
  47. with TemporaryDirectory() as tempdir:
  48. tempdir = Path(tempdir)
  49. builder = VcpkgBuilder(
  50. packageName='poly2tri',
  51. portName='poly2tri',
  52. vcpkgDir=tempdir,
  53. targetPlatform=vcpkg_platform,
  54. static=True
  55. )
  56. builder.cloneVcpkg('751fc199af8d33eb300af5edbd9e3b77c48f0bca')
  57. builder.patch(buildJhasseRepoPatch)
  58. builder.bootstrap()
  59. builder.build()
  60. builder.copyBuildOutputTo(
  61. outputDir,
  62. extraFiles={
  63. next(builder.vcpkgDir.glob(f'buildtrees/poly2tri/src/*/LICENSE')): outputDir / builder.packageName / 'LICENSE',
  64. next(builder.vcpkgDir.glob(f'buildtrees/poly2tri/src/*/README.md')): outputDir / builder.packageName / 'README.md',
  65. },
  66. subdir='poly2tri'
  67. )
  68. # vcpkg's commit 751fc19 uses poly2tri's commit 7f0487a (after patch)
  69. builder.writePackageInfoFile(
  70. outputDir,
  71. settings={
  72. 'PackageName': f'poly2tri-7f0487a-rev1-{args.platformName}',
  73. 'URL': 'https://github.com/jhasse/poly2tri',
  74. 'License': 'BSD-3-Clause',
  75. 'LicenseFile': 'poly2tri/LICENSE'
  76. },
  77. )
  78. shutil.copy2(
  79. src=cmakeFindFile,
  80. dst=outputDir / 'Findpoly2tri.cmake'
  81. )
  82. if __name__ == '__main__':
  83. main()