| 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) |