netboot_firmware_settings: drop unused script

It's been moved to the chromeos-bootimage package directly.

BUG=None
TEST=CQ passes

Cq-Depend: chromium:2720468
Change-Id: I3af92a4d28d23c1b43a50867a6450be1f0c04af8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/2720452
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Sergey Frolov <sfrolov@google.com>
diff --git a/host/OWNERS b/host/OWNERS
index e01247b..995488c 100644
--- a/host/OWNERS
+++ b/host/OWNERS
@@ -1,4 +1 @@
 include chromiumos/chromite:/OWNERS.build
-
-# Used by sys-boot/chromeos-bootimage.
-per-file netboot_firmware_settings.py = jwerner@chromium.org, kitching@chromium.org
diff --git a/host/__init__.py b/host/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/host/__init__.py
+++ /dev/null
diff --git a/host/netboot_firmware_settings.py b/host/netboot_firmware_settings.py
deleted file mode 100755
index 8993e74..0000000
--- a/host/netboot_firmware_settings.py
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2013 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Utility to configure netboot settings."""
-
-import argparse
-import socket
-import struct
-import sys
-
-try:
-  import fmap
-except ImportError:
-  print('Could not find fmap module. If you are running outside the chroot, '
-        'ensure that third_party/flashmap is on your PYTHONPATH.',
-        file=sys.stderr)
-  raise
-
-
-def _ParseArgs(argv):
-  """Construct an ArgumentParser for this utility script."""
-  parser = argparse.ArgumentParser(description=__doc__)
-  parser.add_argument('--input', '-i', required=True,
-                      help='Path to the firmware to modify; required')
-  parser.add_argument('--output', '-o',
-                      help='Path to store output; if not specified we will '
-                           'directly modify the input file')
-
-  parser.add_argument('--tftpserverip',
-                      help='Set the TFTP server IP address (defaults to DHCP-'
-                           'provided address)')
-  parser.add_argument('--bootfile',
-                      help='Set the path of the TFTP boot file (defaults to '
-                           'DHCP-provided file name)')
-  parser.add_argument('--argsfile',
-                      help='Set the path of the TFTP file that provides the '
-                           'kernel command line (overrides default and --arg)')
-
-  parser.add_argument('--board',
-                      help='Set the cros_board to be passed into the kernel')
-  parser.add_argument('--omahaserver',
-                      help='Set the Omaha server IP address')
-  parser.add_argument('--arg', '--kernel_arg', default=[], dest='kernel_args',
-                      metavar='kernel_args', action='append',
-                      help='Set extra kernel command line parameters (appended '
-                           'to default string for factory)')
-  return parser.parse_args(argv)
-
-
-class Image(object):
-  """A class to represent a firmware image.
-
-  Areas in the image should be accessed using the [] operator which takes
-  the area name as its key.
-
-  Attributes:
-    data: The data in the entire image.
-  """
-
-  def __init__(self, data):
-    """Initialize an instance of Image
-
-    Args:
-      data: The data contianed within the image.
-    """
-    try:
-      # FMAP identifier used by the cros_bundle_firmware family of utilities.
-      obj = fmap.fmap_decode(data, fmap_name='FMAP')
-    except struct.error:
-      # FMAP identifier used by coreboot's FMAP creation tools.
-      # The name signals that the FMAP covers the entire flash unlike, for
-      # example, the EC RW firmware's FMAP, which might also come as part of
-      # the image but covers a smaller section.
-      obj = fmap.fmap_decode(data, fmap_name='FLASH')
-    self.areas = {}
-    for area in obj['areas']:
-      self.areas[area['name']] = area
-    self.data = data
-
-  def __setitem__(self, key, value):
-    """Write data into an area of the image.
-
-    If value is smaller than the area it's being written into, it will be
-    padded out with NUL bytes. If it's too big, a ValueError exception
-    will be raised.
-
-    Args:
-      key: The name of the area to overwrite.
-      value: The data to write into the area.
-
-    Raises:
-      ValueError: 'value' was too large to write into the selected area.
-    """
-    area = self.areas[key]
-    if len(value) > area['size']:
-      raise ValueError('Too much data for FMAP area %s' % key)
-    value = value.ljust(area['size'], b'\0')
-    self.data = (self.data[:area['offset']] + value +
-                 self.data[area['offset'] + area['size']:])
-
-  def __getitem__(self, key):
-    """Retrieve the data in an area of the image.
-
-    Args:
-      key: The area to retrieve.
-
-    Returns:
-      The data in that area of the image.
-    """
-    area = self.areas[key]
-    return self.data[area['offset']:area['offset'] + area['size']]
-
-
-class Settings(object):
-  """A class which represents a collection of settings.
-
-  The settings can be updated after a firmware image has been built.
-
-  Attributes of this class other than the signature constant are stored in
-  the 'value' field of each attribute in the attributes dict.
-
-  Attributes:
-    signature: A constant which has a signature value at the front of the
-        settings when written into the image.
-  """
-  signature = b'netboot\0'
-
-  class Attribute(object):
-    """A class which represents a particular setting.
-
-    Attributes:
-      code: An enum value which identifies which setting this is.
-      value: The value the setting has been set to.
-    """
-    def __init__(self, code, value):
-      """Initialize an Attribute instance.
-
-      Args:
-        code: The code for this attribute.
-        value: The initial value of this attribute.
-      """
-      self.code = code
-      self.value = value
-
-    def pack(self):
-      """Pack an attribute into a binary representation.
-
-      Returns:
-        The binary representation.
-      """
-      if self.value:
-        value = self.value.pack()
-      else:
-        value = b''
-      value_len = len(value)
-      pad_len = ((value_len + 3) // 4) * 4 - value_len
-      value += b'\0' * pad_len
-      format_str = '<II%ds' % (value_len + pad_len)
-      return struct.pack(format_str, self.code, value_len, value)
-
-  def __init__(self):
-    """Initialize an instance of Settings."""
-    attributes = {
-        'tftp_server_ip': self.Attribute(1, None),
-        'kernel_args': self.Attribute(2, None),
-        'bootfile': self.Attribute(3, None),
-        'argsfile': self.Attribute(4, None),
-    }
-    self.__dict__['attributes'] = attributes
-
-  def __setitem__(self, name, value):
-    self.attributes[name].value = value
-
-  def __getattr__(self, name):
-    return self.attributes[name].value
-
-  def pack(self):
-    """Pack a Settings object into a binary representation.
-
-    The packed binary representation can be put into an image.
-
-    Returns:
-      A binary representation of the settings.
-    """
-    value = self.signature
-    value += struct.pack('<I', len(self.attributes))
-    # This doesn't need to be sorted, but it provides for stable outputs
-    # rather than relying on Python dictionary ordering, and is what the
-    # code has historically done.
-    for _, attr in sorted(self.attributes.items()):
-      value += attr.pack()
-    return value
-
-
-class Setting(object):
-  """Class for settings that are stored simply as strings."""
-
-  def __init__(self, val):
-    """Initialize an instance of Setting.
-
-    Args:
-      val: The value of the setting.
-    """
-    self.val = val
-
-  def pack(self):
-    """Pack the setting by returning its value as a string.
-
-    Returns:
-      The val field as bytes.
-    """
-    return self.val.encode()
-
-
-class IpAddress(Setting):
-  """Class for IP address settings."""
-
-  def __init__(self, val):
-    """Initialize an IpAddress Setting instance.
-
-    Args:
-      val: A string representation of the IP address to be set to.
-    """
-    in_addr = socket.inet_pton(socket.AF_INET, val)
-    super(IpAddress, self).__init__(in_addr)
-
-
-def main(argv):
-  options = _ParseArgs(argv)
-  with open(options.input, 'rb') as f:
-    image = Image(f.read())
-
-  settings = Settings()
-  if options.tftpserverip:
-    settings['tftp_server_ip'] = IpAddress(options.tftpserverip)
-  kernel_args = ''
-  if options.board:
-    kernel_args += 'cros_board=' + options.board + ' '
-  if options.omahaserver:
-    kernel_args += 'omahaserver=' + options.omahaserver + ' '
-  kernel_args += ' '.join(options.kernel_args)
-  kernel_args += '\0'
-  settings['kernel_args'] = Setting(kernel_args)
-  if options.bootfile:
-    settings['bootfile'] = Setting(options.bootfile + '\0')
-  if options.argsfile:
-    settings['argsfile'] = Setting(options.argsfile + '\0')
-
-  image['SHARED_DATA'] = settings.pack()
-
-  output_name = options.output or options.input
-  with open(output_name, 'wb') as f:
-    f.write(image.data)
-
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv[1:]))