summaryrefslogtreecommitdiffstats
path: root/bitbake/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/bin')
-rwxr-xr-xbitbake/bin/bitbake5
-rwxr-xr-xbitbake/bin/bitbake-diffsigs4
-rwxr-xr-xbitbake/bin/bitbake-dumpsig4
-rwxr-xr-xbitbake/bin/bitbake-layers19
-rwxr-xr-xbitbake/bin/bitbake-prserv2
-rwxr-xr-xbitbake/bin/bitbake-selftest2
-rwxr-xr-xbitbake/bin/bitbake-worker60
-rwxr-xr-xbitbake/bin/bitdoc2
-rwxr-xr-xbitbake/bin/image-writer8
-rwxr-xr-xbitbake/bin/toaster-eventreplay2
10 files changed, 59 insertions, 49 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index bba87b082c..9813a08483 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2# ex:ts=4:sw=4:sts=4:et 2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- 3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4# 4#
@@ -35,6 +35,9 @@ except RuntimeError as exc:
35from bb import cookerdata 35from bb import cookerdata
36from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException 36from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException
37 37
38if sys.getfilesystemencoding() != "utf-8":
39 sys.exit("Please use a locale setting which supports utf-8.\nPython can't change the filesystem locale after loading so we need a utf-8 when python starts or things won't work.")
40
38__version__ = "1.31.0" 41__version__ = "1.31.0"
39 42
40if __name__ == "__main__": 43if __name__ == "__main__":
diff --git a/bitbake/bin/bitbake-diffsigs b/bitbake/bin/bitbake-diffsigs
index 67c60dbb00..3b6ef8811c 100755
--- a/bitbake/bin/bitbake-diffsigs
+++ b/bitbake/bin/bitbake-diffsigs
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2 2
3# bitbake-diffsigs 3# bitbake-diffsigs
4# BitBake task signature data comparison utility 4# BitBake task signature data comparison utility
@@ -24,6 +24,7 @@ import warnings
24import fnmatch 24import fnmatch
25import optparse 25import optparse
26import logging 26import logging
27import pickle
27 28
28sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib')) 29sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
29 30
@@ -121,7 +122,6 @@ else:
121 if len(args) == 1: 122 if len(args) == 1:
122 parser.print_help() 123 parser.print_help()
123 else: 124 else:
124 import cPickle
125 try: 125 try:
126 if len(args) == 2: 126 if len(args) == 2:
127 output = bb.siggen.dump_sigfile(sys.argv[1]) 127 output = bb.siggen.dump_sigfile(sys.argv[1])
diff --git a/bitbake/bin/bitbake-dumpsig b/bitbake/bin/bitbake-dumpsig
index ffaed1f457..58ba1cad04 100755
--- a/bitbake/bin/bitbake-dumpsig
+++ b/bitbake/bin/bitbake-dumpsig
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2 2
3# bitbake-dumpsig 3# bitbake-dumpsig
4# BitBake task signature dump utility 4# BitBake task signature dump utility
@@ -23,6 +23,7 @@ import sys
23import warnings 23import warnings
24import optparse 24import optparse
25import logging 25import logging
26import pickle
26 27
27sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib')) 28sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(sys.argv[0])), 'lib'))
28 29
@@ -51,7 +52,6 @@ options, args = parser.parse_args(sys.argv)
51if len(args) == 1: 52if len(args) == 1:
52 parser.print_help() 53 parser.print_help()
53else: 54else:
54 import cPickle
55 try: 55 try:
56 output = bb.siggen.dump_sigfile(args[1]) 56 output = bb.siggen.dump_sigfile(args[1])
57 except IOError as e: 57 except IOError as e:
diff --git a/bitbake/bin/bitbake-layers b/bitbake/bin/bitbake-layers
index 8b17eb0696..9d397e93a2 100755
--- a/bitbake/bin/bitbake-layers
+++ b/bitbake/bin/bitbake-layers
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2 2
3# This script has subcommands which operate against your bitbake layers, either 3# This script has subcommands which operate against your bitbake layers, either
4# displaying useful information, or acting against them. 4# displaying useful information, or acting against them.
@@ -27,7 +27,7 @@ import fnmatch
27from collections import defaultdict 27from collections import defaultdict
28import argparse 28import argparse
29import re 29import re
30import httplib, urlparse, json 30import http.client, urllib.parse, json
31import subprocess 31import subprocess
32 32
33bindir = os.path.dirname(__file__) 33bindir = os.path.dirname(__file__)
@@ -68,7 +68,7 @@ class Commands():
68 self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split() 68 self.bblayers = (self.bbhandler.config_data.getVar('BBLAYERS', True) or "").split()
69 self.bbhandler.prepare(config_only) 69 self.bbhandler.prepare(config_only)
70 layerconfs = self.bbhandler.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.bbhandler.config_data) 70 layerconfs = self.bbhandler.config_data.varhistory.get_variable_items_files('BBFILE_COLLECTIONS', self.bbhandler.config_data)
71 self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.iteritems()} 71 self.bbfile_collections = {layer: os.path.dirname(os.path.dirname(path)) for layer, path in layerconfs.items()}
72 72
73 73
74 def do_show_layers(self, args): 74 def do_show_layers(self, args):
@@ -134,11 +134,11 @@ Removes the specified layer from bblayers.conf
134 def get_json_data(self, apiurl): 134 def get_json_data(self, apiurl):
135 proxy_settings = os.environ.get("http_proxy", None) 135 proxy_settings = os.environ.get("http_proxy", None)
136 conn = None 136 conn = None
137 _parsedurl = urlparse.urlparse(apiurl) 137 _parsedurl = urllib.parse.urlparse(apiurl)
138 path = _parsedurl.path 138 path = _parsedurl.path
139 query = _parsedurl.query 139 query = _parsedurl.query
140 def parse_url(url): 140 def parse_url(url):
141 parsedurl = urlparse.urlparse(url) 141 parsedurl = urllib.parse.urlparse(url)
142 if parsedurl.netloc[0] == '[': 142 if parsedurl.netloc[0] == '[':
143 host, port = parsedurl.netloc[1:].split(']', 1) 143 host, port = parsedurl.netloc[1:].split(']', 1)
144 if ':' in port: 144 if ':' in port:
@@ -155,11 +155,11 @@ Removes the specified layer from bblayers.conf
155 155
156 if proxy_settings is None: 156 if proxy_settings is None:
157 host, port = parse_url(apiurl) 157 host, port = parse_url(apiurl)
158 conn = httplib.HTTPConnection(host, port) 158 conn = http.client.HTTPConnection(host, port)
159 conn.request("GET", path + "?" + query) 159 conn.request("GET", path + "?" + query)
160 else: 160 else:
161 host, port = parse_url(proxy_settings) 161 host, port = parse_url(proxy_settings)
162 conn = httplib.HTTPConnection(host, port) 162 conn = http.client.HTTPConnection(host, port)
163 conn.request("GET", apiurl) 163 conn.request("GET", apiurl)
164 164
165 r = conn.getresponse() 165 r = conn.getresponse()
@@ -632,7 +632,7 @@ build results (as the layer priority order has effectively changed).
632 applied_appends = [] 632 applied_appends = []
633 for layer in layers: 633 for layer in layers:
634 overlayed = [] 634 overlayed = []
635 for f in self.bbhandler.cooker.collection.overlayed.iterkeys(): 635 for f in self.bbhandler.cooker.collection.overlayed.keys():
636 for of in self.bbhandler.cooker.collection.overlayed[f]: 636 for of in self.bbhandler.cooker.collection.overlayed[f]:
637 if of.startswith(layer): 637 if of.startswith(layer):
638 overlayed.append(of) 638 overlayed.append(of)
@@ -777,7 +777,7 @@ Lists recipes with the bbappends that apply to them as subitems.
777 777
778 def show_appends_for_skipped(self): 778 def show_appends_for_skipped(self):
779 filenames = [os.path.basename(f) 779 filenames = [os.path.basename(f)
780 for f in self.bbhandler.cooker.skiplist.iterkeys()] 780 for f in self.bbhandler.cooker.skiplist.keys()]
781 return self.show_appends_output(filenames, None, " (skipped)") 781 return self.show_appends_output(filenames, None, " (skipped)")
782 782
783 def show_appends_output(self, filenames, best_filename, name_suffix = ''): 783 def show_appends_output(self, filenames, best_filename, name_suffix = ''):
@@ -1006,6 +1006,7 @@ def main():
1006 parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true') 1006 parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
1007 parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true') 1007 parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true')
1008 subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>') 1008 subparsers = parser.add_subparsers(title='subcommands', metavar='<subcommand>')
1009 subparsers.required = True
1009 1010
1010 parser_show_layers = add_command('show-layers', cmds.do_show_layers) 1011 parser_show_layers = add_command('show-layers', cmds.do_show_layers)
1011 1012
diff --git a/bitbake/bin/bitbake-prserv b/bitbake/bin/bitbake-prserv
index 03821446b7..f38d2dd882 100755
--- a/bitbake/bin/bitbake-prserv
+++ b/bitbake/bin/bitbake-prserv
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2import os 2import os
3import sys,logging 3import sys,logging
4import optparse 4import optparse
diff --git a/bitbake/bin/bitbake-selftest b/bitbake/bin/bitbake-selftest
index 462eb1b2b4..1e6f35ef0c 100755
--- a/bitbake/bin/bitbake-selftest
+++ b/bitbake/bin/bitbake-selftest
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2# 2#
3# Copyright (C) 2012 Richard Purdie 3# Copyright (C) 2012 Richard Purdie
4# 4#
diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker
index 5fcffddd4d..dfce68d0c9 100755
--- a/bitbake/bin/bitbake-worker
+++ b/bitbake/bin/bitbake-worker
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2 2
3import os 3import os
4import sys 4import sys
@@ -10,8 +10,12 @@ import bb
10import select 10import select
11import errno 11import errno
12import signal 12import signal
13import pickle
13from multiprocessing import Lock 14from multiprocessing import Lock
14 15
16if sys.getfilesystemencoding() != "utf-8":
17 sys.exit("Please use a locale setting which supports utf-8.\nPython can't change the filesystem locale after loading so we need a utf-8 when python starts or things won't work.")
18
15# Users shouldn't be running this code directly 19# Users shouldn't be running this code directly
16if len(sys.argv) != 2 or not sys.argv[1].startswith("decafbad"): 20if len(sys.argv) != 2 or not sys.argv[1].startswith("decafbad"):
17 print("bitbake-worker is meant for internal execution by bitbake itself, please don't use it standalone.") 21 print("bitbake-worker is meant for internal execution by bitbake itself, please don't use it standalone.")
@@ -30,19 +34,16 @@ if sys.argv[1].startswith("decafbadbad"):
30# updates to log files for use with tail 34# updates to log files for use with tail
31try: 35try:
32 if sys.stdout.name == '<stdout>': 36 if sys.stdout.name == '<stdout>':
33 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) 37 import fcntl
38 fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
39 fl |= os.O_SYNC
40 fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
41 #sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
34except: 42except:
35 pass 43 pass
36 44
37logger = logging.getLogger("BitBake") 45logger = logging.getLogger("BitBake")
38 46
39try:
40 import cPickle as pickle
41except ImportError:
42 import pickle
43 bb.msg.note(1, bb.msg.domain.Cache, "Importing cPickle failed. Falling back to a very slow implementation.")
44
45
46worker_pipe = sys.stdout.fileno() 47worker_pipe = sys.stdout.fileno()
47bb.utils.nonblockingfd(worker_pipe) 48bb.utils.nonblockingfd(worker_pipe)
48# Need to guard against multiprocessing being used in child processes 49# Need to guard against multiprocessing being used in child processes
@@ -62,10 +63,10 @@ if 0:
62 consolelog.setFormatter(conlogformat) 63 consolelog.setFormatter(conlogformat)
63 logger.addHandler(consolelog) 64 logger.addHandler(consolelog)
64 65
65worker_queue = "" 66worker_queue = b""
66 67
67def worker_fire(event, d): 68def worker_fire(event, d):
68 data = "<event>" + pickle.dumps(event) + "</event>" 69 data = b"<event>" + pickle.dumps(event) + b"</event>"
69 worker_fire_prepickled(data) 70 worker_fire_prepickled(data)
70 71
71def worker_fire_prepickled(event): 72def worker_fire_prepickled(event):
@@ -91,7 +92,7 @@ def worker_child_fire(event, d):
91 global worker_pipe 92 global worker_pipe
92 global worker_pipe_lock 93 global worker_pipe_lock
93 94
94 data = "<event>" + pickle.dumps(event) + "</event>" 95 data = b"<event>" + pickle.dumps(event) + b"</event>"
95 try: 96 try:
96 worker_pipe_lock.acquire() 97 worker_pipe_lock.acquire()
97 worker_pipe.write(data) 98 worker_pipe.write(data)
@@ -241,7 +242,7 @@ def fork_off_task(cfg, data, workerdata, fn, task, taskname, appends, taskdepdat
241 bb.utils.process_profilelog(profname) 242 bb.utils.process_profilelog(profname)
242 os._exit(ret) 243 os._exit(ret)
243 else: 244 else:
244 for key, value in envbackup.iteritems(): 245 for key, value in iter(envbackup.items()):
245 if value is None: 246 if value is None:
246 del os.environ[key] 247 del os.environ[key]
247 else: 248 else:
@@ -258,22 +259,22 @@ class runQueueWorkerPipe():
258 if pipeout: 259 if pipeout:
259 pipeout.close() 260 pipeout.close()
260 bb.utils.nonblockingfd(self.input) 261 bb.utils.nonblockingfd(self.input)
261 self.queue = "" 262 self.queue = b""
262 263
263 def read(self): 264 def read(self):
264 start = len(self.queue) 265 start = len(self.queue)
265 try: 266 try:
266 self.queue = self.queue + self.input.read(102400) 267 self.queue = self.queue + (self.input.read(102400) or b"")
267 except (OSError, IOError) as e: 268 except (OSError, IOError) as e:
268 if e.errno != errno.EAGAIN: 269 if e.errno != errno.EAGAIN:
269 raise 270 raise
270 271
271 end = len(self.queue) 272 end = len(self.queue)
272 index = self.queue.find("</event>") 273 index = self.queue.find(b"</event>")
273 while index != -1: 274 while index != -1:
274 worker_fire_prepickled(self.queue[:index+8]) 275 worker_fire_prepickled(self.queue[:index+8])
275 self.queue = self.queue[index+8:] 276 self.queue = self.queue[index+8:]
276 index = self.queue.find("</event>") 277 index = self.queue.find(b"</event>")
277 return (end > start) 278 return (end > start)
278 279
279 def close(self): 280 def close(self):
@@ -289,7 +290,7 @@ class BitbakeWorker(object):
289 def __init__(self, din): 290 def __init__(self, din):
290 self.input = din 291 self.input = din
291 bb.utils.nonblockingfd(self.input) 292 bb.utils.nonblockingfd(self.input)
292 self.queue = "" 293 self.queue = b""
293 self.cookercfg = None 294 self.cookercfg = None
294 self.databuilder = None 295 self.databuilder = None
295 self.data = None 296 self.data = None
@@ -326,12 +327,12 @@ class BitbakeWorker(object):
326 except (OSError, IOError): 327 except (OSError, IOError):
327 pass 328 pass
328 if len(self.queue): 329 if len(self.queue):
329 self.handle_item("cookerconfig", self.handle_cookercfg) 330 self.handle_item(b"cookerconfig", self.handle_cookercfg)
330 self.handle_item("workerdata", self.handle_workerdata) 331 self.handle_item(b"workerdata", self.handle_workerdata)
331 self.handle_item("runtask", self.handle_runtask) 332 self.handle_item(b"runtask", self.handle_runtask)
332 self.handle_item("finishnow", self.handle_finishnow) 333 self.handle_item(b"finishnow", self.handle_finishnow)
333 self.handle_item("ping", self.handle_ping) 334 self.handle_item(b"ping", self.handle_ping)
334 self.handle_item("quit", self.handle_quit) 335 self.handle_item(b"quit", self.handle_quit)
335 336
336 for pipe in self.build_pipes: 337 for pipe in self.build_pipes:
337 self.build_pipes[pipe].read() 338 self.build_pipes[pipe].read()
@@ -341,12 +342,12 @@ class BitbakeWorker(object):
341 342
342 343
343 def handle_item(self, item, func): 344 def handle_item(self, item, func):
344 if self.queue.startswith("<" + item + ">"): 345 if self.queue.startswith(b"<" + item + b">"):
345 index = self.queue.find("</" + item + ">") 346 index = self.queue.find(b"</" + item + b">")
346 while index != -1: 347 while index != -1:
347 func(self.queue[(len(item) + 2):index]) 348 func(self.queue[(len(item) + 2):index])
348 self.queue = self.queue[(index + len(item) + 3):] 349 self.queue = self.queue[(index + len(item) + 3):]
349 index = self.queue.find("</" + item + ">") 350 index = self.queue.find(b"</" + item + b">")
350 351
351 def handle_cookercfg(self, data): 352 def handle_cookercfg(self, data):
352 self.cookercfg = pickle.loads(data) 353 self.cookercfg = pickle.loads(data)
@@ -410,12 +411,12 @@ class BitbakeWorker(object):
410 self.build_pipes[pid].close() 411 self.build_pipes[pid].close()
411 del self.build_pipes[pid] 412 del self.build_pipes[pid]
412 413
413 worker_fire_prepickled("<exitcode>" + pickle.dumps((task, status)) + "</exitcode>") 414 worker_fire_prepickled(b"<exitcode>" + pickle.dumps((task, status)) + b"</exitcode>")
414 415
415 def handle_finishnow(self, _): 416 def handle_finishnow(self, _):
416 if self.build_pids: 417 if self.build_pids:
417 logger.info("Sending SIGTERM to remaining %s tasks", len(self.build_pids)) 418 logger.info("Sending SIGTERM to remaining %s tasks", len(self.build_pids))
418 for k, v in self.build_pids.iteritems(): 419 for k, v in iter(self.build_pids.items()):
419 try: 420 try:
420 os.kill(-k, signal.SIGTERM) 421 os.kill(-k, signal.SIGTERM)
421 os.waitpid(-1, 0) 422 os.waitpid(-1, 0)
@@ -425,6 +426,7 @@ class BitbakeWorker(object):
425 self.build_pipes[pipe].read() 426 self.build_pipes[pipe].read()
426 427
427try: 428try:
429 sys.stdin = sys.stdin.detach()
428 worker = BitbakeWorker(sys.stdin) 430 worker = BitbakeWorker(sys.stdin)
429 if not profiling: 431 if not profiling:
430 worker.serve() 432 worker.serve()
diff --git a/bitbake/bin/bitdoc b/bitbake/bin/bitdoc
index defb3dd37a..2744678824 100755
--- a/bitbake/bin/bitdoc
+++ b/bitbake/bin/bitdoc
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2# ex:ts=4:sw=4:sts=4:et 2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- 3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4# 4#
diff --git a/bitbake/bin/image-writer b/bitbake/bin/image-writer
index e30ab45e31..7ab1d8c979 100755
--- a/bitbake/bin/image-writer
+++ b/bitbake/bin/image-writer
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2 2
3# Copyright (c) 2012 Wind River Systems, Inc. 3# Copyright (c) 2012 Wind River Systems, Inc.
4# 4#
@@ -24,9 +24,13 @@ try:
24except RuntimeError as exc: 24except RuntimeError as exc:
25 sys.exit(str(exc)) 25 sys.exit(str(exc))
26 26
27from gi import pygtkcompat
28
29pygtkcompat.enable()
30pygtkcompat.enable_gtk(version='3.0')
31
27import gtk 32import gtk
28import optparse 33import optparse
29import pygtk
30 34
31from bb.ui.crumbs.hobwidget import HobAltButton, HobButton 35from bb.ui.crumbs.hobwidget import HobAltButton, HobButton
32from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog 36from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
diff --git a/bitbake/bin/toaster-eventreplay b/bitbake/bin/toaster-eventreplay
index 615a7aed15..bdddb908b5 100755
--- a/bitbake/bin/toaster-eventreplay
+++ b/bitbake/bin/toaster-eventreplay
@@ -1,4 +1,4 @@
1#!/usr/bin/env python 1#!/usr/bin/env python3
2# ex:ts=4:sw=4:sts=4:et 2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- 3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4# 4#