OXYGENHUB
◆ main openmsx / build / 3rdparty_packages2make.py
2.1 KiB · Python · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
from packages import getPackage, iterDownloadablePackages
2
3
import sys
4
5
def printPackagesMake():
6
	patchesDir = 'build/3rdparty'
7
	sourceDir = 'derived/3rdparty/src'
8
	tarballsDir = 'derived/3rdparty/download'
9
	print('SOURCE_DIR:=%s' % sourceDir)
10
	print()
11
12
	print('# Information about packages.')
13
	print('# Generated from the data in "build/packages.py".')
14
	print()
15
	tarballs = []
16
	for package in iterDownloadablePackages():
17
		makeName = package.getMakeName()
18
		tarball = tarballsDir + '/' + package.getTarballName()
19
		tarballs.append(tarball)
20
		print('# %s' % package.niceName)
21
		print('PACKAGE_%s:=%s' % (makeName, package.getSourceDirName()))
22
		print('TARBALL_%s:=%s' % (makeName, tarball))
23
		print('# Download:')
24
		print('%s:' % tarball)
25
		print('\tmkdir -p %s' % tarballsDir)
26
		print('\t$(PYTHON) build/download.py %s/%s %s' % (
27
			package.downloadURL, package.getTarballName(), tarballsDir
28
			))
29
		packageSourceDirName = package.getSourceDirName()
30
		packageSourceDir = sourceDir + '/' + packageSourceDirName
31
		patchFile = '%s/%s.diff' % (patchesDir, packageSourceDirName)
32
		print('# Verify:')
33
		verifyMarker = '%s.verified' % tarball
34
		print('%s: %s' % (verifyMarker, tarball))
35
		print('\t$(PYTHON) build/checksum.py %s %d %s' % (
36
			tarball,
37
			package.fileLength,
38
			' '.join('%s=%s' % item for item in package.checksums.items())
39
			))
40
		print('\ttouch %s' % verifyMarker)
41
		print('# Extract:')
42
		extractMarker = '%s/.extracted' % packageSourceDir
43
		print('%s: %s $(wildcard %s)' % (extractMarker, verifyMarker, patchFile))
44
		print('\trm -rf %s' % packageSourceDir)
45
		print('\tmkdir -p %s' % sourceDir)
46
		print('\t$(PYTHON) build/extract.py %s %s %s' % (
47
			tarball, sourceDir, packageSourceDirName
48
			))
49
		print('\ttest ! -e %s || $(PYTHON) build/patch.py %s %s' % (
50
			patchFile, patchFile, sourceDir
51
			))
52
		print('\ttouch %s' % extractMarker)
53
		print()
54
55
	print('# Convenience target to download all source packages.')
56
	print('.PHONY: download')
57
	print('download: %s' % ' '.join(tarballs))
58
59
if __name__ == '__main__':
60
	if len(sys.argv) == 1:
61
		printPackagesMake()
62
	else:
63
		print('Usage: python3 3rdparty_packages2make.py', file=sys.stderr)
64
		sys.exit(2)