Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  mk2bp_partition.py

  Sprache: Python
 

#!/usr/bin/env python3

"""
The complete list of the remaining Make files in each partition for all lunch targets

How to run?
python3 $(path-to-file)/mk2bp_partition.py
"""

from pathlib import Path

import csv
import datetime
import os
import shutil
import subprocess
import sys
import time

def get_top():
  path = '.'
  while not os.path.isfile(os.path.join(path, 'build/soong/soong_ui.bash')):
    if os.path.abspath(path) == '/':
      sys.exit('Could not find android source tree root.')
    path = os.path.join(path, '..')
  return os.path.abspath(path)

# get the values of a build variable
def get_build_var(variable, product, build_variant):
  """Returns the result of the shell command get_build_var."""
  env = {
      **os.environ,
      'TARGET_PRODUCT': product if product else '',
      'TARGET_BUILD_VARIANT': build_variant if build_variant else '',
  }
  return subprocess.run([
      'build/soong/soong_ui.bash',
      '--dumpvar-mode',
      variable
  ], check=True, capture_output=True, env=env, text=True).stdout.strip()

def get_make_file_partitions():
    lunch_targets = set(get_build_var("all_named_products""""").split())
    total_lunch_targets = len(lunch_targets)
    makefile_by_partition = dict()
    partitions = set()
    current_count = 0
    start_time = time.time()
    # cannot run command `m lunch_target`
    broken_targets = {"mainline_sdk""ndk"}
    for lunch_target in sorted(lunch_targets):
        current_count += 1
        current_time = time.time()
        print (current_count, "/", total_lunch_targets, lunch_target, datetime.timedelta(seconds=current_time - start_time))
        if lunch_target in broken_targets:
            continue
        installed_product_out = get_build_var("PRODUCT_OUT", lunch_target, "userdebug")
        filename = os.path.join(installed_product_out, "mk2bp_remaining.csv")
        copy_filename = os.path.join(installed_product_out, lunch_target + "_mk2bp_remaining.csv")
        # only generate if not exists
        if not os.path.exists(copy_filename):
            bash_cmd = "bash build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=" + lunch_target
            bash_cmd += " TARGET_BUILD_VARIANT=userdebug " + filename
            subprocess.run(bash_cmd, shell=True, text=True, check=True, stdout=subprocess.DEVNULL)
            # generate a copied .csv file, to avoid possible overwritings
            with open(copy_filename, "w"as file:
                shutil.copyfile(filename, copy_filename)

        # open mk2bp_remaining.csv file
        with open(copy_filename, "r"as csvfile:
            reader = csv.reader(csvfile, delimiter=",", quotechar='"')
            # bypass the header row
            next(reader, None)
            for row in reader:
                # read partition information
                partition = row[2]
                makefile_by_partition.setdefault(partition, set()).add(row[0])
                partitions.add(partition)

    # write merged make file list for each partition into a csv file
    installed_path = Path(installed_product_out).parents[0].as_posix()
    csv_path = installed_path + "/mk2bp_partition.csv"
    with open(csv_path, "wt"as csvfile:
        writer = csv.writer(csvfile, delimiter=",")
        count_makefile = 0
        for partition in sorted(partitions):
            number_file = len(makefile_by_partition[partition])
            count_makefile += number_file
            writer.writerow([partition, number_file])
            for makefile in sorted(makefile_by_partition[partition]):
                writer.writerow([makefile])
        row = ["The total count of make files is ", count_makefile]
        writer.writerow(row)

def main():
    os.chdir(get_top())
    get_make_file_partitions()

if __name__ == "__main__":
    main()

Messung V0.5 in Prozent
C=90 H=98 G=94

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet am  2026-06-28) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik