Created
December 13, 2018 11:57
-
-
Save exjam/9d01d6afac4703a210062fc7778c7c18 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from conans import ConanFile | |
import sys | |
# Thanks stackoverflow: https://stackoverflow.com/a/3041990 | |
def query_yes_no(question, default="yes"): | |
"""Ask a yes/no question via raw_input() and return their answer. | |
"question" is a string that is presented to the user. | |
"default" is the presumed answer if the user just hits <Enter>. | |
It must be "yes" (the default), "no" or None (meaning | |
an answer is required of the user). | |
The "answer" return value is True for "yes" or False for "no". | |
""" | |
valid = {"yes": True, "y": True, "ye": True, | |
"no": False, "n": False} | |
if default is None: | |
prompt = " [y/n] " | |
elif default == "yes": | |
prompt = " [Y/n] " | |
elif default == "no": | |
prompt = " [y/N] " | |
else: | |
raise ValueError("invalid default answer: '%s'" % default) | |
while True: | |
sys.stdout.write(question + prompt) | |
choice = raw_input().lower() | |
if default is not None and choice == '': | |
return valid[default] | |
elif choice in valid: | |
return valid[choice] | |
else: | |
sys.stdout.write("Please respond with 'yes' or 'no' " | |
"(or 'y' or 'n').\n") | |
class DecafConan(ConanFile): | |
settings = 'os' | |
options = { | |
'accept_defaults': [True, False], | |
'with_ffmpeg': [True, False], | |
'with_minimal_ffmpeg': [True, False], | |
} | |
default_options = { | |
'accept_defaults': False, | |
'with_ffmpeg': False, | |
'with_minimal_ffmpeg': False, | |
'ffmpeg:x264': True, | |
} | |
def configure(self): | |
# with_minimal_ffmpeg implies with_ffmpeg | |
if self.options.with_minimal_ffmpeg: | |
self.options.with_ffmpeg = True | |
# If minimal_ffmpeg was set then turn off all ffmpeg dependencies other | |
# than our required x264 | |
if self.options.with_minimal_ffmpeg: | |
ffmpeg_options = self.options.deps_package_values['ffmpeg'] | |
ffmpeg_options.add('bzlib=False') | |
ffmpeg_options.add('fdk_aac=False') | |
ffmpeg_options.add('freetype=False') | |
ffmpeg_options.add('iconv=False') | |
ffmpeg_options.add('lzma=False') | |
ffmpeg_options.add('mp3lame=False') | |
ffmpeg_options.add('openh264=False') | |
ffmpeg_options.add('openjpeg=False') | |
ffmpeg_options.add('opus=False') | |
ffmpeg_options.add('postproc=False') | |
ffmpeg_options.add('sdl2=False') | |
ffmpeg_options.add('vorbis=False') | |
ffmpeg_options.add('vpx=False') | |
ffmpeg_options.add('webp=False') | |
ffmpeg_options.add('x265=False') | |
ffmpeg_options.add('zlib=False') | |
ffmpeg_options.add('zmq=False') | |
# Update ffmpeg OS specific settings | |
if self.settings.os == "Linux": | |
ffmpeg_options.add('vaapi=False') | |
ffmpeg_options.add('vdpau=False') | |
ffmpeg_options.add('xcb=False') | |
ffmpeg_options.add('alsa=False') | |
ffmpeg_options.add('pulse=False') | |
if self.settings.os == "Macos": | |
ffmpeg_options.add('appkit=False') | |
ffmpeg_options.add('avfoundation=False') | |
ffmpeg_options.add('coreimage=False') | |
ffmpeg_options.add('audiotoolbox=False') | |
ffmpeg_options.add('videotoolbox=False') | |
ffmpeg_options.add('securetransport=False') | |
if self.settings.os == "Windows": | |
ffmpeg_options.add('qsv=False') | |
self.options.deps_package_values['ffmpeg'] = ffmpeg_options | |
def requirements(self): | |
dependency_list = [ | |
('boost/1.68.0@conan/stable', 'yes'), | |
('Catch2/2.5.0@catchorg/stable', 'yes'), | |
('cereal/1.2.2@conan/stable', 'yes'), | |
('ffmpeg/4.0.2@bincrafters/stable', 'yes' if self.options.with_ffmpeg else 'no'), | |
('fmt/5.2.1@bincrafters/stable', 'yes'), | |
('imgui/1.63@bincrafters/stable', 'yes'), | |
('libcurl/7.61.1@bincrafters/stable', 'yes'), | |
('OpenSSL/1.0.2n@conan/stable', 'yes'), | |
('pugixml/1.9@bincrafters/stable', 'yes'), | |
('sdl2/2.0.9@bincrafters/stable', 'yes'), | |
('spdlog/1.2.1@bincrafters/stable', 'yes'), | |
('zlib/1.2.11@conan/stable','yes') | |
] | |
print 'Default enabled dependencies:' | |
for dependency, default in dependency_list: | |
if default == 'yes': | |
print "%s" % (dependency) | |
print '' | |
print 'Default disabled dependencies:' | |
for dependency, default in dependency_list: | |
if default == 'no': | |
print "%s" % (dependency) | |
print '' | |
accept_defaults = self.options.accept_defaults | |
if not accept_defaults: | |
accept_defaults = not query_yes_no('Customise which dependencies to acquire from Conan?', default='no') | |
for dependency, default in dependency_list: | |
if accept_defaults or query_yes_no(dependency, default=default): | |
self.requires(dependency) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment