# -*- python -*- # ex: set syntax=python: import os.path import buildbot from buildbot.changes.pb import * from buildbot.process import step, factory from buildbot.status import html s = factory.s c = BuildmasterConfig = {} # Defining the Project c['projectName'] = "Zoy Buildbot" c['projectURL'] = "http://zoy.org/" c['buildbotURL'] = "http://zoy.org:8010/" # Status - network from buildbot.status import words from buildbot.status import mail c['slavePortnum'] = 9989 c['status'] = [] c['status'].append(html.Waterfall(http_port = 8010, robots_txt = "robots.txt", css = "main.css")) # Bots and passwords execfile( "bots.cfg" ) # Change sources c['sources'] = [buildbot.changes.pb.PBChangeSource()] # Schedulers - require a patched svn_buildbot.py to use the /trunk hack from buildbot import scheduler test_libcaca = scheduler.Scheduler("test_libcaca", "libcaca/trunk", 0, ["libcaca i386-sid"]) full_libcaca = scheduler.Dependent("full_libcaca", test_libcaca, ["libcaca amd64-sid", "libcaca powerpc-sid", # "libcaca i386-etch", # "libcaca amd64-etch", "libcaca i586-win32", "libcaca i386-dos", "libcaca i386-kernel"]) test_toilet = scheduler.Scheduler("test_toilet", "toilet/trunk", 0, ["toilet i386-sid"]) full_toilet = scheduler.Dependent("full_toilet", test_toilet, ["toilet amd64-sid", "toilet powerpc-sid", # "toilet i386-etch", # "toilet amd64-etch" ]) test_cacamoo = scheduler.Scheduler("test_cacamoo", "cacamoo/trunk", 0, ["cacamoo i386-sid"]) full_cacamoo = scheduler.Dependent("full_cacamoo", test_cacamoo, ["cacamoo amd64-sid", "cacamoo powerpc-sid", # "cacamoo i386-etch", # "cacamoo amd64-etch" ]) test_cacatris = scheduler.Scheduler("test_cacatris", "cacatris/trunk", 0, ["cacatris i386-sid"]) full_cacatris = scheduler.Dependent("full_cacatris", test_cacatris, ["cacatris amd64-sid", "cacatris powerpc-sid", # "cacatris i386-etch", # "cacatris amd64-etch" ]) test_ttyvaders = scheduler.Scheduler("test_ttyvaders", "ttyvaders/trunk", 0, ["ttyvaders i386-sid"]) full_ttyvaders = scheduler.Dependent("full_ttyvaders", test_ttyvaders, ["ttyvaders amd64-sid", "ttyvaders powerpc-sid", # "ttyvaders i386-etch", # "ttyvaders amd64-etch" ]) test_elk = scheduler.Scheduler("test_elk", "elk/trunk", 0, ["elk i386-sid"]) full_elk = scheduler.Dependent("full_elk", test_elk, ["elk amd64-sid", "elk powerpc-sid", "elk i586-win32", # "elk i386-etch", # "elk amd64-etch" ]) test_liba52 = scheduler.Scheduler("test_liba52", "liba52/trunk", 0, ["liba52 i386-sid"]) full_liba52 = scheduler.Dependent("full_liba52", test_liba52, ["liba52 amd64-sid", "liba52 powerpc-sid", "liba52 i586-win32", ]) test_libdca = scheduler.Scheduler("test_libdca", "libdca/trunk", 0, ["libdca i386-sid"]) full_libdca = scheduler.Dependent("full_libdca", test_libdca, ["libdca amd64-sid", "libdca powerpc-sid", "libdca i586-win32", ]) test_libdvbpsi = scheduler.Scheduler("test_libdvbpsi", "libdvbpsi/trunk", 0, ["libdvbpsi i386-sid"]) full_libdvbpsi = scheduler.Dependent("full_libdvbpsi", test_libdvbpsi, ["libdvbpsi amd64-sid", "libdvbpsi powerpc-sid", "libdvbpsi i586-win32", ]) test_libdvdcss = scheduler.Scheduler("test_libdvdcss", "libdvdcss/trunk", 0, ["libdvdcss i386-sid"]) full_libdvdcss = scheduler.Dependent("full_libdvdcss", test_libdvdcss, ["libdvdcss amd64-sid", "libdvdcss powerpc-sid", "libdvdcss i586-win32", ]) test_libmpeg2 = scheduler.Scheduler("test_libmpeg2", "libmpeg2/trunk", 0, ["libmpeg2 i386-sid"]) full_libmpeg2 = scheduler.Dependent("full_libmpeg2", test_libmpeg2, ["libmpeg2 amd64-sid", "libmpeg2 powerpc-sid", "libmpeg2 i586-win32", ]) test_x264 = scheduler.Scheduler("test_x264", "x264/trunk", 0, ["x264 i386-sid"]) full_x264 = scheduler.Dependent("full_x264", test_x264, ["x264 amd64-sid", "x264 powerpc-sid", "x264 i586-win32", ]) c['schedulers'] = [ test_libcaca, full_libcaca, test_toilet, full_toilet, test_cacamoo, full_cacamoo, test_cacatris, full_cacatris, test_ttyvaders, full_ttyvaders, test_elk, full_elk, test_liba52, full_liba52, test_libdca, full_libdca, test_libdvbpsi, full_libdvbpsi, test_libdvdcss, full_libdvdcss, test_libmpeg2, full_libmpeg2, test_x264, full_x264, ] # Step classes class Trunk(step.SVN): name = "Trunk" mode = "export" haltOnFailure = True class Bootstrap(step.ShellCommand): name = "Bootstrap" description = ["bootstrapping"] descriptionDone = ["bootstrap"] haltOnFailure = True class Configure(step.Configure): name = "Configure" haltOnFailure = True class Compile(step.Compile): name = "Compile" haltOnFailure = True class Distclean(step.ShellCommand): name = "Distclean" description = ["distcleaning"] descriptionDone = ["distclean"] haltOnFailure = True class Dist(step.ShellCommand): name = "Dist" description = ["making dist"] descriptionDone = ["dist"] haltOnFailure = True # Steps libcaca_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "libcaca/trunk") elk_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "elk/trunk") toilet_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "toilet/trunk") cacamoo_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "cacamoo/trunk") cacatris_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "cacatris/trunk") ttyvaders_trunk = s(Trunk, baseURL = "svn://svn.zoy.org/", defaultBranch = "ttyvaders/trunk") liba52_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "liba52/trunk") libdca_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "libdca/trunk") libdvbpsi_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "libdvbpsi/trunk") libdvdcss_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "libdvdcss/trunk") libdvdplay_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "libdvdplay/trunk") libmpeg2_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "libmpeg2/trunk") x264_trunk = s(Trunk, baseURL = "svn://svn.videolan.org/", defaultBranch = "x264/trunk") bootstrap = s(Bootstrap, command = "./bootstrap") bootstrap_sid = s(Bootstrap, command = "schroot -c sid ./bootstrap") bootstrap_sid_x86 = s(Bootstrap, command = "schroot -c sid-i386 ./bootstrap") bootstrap_etch = s(Bootstrap, command = "schroot -c etch ./bootstrap") bootstrap_etch_x86 = s(Bootstrap, command = "schroot -c etch-i386 ./bootstrap") configure = s(Configure) configure_sid = s(Configure, command = "schroot -c sid ./configure") configure_sid_x86 = s(Configure, command = "schroot -c sid-i386 ./configure") configure_etch = s(Configure, command = "schroot -c etch ./configure") configure_etch_x86 = s(Configure, command = "schroot -c etch-i386 ./configure") configure_win32 = s(Configure, command = "schroot -c sid-i386 -- ./configure --host=i586-mingw32msvc --target=i586-mingw32msvc") compile = s(Compile) compile_sid = s(Compile, command = "schroot -c sid make") compile_sid_x86 = s(Compile, command = "schroot -c sid-i386 make") compile_etch = s(Compile, command = "schroot -c etch make") compile_etch_x86 = s(Compile, command = "schroot -c etch-i386 make") compile_win32 = s(Compile, command = "schroot -c sid ./build-win32") compile_dos = s(Compile, command = "schroot -c sid-i386 ./build-dos") compile_kernel = s(Compile, command = "schroot -c sid-i386 ./build-kernel") distclean = s(Distclean, command = "make distclean") distclean_sid = s(Distclean, command = "schroot -c sid make distclean") distclean_sid_x86 = s(Distclean, command = "schroot -c sid-i386 make distclean") distclean_etch = s(Distclean, command = "schroot -c etch make distclean") distclean_etch_x86 = s(Distclean, command = "schroot -c etch-i386 make distclean") dist = s(Dist, command = "make dist") dist_sid = s(Dist, command = "schroot -c sid make dist") dist_etch = s(Dist, command = "schroot -c etch make dist") # Factories and Builders c['builders'] = [ { 'slavename': "poulet-builder", 'name': "libcaca i386-sid", 'builddir': "libcaca-i386-sid", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libcaca amd64-sid", 'builddir': "libcaca-amd64-sid", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "libcaca powerpc-sid", 'builddir': "libcaca-powerpc-sid", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap, configure, compile, distclean]) # }, { # 'slavename': "poulet-builder", # 'name': "libcaca i386-etch", 'builddir': "libcaca-i386-etch", # 'factory': factory.BuildFactory( # [libcaca_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "libcaca amd64-etch", 'builddir': "libcaca-amd64-etch", # 'factory': factory.BuildFactory( # [libcaca_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "libcaca i586-win32", 'builddir': "libcaca-i586-win32", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap_sid, compile_win32]) }, { 'slavename': "poulet-builder", 'name': "libcaca i386-dos", 'builddir': "libcaca-i386-dos", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap_sid_x86, compile_dos]) }, { 'slavename': "poulet-builder", 'name': "libcaca i386-kernel", 'builddir': "libcaca-i386-kernel", 'factory': factory.BuildFactory( [libcaca_trunk, bootstrap_sid_x86, compile_kernel]) }, { 'slavename': "poulet-builder", 'name': "toilet i386-sid", 'builddir': "toilet-i386-sid", 'factory': factory.BuildFactory( [toilet_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "toilet amd64-sid", 'builddir': "toilet-amd64-sid", 'factory': factory.BuildFactory( [toilet_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "toilet powerpc-sid", 'builddir': "toilet-powerpc-sid", 'factory': factory.BuildFactory( [toilet_trunk, bootstrap, configure, compile, distclean]) # }, { # 'slavename': "poulet-builder", # 'name': "toilet i386-etch", 'builddir': "toilet-i386-etch", # 'factory': factory.BuildFactory( # [toilet_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "toilet amd64-etch", 'builddir': "toilet-amd64-etch", # 'factory': factory.BuildFactory( # [toilet_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "cacamoo i386-sid", 'builddir': "cacamoo-i386-sid", 'factory': factory.BuildFactory( [cacamoo_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "cacamoo amd64-sid", 'builddir': "cacamoo-amd64-sid", 'factory': factory.BuildFactory( [cacamoo_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "cacamoo powerpc-sid", 'builddir': "cacamoo-powerpc-sid", 'factory': factory.BuildFactory( [cacamoo_trunk, bootstrap, configure, compile, distclean]) # }, { # 'slavename': "poulet-builder", # 'name': "cacamoo i386-etch", 'builddir': "cacamoo-i386-etch", # 'factory': factory.BuildFactory( # [cacamoo_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "cacamoo amd64-etch", 'builddir': "cacamoo-amd64-etch", # 'factory': factory.BuildFactory( # [cacamoo_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "cacatris i386-sid", 'builddir': "cacatris-i386-sid", 'factory': factory.BuildFactory( [cacatris_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "cacatris amd64-sid", 'builddir': "cacatris-amd64-sid", 'factory': factory.BuildFactory( [cacatris_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "cacatris powerpc-sid", 'builddir': "cacatris-powerpc-sid", 'factory': factory.BuildFactory( [cacatris_trunk, bootstrap, configure, compile, distclean]) # }, { # 'slavename': "poulet-builder", # 'name': "cacatris i386-etch", 'builddir': "cacatris-i386-etch", # 'factory': factory.BuildFactory( # [cacatris_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "cacatris amd64-etch", 'builddir': "cacatris-amd64-etch", # 'factory': factory.BuildFactory( # [cacatris_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "ttyvaders i386-sid", 'builddir': "ttyvaders-i386-sid", 'factory': factory.BuildFactory( [ttyvaders_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "ttyvaders amd64-sid", 'builddir': "ttyvaders-amd64-sid", 'factory': factory.BuildFactory( [ttyvaders_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "ttyvaders powerpc-sid", 'builddir': "ttyvaders-powerpc-sid", 'factory': factory.BuildFactory( [ttyvaders_trunk, bootstrap, configure, compile, distclean]) # }, { # 'slavename': "poulet-builder", # 'name': "ttyvaders i386-etch", 'builddir': "ttyvaders-i386-etch", # 'factory': factory.BuildFactory( # [ttyvaders_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "ttyvaders amd64-etch", 'builddir': "ttyvaders-amd64-etch", # 'factory': factory.BuildFactory( # [ttyvaders_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "elk i386-sid", 'builddir': "elk-i386-sid", 'factory': factory.BuildFactory( [elk_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "elk amd64-sid", 'builddir': "elk-amd64-sid", 'factory': factory.BuildFactory( [elk_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "elk powerpc-sid", 'builddir': "elk-powerpc-sid", 'factory': factory.BuildFactory( [elk_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "elk i586-win32", 'builddir': "elk-i586-win32", 'factory': factory.BuildFactory( [elk_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "elk i386-etch", 'builddir': "elk-i386-etch", # 'factory': factory.BuildFactory( # [elk_trunk, bootstrap_etch_x86, configure_etch_x86, compile_etch_x86, distclean_etch_x86]) # }, { # 'slavename': "poulet-builder", # 'name': "elk amd64-etch", 'builddir': "elk-amd64-etch", # 'factory': factory.BuildFactory( # [elk_trunk, bootstrap_etch, configure_etch, compile_etch, distclean_etch]) }, { 'slavename': "poulet-builder", 'name': "liba52 i386-sid", 'builddir': "liba52-i386-sid", 'factory': factory.BuildFactory( [liba52_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "liba52 amd64-sid", 'builddir': "liba52-amd64-sid", 'factory': factory.BuildFactory( [liba52_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "liba52 powerpc-sid", 'builddir': "liba52-powerpc-sid", 'factory': factory.BuildFactory( [liba52_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "liba52 i586-win32", 'builddir': "liba52-i586-win32", 'factory': factory.BuildFactory( [liba52_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdca i386-sid", 'builddir': "libdca-i386-sid", 'factory': factory.BuildFactory( [libdca_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdca amd64-sid", 'builddir': "libdca-amd64-sid", 'factory': factory.BuildFactory( [libdca_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "libdca powerpc-sid", 'builddir': "libdca-powerpc-sid", 'factory': factory.BuildFactory( [libdca_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "libdca i586-win32", 'builddir': "libdca-i586-win32", 'factory': factory.BuildFactory( [libdca_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdvbpsi i386-sid", 'builddir': "libdvbpsi-i386-sid", 'factory': factory.BuildFactory( [libdvbpsi_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdvbpsi amd64-sid", 'builddir': "libdvbpsi-amd64-sid", 'factory': factory.BuildFactory( [libdvbpsi_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "libdvbpsi powerpc-sid", 'builddir': "libdvbpsi-powerpc-sid", 'factory': factory.BuildFactory( [libdvbpsi_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "libdvbpsi i586-win32", 'builddir': "libdvbpsi-i586-win32", 'factory': factory.BuildFactory( [libdvbpsi_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdvdcss i386-sid", 'builddir': "libdvdcss-i386-sid", 'factory': factory.BuildFactory( [libdvdcss_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libdvdcss amd64-sid", 'builddir': "libdvdcss-amd64-sid", 'factory': factory.BuildFactory( [libdvdcss_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "libdvdcss powerpc-sid", 'builddir': "libdvdcss-powerpc-sid", 'factory': factory.BuildFactory( [libdvdcss_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "libdvdcss i586-win32", 'builddir': "libdvdcss-i586-win32", 'factory': factory.BuildFactory( [libdvdcss_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libmpeg2 i386-sid", 'builddir': "libmpeg2-i386-sid", 'factory': factory.BuildFactory( [libmpeg2_trunk, bootstrap_sid_x86, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "libmpeg2 amd64-sid", 'builddir': "libmpeg2-amd64-sid", 'factory': factory.BuildFactory( [libmpeg2_trunk, bootstrap_sid, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "libmpeg2 powerpc-sid", 'builddir': "libmpeg2-powerpc-sid", 'factory': factory.BuildFactory( [libmpeg2_trunk, bootstrap, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "libmpeg2 i586-win32", 'builddir': "libmpeg2-i586-win32", 'factory': factory.BuildFactory( [libmpeg2_trunk, bootstrap_sid_x86, configure_win32, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "x264 i386-sid", 'builddir': "x264-i386-sid", 'factory': factory.BuildFactory( [x264_trunk, configure_sid_x86, compile_sid_x86, distclean_sid_x86]) }, { 'slavename': "poulet-builder", 'name': "x264 amd64-sid", 'builddir': "x264-amd64-sid", 'factory': factory.BuildFactory( [x264_trunk, configure_sid, compile_sid, distclean_sid]) }, { 'slavename': "dindon-builder", 'name': "x264 powerpc-sid", 'builddir': "x264-powerpc-sid", 'factory': factory.BuildFactory( [x264_trunk, configure, compile, distclean]) }, { 'slavename': "poulet-builder", 'name': "x264 i586-win32", 'builddir': "x264-i586-win32", 'factory': factory.BuildFactory( [x264_trunk, configure_win32, compile_sid_x86, distclean_sid_x86]) } ]