def __init__(self, path):
        self.path = path
        if ( not os.path.exists(path) ):
            raise Exception("Path does not exist:" + path)

        self.dependencies = []
        self.rpath_info = []

        proc = Process.run(['otool', '-L', self.path], os.getcwd())

        while proc.poll() is None:
            line = proc.stdout.readline()
            if line:
                DylibLinkInfoExternal.add_dependency_line(self.dependencies, line)

        line = proc.stdout.readline()
        while( line ):
            DylibLinkInfoExternal.add_dependency_line(self.dependencies, line)
            line = proc.stdout.readline()

        proc = Process.run(['otool', '-l', self.path], os.getcwd())

        while proc.poll() is None:
            line = proc.stdout.readline()
            if line:
                self.add_rpath_line(line)

        line = proc.stdout.readline()
        while( line ):
            self.add_rpath_line(line)
            line = proc.stdout.readline()
Beispiel #2
0
    def __call__(self, sourcedir, releasedir, environment = os.environ):
        start = time.time()
        proc = Process.run([self.makecommand] + self.options, self.run_dir(releasedir), environment)
        Process.trace('MAKE: ', proc, end='')
        end = time.time()

        print('Make - Time Elapsed:' + str(end - start))
    def __call__(self, sourcedir, releasedir, environment = os.environ):
        deploy_to = self.run_dir(releasedir)
        if self.deploy_path:
            deploy_to = os.path.join(deploy_to, self.deploy_path)

        if not 'LIVEDOC' in os.environ:
            print("Warning!: 'LIVEDOC' environment variable not set. Skipping documentation.")
            return

        proc = Process.run(['node', os.environ['LIVEDOC'], '--deploy', deploy_to, os.path.abspath(sourcedir)], os.path.dirname(os.environ['LIVEDOC']), environment)
        Process.trace('LIVEDOC: ', proc, end='')
    def change_dependency(self, old, new):
        for index, dep in enumerate(self.dependencies):
            if dep == old:
                Process.back_tick(
                    ['install_name_tool', '-change', dep, new, self.path], 
                    os.getcwd()
                )
                self.dependencies[index] = new
                return True

        return False
    def __call__(self, sourcedir, releasedir, environment = os.environ):
        for key, value in self.options.items():
            if not os.path.isabs(key):
                key = os.path.join(self.run_dir(releasedir), key)

            entries = FileSystem.listEntries(key)
            for entry in entries:
                if not os.path.islink(entry):
                    for rpath in value:
                        intproc = Process.run(
                            ['install_name_tool', '-add_rpath', rpath, entry], 
                            self.run_dir(releasedir)
                        )
                        Process.trace('Dylib AddRPath: ', intproc)
                        print("Dylib Added RPath: " + entry + " -> " + rpath)
    def __call__(self, sourcedir, releasedir, environment=os.environ):
        for key, value in self.options.items():
            if not os.path.isabs(key):
                key = os.path.join(self.run_dir(releasedir), key)

            log = ''

            entries = FileSystem.listEntries(key)
            for entry in entries:
                if not os.path.islink(entry):
                    for rpath in value:
                        intproc = Process.run(
                            ['install_name_tool', '-add_rpath', rpath, entry],
                            self.run_dir(releasedir))
                        Process.trace('Dylib AddRPath: ', intproc)
                        log += "Dylib Added RPath: " + entry + " -> " + rpath + '; '

            print(log)
    def __call__(self, sourcedir, releasedir, environment = os.environ):
        for key, value in self.options.items():
            if not os.path.isabs(key):
                key = os.path.join(self.run_dir(releasedir), key)

            proc = Process.run(['otool', '-L', key], self.run_dir(releasedir))
            collect = []

            while proc.poll() is None:
                line = proc.stdout.readline()
                if line:
                    ReleaseDylibRelink.addLine(collect, line)

            line = proc.stdout.readline()
            while( line ):
                ReleaseDylibRelink.addLine(collect, line)
                line = proc.stdout.readline()

            header_was_printed = False

            for l in collect:
                for liboldpattern, libnewvalue in value.items():
                    if ( fnmatch.fnmatch(l, liboldpattern) ):
                        libname = l
                        libnameidx = l.rfind('/')
                        if libnameidx != -1:
                            libname = l[libnameidx:]
                        
                        if libnewvalue == '-':
                            libnewvalue = libname
                        elif libnewvalue.endswith('/-'):
                            libnewvalue = libnewvalue[0:-2] + libname

                        if not header_was_printed:
                            print('Dylib: ' + key + ':')
                            header_was_printed = True
                        print('Dylib:    ' + l + ' -> ' + libnewvalue)

                        # install_name_tool -change /usr/local/opt/opencv/lib/libopencv_core.3.3.dylib @rpath/OpenCV.framework/Libraries/libopencv_core.3.3.dylib liblcvcore.dylib
                        intproc = Process.run(
                            ['install_name_tool', '-change', l, libnewvalue, key], 
                            self.run_dir(releasedir)
                        )
                        Process.trace('Dylib Link: ', intproc)
    def __call__(self, sourcedir, releasedir, environment=os.environ):
        for key, value in self.options.items():
            if not os.path.isabs(key):
                key = os.path.join(self.run_dir(releasedir), key)

            proc = Process.run(['otool', '-L', key], self.run_dir(releasedir))
            collect = []

            while proc.poll() is None:
                line = proc.stdout.readline()
                if line:
                    ReleaseDylibRelink.addLine(collect, line)

            line = proc.stdout.readline()
            while (line):
                ReleaseDylibRelink.addLine(collect, line)
                line = proc.stdout.readline()

            header_was_printed = False

            for l in collect:
                for liboldpattern, libnewvalue in value.items():
                    if (fnmatch.fnmatch(l, liboldpattern)):
                        libname = l
                        libnameidx = l.rfind('/')
                        if libnameidx != -1:
                            libname = l[libnameidx:]

                        if libnewvalue == '-':
                            libnewvalue = libname
                        elif libnewvalue.endswith('/-'):
                            libnewvalue = libnewvalue[0:-2] + libname

                        if not header_was_printed:
                            print('Dylib: ' + key + ':')
                            header_was_printed = True
                        print('Dylib:    ' + l + ' -> ' + libnewvalue)

                        # install_name_tool -change /usr/local/opt/opencv/lib/libopencv_core.3.3.dylib @rpath/OpenCV.framework/Libraries/libopencv_core.3.3.dylib liblcvcore.dylib
                        intproc = Process.run([
                            'install_name_tool', '-change', l, libnewvalue, key
                        ], self.run_dir(releasedir))
                        Process.trace('Dylib Link: ', intproc)
    def change_id(self, old, new):
        for index, dep in enumerate(self.dependencies):
            if dep == old:
                changeproc = Process.run(
                    ['install_name_tool', '-id', dep, new, self.path], 
                    os.getcwd()
                )
                changeproc.wait()

                self.dependencies[index] = new
                return True

        return False
    def change_dependencies(self, structure):
        args = ['install_name_tool', ]
        for old, new in structure.items():
            for index, dep in enumerate(self.dependencies):
                if dep == old:
                    args.append('-change')
                    args.append(dep)
                    args.append(new)
                    self.dependencies[index] = new

        args.append(self.path)
        changeproc = Process.run(args, os.getcwd())
        changeproc.wait()

        return True
Beispiel #11
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     proc = Process.run([self.makecommand] + self.options, self.run_dir(releasedir), environment)
     Process.trace('MAKE: ', proc, end='')
Beispiel #12
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     if platform.system().lower() == 'windows':
         VSEnvironment.setupenv(140, 'x86_amd64')
     proc = Process.run([self.qmakecommand] + self.options + [os.path.abspath(sourcedir)], self.run_dir(releasedir), environment)
     Process.trace('QMAKE: ', proc, end='')
Beispiel #13
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     print('RUN:' + str(self.options))
     proc = Process.run([] + self.options, self.run_dir(releasedir), environment)
     Process.trace('RUN: ', proc, end='')
Beispiel #14
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     if platform.system().lower() == 'windows':
         VSEnvironment.setupenv(142, 'x86_amd64')
     proc = Process.run([self.qmakecommand] + self.options + [os.path.abspath(sourcedir)], self.run_dir(releasedir), environment)
     Process.trace('QMAKE: ', proc, end='')
Beispiel #15
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     VSEnvironment.setupenv(142, 'x86_amd64')
     proc = Process.run([self.makecommand] + self.options, self.run_dir(releasedir), environment)
     Process.trace('MAKE: ', proc, end='')
Beispiel #16
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     print('RUN:' + str(self.options))
     proc = Process.run([] + self.options, self.run_dir(releasedir), environment)
     Process.trace('RUN: ', proc, end='')
 def add_rpath(self, path):
     Process.back_tick(
         ['install_name_tool', '-add_rpath', path, self.path], 
         os.getcwd()
     )
     return True
Beispiel #18
0
 def __call__(self, sourcedir, releasedir, environment = os.environ):
     VSEnvironment.setupenv(140, 'x86_amd64')
     proc = Process.run([self.makecommand] + self.options, self.run_dir(releasedir), environment)
     Process.trace('MAKE: ', proc, end='')