mirror of
https://github.com/servo/servo.git
synced 2025-06-30 12:03:38 +01:00
./mach run -n on mac os.
This commit is contained in:
parent
3c19cd49ec
commit
10c9128eb2
1 changed files with 55 additions and 17 deletions
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
from errno import ENOENT as NO_SUCH_FILE_OR_DIRECTORY
|
from errno import ENOENT as NO_SUCH_FILE_OR_DIRECTORY
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
import shutil
|
||||||
import gzip
|
import gzip
|
||||||
import itertools
|
import itertools
|
||||||
import locale
|
import locale
|
||||||
|
@ -403,6 +404,55 @@ class CommandBase(object):
|
||||||
" --release" if release else ""))
|
" --release" if release else ""))
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
def detach_volume(self, mounted_volume):
|
||||||
|
print("Detaching volume {}".format(mounted_volume))
|
||||||
|
try:
|
||||||
|
subprocess.check_call(['hdiutil', 'detach', mounted_volume])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print("Could not detach volume {} : {}".format(mounted_volume, e.returncode))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def detach_volume_if_attached(self, mounted_volume):
|
||||||
|
if os.path.exists(mounted_volume):
|
||||||
|
self.detach_volume(mounted_volume)
|
||||||
|
|
||||||
|
def mount_dmg(self, dmg_path):
|
||||||
|
print("Mounting dmg {}".format(dmg_path))
|
||||||
|
try:
|
||||||
|
subprocess.check_call(['hdiutil', 'attach', dmg_path])
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
print("Could not mount Servo dmg : {}".format(e.returncode))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def extract_nightly(self, nightlies_folder, destination_folder, destination_file):
|
||||||
|
print("Extracting to {} ...".format(destination_folder))
|
||||||
|
if is_macosx():
|
||||||
|
mounted_volume = path.join(path.sep, "Volumes", "Servo")
|
||||||
|
self.detach_volume_if_attached(mounted_volume)
|
||||||
|
self.mount_dmg(destination_file)
|
||||||
|
# Servo folder is always this one
|
||||||
|
servo_directory = path.join(path.sep, "Volumes", "Servo", "Servo.app", "Contents", "MacOS")
|
||||||
|
print("Copying files from {} to {}".format(servo_directory, destination_folder))
|
||||||
|
shutil.copytree(servo_directory, destination_folder)
|
||||||
|
self.detach_volume(mounted_volume)
|
||||||
|
else:
|
||||||
|
if is_windows():
|
||||||
|
command = 'msiexec /a {} /qn TARGETDIR={}'.format(
|
||||||
|
os.path.join(nightlies_folder, destination_file), destination_folder)
|
||||||
|
if subprocess.call(command, stdout=PIPE, stderr=PIPE) != 0:
|
||||||
|
print("Could not extract the nightly executable from the msi package.")
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
with tarfile.open(os.path.join(nightlies_folder, destination_file), "r") as tar:
|
||||||
|
tar.extractall(destination_folder)
|
||||||
|
|
||||||
|
def get_executable(self, destination_folder):
|
||||||
|
if is_windows():
|
||||||
|
return path.join(destination_folder, "PFiles", "Mozilla research", "Servo Tech Demo")
|
||||||
|
if is_linux:
|
||||||
|
return path.join(destination_folder, "servo", "servo")
|
||||||
|
return path.join(destination_folder, "servo")
|
||||||
|
|
||||||
def get_nightly_binary_path(self, nightly_date):
|
def get_nightly_binary_path(self, nightly_date):
|
||||||
if nightly_date is None:
|
if nightly_date is None:
|
||||||
return
|
return
|
||||||
|
@ -415,8 +465,7 @@ class CommandBase(object):
|
||||||
if is_windows():
|
if is_windows():
|
||||||
os_prefix = "windows-msvc"
|
os_prefix = "windows-msvc"
|
||||||
if is_macosx():
|
if is_macosx():
|
||||||
print("The nightly flag is not supported on mac yet.")
|
os_prefix = "mac"
|
||||||
sys.exit(1)
|
|
||||||
nightly_date = nightly_date.strip()
|
nightly_date = nightly_date.strip()
|
||||||
# Fetch the filename to download from the build list
|
# Fetch the filename to download from the build list
|
||||||
repository_index = NIGHTLY_REPOSITORY_URL + "?list-type=2&prefix=nightly"
|
repository_index = NIGHTLY_REPOSITORY_URL + "?list-type=2&prefix=nightly"
|
||||||
|
@ -467,23 +516,12 @@ class CommandBase(object):
|
||||||
|
|
||||||
# Extract the downloaded nightly version
|
# Extract the downloaded nightly version
|
||||||
if os.path.isdir(destination_folder):
|
if os.path.isdir(destination_folder):
|
||||||
print("The nightly file {} has already been extracted.".format(
|
print("The nightly folder {} has already been extracted.".format(
|
||||||
destination_folder))
|
destination_folder))
|
||||||
else:
|
else:
|
||||||
print("Extracting to {} ...".format(destination_folder))
|
self.extract_nightly(nightlies_folder, destination_folder, destination_file)
|
||||||
if is_windows():
|
|
||||||
command = 'msiexec /a {} /qn TARGETDIR={}'.format(
|
return self.get_executable(destination_folder)
|
||||||
os.path.join(nightlies_folder, destination_file), destination_folder)
|
|
||||||
if subprocess.call(command, stdout=PIPE, stderr=PIPE) != 0:
|
|
||||||
print("Could not extract the nightly executable from the msi package.")
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
with tarfile.open(os.path.join(nightlies_folder, destination_file), "r") as tar:
|
|
||||||
tar.extractall(destination_folder)
|
|
||||||
bin_folder = path.join(destination_folder, "servo")
|
|
||||||
if is_windows():
|
|
||||||
bin_folder = path.join(destination_folder, "PFiles", "Mozilla research", "Servo Tech Demo")
|
|
||||||
return path.join(bin_folder, "servo{}".format(BIN_SUFFIX))
|
|
||||||
|
|
||||||
def needs_gstreamer_env(self, target):
|
def needs_gstreamer_env(self, target):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue