librdkafkaVersion = '' # read librdkafka version from package.json import json import os with open('../package.json') as f: librdkafkaVersion = json.load(f)['librdkafka'] librdkafkaWinSufix = '7' if librdkafkaVersion == '0.11.5' else ''; depsPrecompiledDir = '../deps/precompiled' depsIncludeDir = '../deps/include' buildReleaseDir = 'Release' # alternative: 'https://api.nuget.org/v3-flatcontainer/librdkafka.redist/{}/librdkafka.redist.{}.nupkg'.format(librdkafkaVersion, librdkafkaVersion) env_dist = os.environ downloadBaseUrl = env_dist['NODE_RDKAFKA_NUGET_BASE_URL'] if 'NODE_RDKAFKA_NUGET_BASE_URL' in env_dist else 'https://globalcdn.nuget.org/packages/' librdkafkaNugetUrl = downloadBaseUrl + 'librdkafka.redist.{}.nupkg'.format(librdkafkaVersion) print('download librdkafka form ' + librdkafkaNugetUrl) outputDir = 'librdkafka.redist' outputFile = outputDir + '.zip' dllPath = outputDir + '/runtimes/win{}-x64/native'.format(librdkafkaWinSufix) libPath = outputDir + '/build/native/lib/win{}/x64/win{}-x64-Release/v120'.format(librdkafkaWinSufix, librdkafkaWinSufix) includePath = outputDir + '/build/native/include/librdkafka' # download librdkafka from nuget try: # For Python 3.0 and later from urllib.request import urlopen except ImportError: # Fall back to Python 2's urllib2 from urllib2 import urlopen import ssl filedata = urlopen(librdkafkaNugetUrl, context=ssl._create_unverified_context()) datatowrite = filedata.read() with open(outputFile, 'wb') as f: f.write(datatowrite) # extract package import zipfile zip_ref = zipfile.ZipFile(outputFile, 'r') zip_ref.extractall(outputDir) zip_ref.close() # copy files import shutil, os, errno def createdir(dir): try: os.makedirs(dir) except OSError as e: if errno.EEXIST != e.errno: raise createdir(depsPrecompiledDir) createdir(depsIncludeDir) createdir(buildReleaseDir) shutil.copy2(libPath + '/librdkafka.lib', depsPrecompiledDir) shutil.copy2(libPath + '/librdkafkacpp.lib', depsPrecompiledDir) shutil.copy2(includePath + '/rdkafka.h', depsIncludeDir) shutil.copy2(includePath + '/rdkafkacpp.h', depsIncludeDir) shutil.copy2(dllPath + '/zlib.dll', buildReleaseDir) shutil.copy2(dllPath + '/msvcr120.dll', buildReleaseDir) shutil.copy2(dllPath + '/librdkafka.dll', buildReleaseDir) shutil.copy2(dllPath + '/librdkafkacpp.dll', buildReleaseDir) if not librdkafkaVersion.startswith('0.'): shutil.copy2(dllPath + '/libzstd.dll', buildReleaseDir) shutil.copy2(dllPath + '/msvcp120.dll', buildReleaseDir) # clean up os.remove(outputFile) shutil.rmtree(outputDir)