blob: 2b0958acb0ff917212bd0e93d02d65744e8b7a1e [file] [log] [blame]
#! /usr/bin/env python
# encoding: utf-8
from waflib import Logs
from waflib.Configure import conf
@conf
def check_sparkle_base (self, *k, **kw):
self.check_cxx(framework_name="Sparkle", header_name=["Foundation/Foundation.h", "AppKit/AppKit.h"],
uselib_store='SPARKLE', define_name='HAVE_SPARKLE',
compile_filename='test.mm', use="FOUNDATION APPKIT",
*k,
**kw
)
@conf
def check_sparkle(self, *k, **kw):
try:
self.check_sparkle_base(*k, **kw)
except:
try:
# Try local path
# Logs.info("Check local version of Sparkle framework")
self.check_sparkle_base(cxxflags="-F%s/Frameworks/" % self.path.abspath(),
linkflags="-F%s/Frameworks/" % self.path.abspath())
except:
import urllib, subprocess, os, shutil
if not os.path.exists('osx/Frameworks/Sparkle.framework'):
# Download to local path and retry
Logs.info("Sparkle framework not found, trying to download it to 'build/'")
urllib.urlretrieve("https://github.com/sparkle-project/Sparkle/releases/download/1.7.1/Sparkle-1.7.1.zip", "build/Sparkle.zip")
if os.path.exists('build/Sparkle.zip'):
# try:
subprocess.check_call(['unzip', '-qq', 'build/Sparkle.zip', '-d', 'build/Sparkle'])
os.remove("build/Sparkle.zip")
if not os.path.exists("osx/Frameworks"):
os.mkdir("osx/Frameworks")
os.rename("build/Sparkle/Sparkle.framework", "osx/Frameworks/Sparkle.framework")
shutil.rmtree("build/Sparkle", ignore_errors=True)
self.check_sparkle_base(cxxflags="-F%s/Frameworks/" % self.path.abspath(),
linkflags="-F%s/Frameworks/" % self.path.abspath())
# except subprocess.CalledProcessError as e:
# self.fatal("Cannot find Sparkle framework. Auto download failed: '%s' returned %s" %(' '.join(e.cmd), e.returncode))
# except:
# self.fatal("Unknown Error happened when auto downloading Sparkle framework")
def configure(conf):
conf.check_sparkle()