def main(buildingsite, action=None):

    ret = 0

    r = wayround_org.aipsetup.build.build_script_wrap(
        buildingsite,
        # ['extract', 'exctract_install-tl', 'configure',
        #  'build', 'distribute', 'install-tl'],
        ['extract', 'configure', 'build', 'distribute'],
        action,
        "help"
        )

    if not isinstance(r, tuple):
        logging.error("Error")
        ret = r

    else:

        pkg_info, actions = r

        src_dir = wayround_org.aipsetup.build.getDIR_SOURCE(buildingsite)

        tar_dir = wayround_org.aipsetup.build.getDIR_TARBALL(buildingsite)

        dst_dir = wayround_org.aipsetup.build.getDIR_DESTDIR(buildingsite)

        install_tl_dir = wayround_org.utils.path.join(buildingsite, 'install-tl')

        script = wayround_org.utils.path.join(install_tl_dir, 'install-tl')

        separate_build_dir = True

        source_configure_reldir = '.'

        usr = pkg_info['constitution']['paths']['usr']

        tex_live_dir = wayround_org.utils.path.join(usr, 'lib', 'texlive')

        dst_tex_live_dir = wayround_org.utils.path.join(dst_dir, 'usr', 'lib', 'texlive')

        dst_tex_live_bin = wayround_org.utils.path.join(dst_tex_live_dir, 'bin')

        if 'extract' in actions:
            if os.path.isdir(src_dir):
                logging.info("cleaningup source dir")
                wayround_org.utils.file.cleanup_dir(src_dir)

            ret = autotools.extract_high(
                buildingsite,
                pkg_info['pkg_info']['basename'],
                unwrap_dir=True,
                rename_dir=False
                )

        if 'exctract_install-tl' in actions and ret == 0:
            tl_install = None
            lst = os.listdir(tar_dir)

            for i in lst:
                if i.startswith('install-tl'):
                    tl_install = i

            if not tl_install:
                logging.error("install-tl archive not found")

            log = wayround_org.utils.log.Log(
                wayround_org.aipsetup.build.getDIR_BUILD_LOGS(buildingsite),
                'extract'
                )

            tmpdir = tempfile.mkdtemp(
                dir=wayround_org.aipsetup.build.getDIR_TEMP(buildingsite)
                )

            ret = wayround_org.utils.archive.extract_low(
                log,
                tmpdir,
                wayround_org.utils.path.join(tar_dir, tl_install),
                outdir=install_tl_dir,
                unwrap_dir=True,
                rename_dir=False
                )

            log.close()

        if 'configure' in actions and ret == 0:

            ret = autotools.configure_high(
                buildingsite,
                options=[
                    '--prefix=' + tex_live_dir,
                    '--sysconfdir=' +
                        pkg_info['constitution']['paths']['config'],
                    '--localstatedir=' +
                        pkg_info['constitution']['paths']['var'],
                    '--enable-shared',
                    '--disable-native-texlive-build',
                    '--host=' + pkg_info['constitution']['host'],
                    '--build=' + pkg_info['constitution']['build'],
#                    '--target=' + pkg_info['constitution']['target']
                    ],
                arguments=[],
                environment={},
                environment_mode='copy',
                source_configure_reldir=source_configure_reldir,
                use_separate_buildding_dir=separate_build_dir,
                script_name='configure',
                run_script_not_bash=False,
                relative_call=False
                )

        if 'build' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[],
                environment={},
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

        if 'distribute' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[
                    'install',
                    'DESTDIR=' + dst_dir
                    ],
                environment={},
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

            p_dir = wayround_org.utils.path.join(dst_dir, 'etc', 'profile.d', 'SET')

            if not os.path.exists(p_dir):
                os.makedirs(p_dir)

            p_file = wayround_org.utils.path.join(p_dir, '009.texlive')
            f = open(p_file, 'w')
            f.write(
                """\
#!/bin/bash

TEXPATH={prefix}

export PATH="$PATH:$TEXPATH/bin"

if [ -n "$LD_LIBRARY_PATH" ]
then
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TEXPATH/lib"
else
    export LD_LIBRARY_PATH="$TEXPATH/lib"
fi

""".format(host=pkg_info['constitution']['host'], prefix=tex_live_dir)
                )
            f.close()

        if 'install-tl' in actions and ret == 0:
            logging.info(
                "Starting start-tl script in dir `{}'".format(install_tl_dir)
                )
            p = subprocess.Popen(
                [
                    script,
                    '-repository='
                    'http://mirrors.wayround.org/www.ctan.org'
                    '/tex/systems/texlive/tlnet/tlpkg',
                    '-custom-bin={dst_tex_live_bin}'.format(
                        host=pkg_info['constitution']['paths']['usr'],
                        dst_tex_live_bin=dst_tex_live_bin
                        )
                    ],
                env={
                        'TEXLIVE_INSTALL_PREFIX': dst_tex_live_dir,
                        'TEXLIVE_INSTALL_TEXDIR': dst_tex_live_dir
                        },
                cwd=install_tl_dir
                )

            ret = p.wait()

    return ret
示例#2
0
    def builder_action_configure(self, called_as, log):

        log.info(
            "crossbuild?: {}, crossbuilder?: {}".format(
                self.get_is_crossbuild(),
                self.get_is_crossbuilder()
                )
            )

        self.check_deprecated_methods(called_as, log)

        envs = {}
        if hasattr(self, 'builder_action_configure_define_environment'):
            envs = self.builder_action_configure_define_environment(
                called_as,
                log
                )

        opts = []
        if hasattr(self, 'builder_action_configure_define_opts'):
            opts = self.builder_action_configure_define_opts(
                called_as,
                log
                )

        args = []
        if hasattr(self, 'builder_action_configure_define_args'):
            args = self.builder_action_configure_define_args(
                called_as,
                log
                )

        ret = autotools.configure_high(
            self.buildingsite_path,
            log=log,
            options=opts,
            arguments=args,
            environment=envs,
            environment_mode='copy',
            source_configure_reldir=self.source_configure_reldir,
            use_separate_buildding_dir=self.separate_build_dir,
            script_name=self.builder_action_configure_define_script_name(
                called_as,
                log
                ),
            run_script_not_bash=(
                self.builder_action_configure_define_run_script_not_bash(
                    called_as,
                    log
                    )
                ),
            relative_call=(
                self.builder_action_configure_define_relative_call(
                    called_as,
                    log
                    )
                )
            )

        #sleeptime = 5
        #log.info("sleep: \033[0;1m{}\033[0m seconds".format(sleeptime))
        # time.sleep(sleeptime)
        return ret
def main(buildingsite, action=None):

    ret = 0

    r = wayround_org.aipsetup.build.build_script_wrap(
        buildingsite,
        ['extract', 'configure', 'build', 'distribute'],
        action,
        "help"
        )

    if not isinstance(r, tuple):
        logging.error("Error")
        ret = r

    else:

        pkg_info, actions = r

        src_dir = wayround_org.aipsetup.build.getDIR_SOURCE(buildingsite)

        dst_dir = wayround_org.aipsetup.build.getDIR_DESTDIR(buildingsite)

        separate_build_dir = False

        source_configure_reldir = '.'

        if 'extract' in actions:
            if os.path.isdir(src_dir):
                logging.info("cleaningup source dir")
                wayround_org.utils.file.cleanup_dir(src_dir)
            ret = autotools.extract_high(
                buildingsite,
                pkg_info['pkg_info']['basename'],
                unwrap_dir=True,
                rename_dir=False
                )

        if 'configure' in actions and ret == 0:
            ret = autotools.configure_high(
                buildingsite,
                options=[
                    '--with-botan-config=/usr/bin/botan-config-1.10',
                    '--prefix=' + pkg_info['constitution']['paths']['usr'],
                    '--mandir=' + pkg_info['constitution']['paths']['man'],
                    '--sysconfdir=' +
                        pkg_info['constitution']['paths']['config'],
                    '--localstatedir=' +
                        pkg_info['constitution']['paths']['var'],
                    '--enable-shared',
                    '--host=' + pkg_info['constitution']['host'],
                    '--build=' + pkg_info['constitution']['build'],
#                    '--target=' + pkg_info['constitution']['target']
                    ],
                arguments=[],
                environment={},
                environment_mode='copy',
                source_configure_reldir=source_configure_reldir,
                use_separate_buildding_dir=separate_build_dir,
                script_name='configure',
                run_script_not_bash=False,
                relative_call=False
                )

        if 'build' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[],
                environment={},
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

        if 'distribute' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[
                    'install',
                    'DESTDIR=' + dst_dir
                    ],
                environment={},
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

    return ret
def main(buildingsite, action=None):

    ret = 0

    r = wayround_org.aipsetup.build.build_script_wrap(
        buildingsite,
        ['extract', 'configure', 'build', 'distribute'],
        action,
        "help"
        )

    if not isinstance(r, tuple):
        logging.error("Error")
        ret = r

    else:

        pkg_info, actions = r

        tar_dir = wayround_org.aipsetup.build.getDIR_TARBALL(buildingsite)

        src_dir = wayround_org.aipsetup.build.getDIR_SOURCE(buildingsite)

        dst_dir = wayround_org.aipsetup.build.getDIR_DESTDIR(buildingsite)

        src_jdk_dir = wayround_org.utils.path.join(src_dir, 'openjdk.build', 'j2sdk-image')

        java_exec = wayround_org.utils.path.join(src_jdk_dir, 'bin', 'java')

        java_dir = wayround_org.utils.path.join(dst_dir, 'usr', 'lib', 'java')

        etc_dir = wayround_org.utils.path.join(dst_dir, 'etc', 'profile.d', 'SET')

        java009 = wayround_org.utils.path.join(etc_dir, '009.java')

        classpath000 = wayround_org.utils.path.join(etc_dir, '000.classpath')

        separate_build_dir = False

        source_configure_reldir = '.'

        envi = copy.deepcopy(os.environ)
        if 'JAVA_HOME' in envi:
            del envi['JAVA_HOME']

        if 'extract' in actions:
            if os.path.isdir(src_dir):
                logging.info("cleaningup source dir")
                wayround_org.utils.file.cleanup_dir(src_dir)
            ret = autotools.extract_high(
                buildingsite,
                pkg_info['pkg_info']['basename'],
                unwrap_dir=True,
                rename_dir=False
                )

        if 'configure' in actions and ret == 0:

            ret = autotools.configure_high(
                buildingsite,
                options=[
                    # '--disable-tests',
                    # '--disable-jdk-tests',
                    # '--disable-langtools-tests',
                    # '--disable-hotspot-tests',
                    # '--disable-bootstrap',
                    # '--with-jdk-home=/home/agu/_sda3/_UNICORN/b2/java/jdk1.7.0_55',
                    '--enable-system-zlib',
                    '--enable-system-jpeg',
                    '--enable-system-png',
                    '--enable-system-gif',
                    '--enable-system-lcms',
                    '--enable-system-gtk',
                    '--enable-system-gio',
                    '--enable-system-fontconfig',

                    '--with-jdk-home=/usr/lib/java/jdk',
                    '--prefix=' + pkg_info['constitution']['paths']['usr'],
                    '--mandir=' + pkg_info['constitution']['paths']['man'],
                    '--sysconfdir=' +
                    pkg_info['constitution']['paths']['config'],
                    '--localstatedir=' +
                    pkg_info['constitution']['paths']['var'],
                    '--enable-shared',
                    '--host=' + pkg_info['constitution']['host'],
                    '--build=' + pkg_info['constitution']['build'],
                    # '--target=' + pkg_info['constitution']['target']
                    ],
                arguments=[],
                environment=envi,
                environment_mode='copy',
                source_configure_reldir=source_configure_reldir,
                use_separate_buildding_dir=separate_build_dir,
                script_name='configure',
                run_script_not_bash=False,
                relative_call=False
                )

        if 'build' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[],
                environment=envi,
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

        if 'distribute' in actions and ret == 0:

            ver = ''

            p = subprocess.Popen(
                [java_exec, '-version'],
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT
                )

            comm = p.communicate()

            stdou = comm[0]

            ver_str = str(stdou.splitlines()[0], encoding='utf-8')

            m = re.match('java version "(.*)"', ver_str)
            if not m:
                logging.error("Error getting version")
                ret = 10
            else:
                ver = m.group(1)

            teaname = 'icedtea-' + ver
            print(teaname)

            jdk_dir = wayround_org.utils.path.join(java_dir, teaname)

            os.makedirs(java_dir, exist_ok=True)

            wayround_org.utils.file.copytree(
                src_jdk_dir,
                jdk_dir,
                clear_before_copy=True,
                overwrite_files=True,
                dst_must_be_empty=False
                )

            for i in [
                    wayround_org.utils.path.join(java_dir, 'jre'),
                    wayround_org.utils.path.join(java_dir, 'jdk'),
                    wayround_org.utils.path.join(java_dir, 'java')
                    ]:

                if os.path.islink(i):
                    os.unlink(i)

                os.symlink(teaname, i)

            os.makedirs(etc_dir, exist_ok=True)

            fi = open(java009, 'w')

            fi.write(
                """\
#!/bin/bash
export JAVA_HOME=/usr/lib/java/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export MANPATH=$MANPATH:$JAVA_HOME/man
if [ "${#LD_LIBRARY_PATH}" -ne "0" ]; then
    LD_LIBRARY_PATH+=":"
fi
export LD_LIBRARY_PATH+="$JAVA_HOME/jre/lib/i386:$JAVA_HOME/jre/lib/i386/client"
"""
                )

            fi.close()

            fi = open(classpath000, 'w')
            fi.write(
                """\
#!/bin/bash
export CLASSPATH='/usr/lib/java/classpath/*'
"""
                )

            src_downs = glob.glob(src_dir + os.path.sep + '*.tar*')

            for i in src_downs:
                logging.info("Copying source {}".format(os.path.basename(i)))
                shutil.copyfile(i, tar_dir + os.path.sep + os.path.basename(i))

    return ret
示例#5
0
def main(buildingsite, action=None):

    ret = 0

    r = wayround_org.aipsetup.build.build_script_wrap(
        buildingsite,
        ['extract', 'configure', 'build', 'distribute'],
        action,
        "help"
        )

    if not isinstance(r, tuple):
        logging.error("Error")
        ret = r

    else:

        pkg_info, actions = r

        src_dir = wayround_org.aipsetup.build.getDIR_SOURCE(buildingsite)

        dst_dir = wayround_org.aipsetup.build.getDIR_DESTDIR(buildingsite)

        separate_build_dir = False

        source_configure_reldir = '.'

        if 'extract' in actions:
            if os.path.isdir(src_dir):
                logging.info("cleaningup source dir")
                wayround_org.utils.file.cleanup_dir(src_dir)
            ret = autotools.extract_high(
                buildingsite,
                pkg_info['pkg_info']['basename'],
                unwrap_dir=True,
                rename_dir=False
                )

        if 'configure' in actions and ret == 0:
            ret = autotools.configure_high(
                buildingsite,
                options=[],
                arguments=[],
                environment={},
                environment_mode='copy',
                source_configure_reldir=source_configure_reldir,
                use_separate_buildding_dir=separate_build_dir,
                script_name='configure',
                run_script_not_bash=False,
                relative_call=False
                )

        if 'build' in actions and ret == 0:
            ret = autotools.make_high(
                buildingsite,
                options=[],
                arguments=[],
                environment={},
                environment_mode='copy',
                use_separate_buildding_dir=separate_build_dir,
                source_configure_reldir=source_configure_reldir
                )

            if ret == 0:
                ret = autotools.make_high(
                    buildingsite,
                    options=[],
                    arguments=['shared'],
                    environment={},
                    environment_mode='copy',
                    use_separate_buildding_dir=separate_build_dir,
                    source_configure_reldir=source_configure_reldir
                    )

            if ret == 0:
                ret = autotools.make_high(
                    buildingsite,
                    options=[],
                    arguments=['static'],
                    environment={},
                    environment_mode='copy',
                    use_separate_buildding_dir=separate_build_dir,
                    source_configure_reldir=source_configure_reldir
                    )

        if 'distribute' in actions and ret == 0:

            dst_bin = wayround_org.utils.path.join(dst_dir, 'usr', 'bin')
            dst_lib = wayround_org.utils.path.join(dst_dir, 'usr', 'lib')
            dst_inc = wayround_org.utils.path.join(dst_dir, 'usr', 'include')
            dst_man1 = wayround_org.utils.path.join(dst_dir, 'usr', 'share', 'man', 'man1')
            dst_man3 = wayround_org.utils.path.join(dst_dir, 'usr', 'share', 'man', 'man3')

            for i in [dst_bin, dst_lib, dst_inc, dst_man1, dst_man3]:
                if not os.path.isdir(i):
                    os.makedirs(i)

            for i in ['dnsget', 'ex-rdns', 'rblcheck']:
                for j in ['', '_s']:
                    shutil.copy(
                        wayround_org.utils.path.join(src_dir, '{}{}'.format(i, j)),
                        dst_bin,
                        )

            for i in (
                glob.glob(wayround_org.utils.path.join(src_dir, '*.so*')) +
                glob.glob(wayround_org.utils.path.join(src_dir, '*.a'))
                ):

                b = os.path.basename(i)

                shutil.copy(
                    wayround_org.utils.path.join(src_dir, b),
                    dst_lib
                    )

            shutil.copy(
                wayround_org.utils.path.join(src_dir, 'udns.h'),
                dst_inc
                )

            for i in ['dnsget.1', 'rblcheck.1']:
                shutil.copy(
                    wayround_org.utils.path.join(src_dir, i),
                    dst_man1,
                    )

            for i in ['udns.3']:
                shutil.copy(
                    wayround_org.utils.path.join(src_dir, i),
                    dst_man3,
                    )

    return ret