Skip to content
Permalink
Browse files

Stop segfaulting at the end of mach bootstrap

`mach bootstrap` will finish succesfully,
but then segfault inside glibc while exiting.
It seems to have to do with the MarkupSafe library used by Mako;
delaying the Mako import from the top level to inside functions where it
is used avoids the problem.
(It seems to interact with the call to pip to install the Salt
requirements in the virtualenv, as commenting that pip call out
separately will also fix the segfault.)

Also, use the Mako installed in the Python virtualenv while running
packaging commands (instead of the one from the bundled zip file),
and cleanup imports in the package_commands.py file.
  • Loading branch information
aneeshusa committed Apr 18, 2017
1 parent c23b753 commit 0730888fbe26c133c3c9e8b013a46c2cd5e59a8c
Showing with 7 additions and 11 deletions.
  1. +7 −11 python/servo/package_commands.py
@@ -9,36 +9,30 @@

from __future__ import print_function, unicode_literals

import sys
import os.path as path
sys.path.append(path.join(path.dirname(sys.argv[0]), "components", "style", "properties", "Mako-0.9.1.zip"))

import json
import os
import os.path as path
import shutil
import subprocess
import mako.template

from mach.registrar import Registrar

from mach.decorators import (
CommandArgument,
CommandProvider,
Command,
)

from mako.template import Template
from mach.registrar import Registrar
# Note: mako cannot be imported at the top level because it breaks mach bootstrap

from servo.command_base import (
archive_deterministically,
BuildNotFound,
cd,
CommandBase,
find_dep_path_newest,
is_macosx,
is_windows,
get_browserhtml_path,
)
from servo.command_base import find_dep_path_newest


def delete(path):
@@ -221,6 +215,7 @@ def package(self, release=False, dev=False, android=None, debug=False, debugger=
raise Exception("Error occurred when getting Servo version: " + stderr)
version = "Nightly version: " + version

import mako.template
template_path = path.join(dir_to_resources, 'Credits.rtf.mako')
credits_path = path.join(dir_to_resources, 'Credits.rtf')
with open(template_path) as template_file:
@@ -299,8 +294,9 @@ def package(self, release=False, dev=False, android=None, debug=False, debugger=
change_prefs(dir_to_resources, "windows")

# generate Servo.wxs
import mako.template
template_path = path.join(dir_to_root, "support", "windows", "Servo.wxs.mako")
template = Template(open(template_path).read())
template = mako.template.Template(open(template_path).read())
wxs_path = path.join(dir_to_msi, "Servo.wxs")
open(wxs_path, "w").write(template.render(
exe_path=target_dir,

0 comments on commit 0730888

Please sign in to comment.
You can’t perform that action at this time.