Remove unused project.

Remove the source and switch the OWNERS to the janitors to prevent
necromancy.

Test: treehugger
Change-Id: If624c3bac7caa4d796a08c295304e64e201e03d7
diff --git a/BCC.md b/BCC.md
deleted file mode 100644
index 01b5a22..0000000
--- a/BCC.md
+++ /dev/null
@@ -1,186 +0,0 @@
-BCC (BPF compiler collection) for Android
-=========================================
-
-Introduction
-------------
-BCC is a compiler and a toolkit, containing powerful kernel tracing tools that
-trace at the lowest levels, including adding hooks to functions in kernel space
-and user space to deeply understand system behavior while being low in
-overhead. [Here's a presentation with an
-overview](http://www.joelfernandes.org/resources/bcc-ospm.pdf) and visit [BCC's
-project page](https://github.com/iovisor/bcc) for the official BCC
-documentation.
-
-Quick Start
------------
-adeb is the primary vehicle for running BCC on Android. It supports
-preparing the target Android device with necessary kernel headers, cloning and
-building BCC on device, and other setup. Take a look a quick look at [adeb
-README](https://github.com/joelagnel/adeb/blob/master/README.md) so that
-you're familiar with what it is.
-
-To download a prebuilt filesystem with BCC already built/installed for an ARM64
-device, you can just run:
-```
-adeb prepare --full
-```
-
-This downloads the FS and also downloads prebuilt kernel headers after
-detecting your device's kernel version. Running BCC this way may cause a warning
-at startup since the headers may not be an *exact* match for your kernel's
-sublevel (only version and patchlevel are matched), however it works well in
-our testing and could be used, as long as you can tolerate the warning.
-
-If you would like to setup your own kernel headers and prevent the warning,
-you can point adeb to the kernel sources which will extract headers from there:
-```
-adeb prepare --full --kernelsrc /path/to/kernel-source/
-```
-For targets other than ARM64, see the [Other Architectures
-section](https://github.com/joelagnel/adeb/blob/master/BCC.md#other-architectures-other-than-arm64)
-
-Now to run BCC, just start an adeb shell: `adeb shell`. This uses adb
-as the backend to start a shell into your adeb environment. Try running
-`opensnoop` or any of the other BCC tracers to confirm that the setup worked
-correctly.
-
-If building your own kernel, following are the kernel requirements:
-
-You need kernel 4.9 or newer. Anything less needs backports. Your kernel needs
-to be built with the following config options at the minimum:
-```
-CONFIG_KPROBES=y
-CONFIG_KPROBE_EVENT=y
-CONFIG_BPF_SYSCALL=y
-```
-Optionally,
-```
-CONFIG_UPROBES=y
-CONFIG_UPROBE_EVENT=y
-```
-Additionally, for the criticalsection BCC tracer to work, you need:
-```
-CONFIG_DEBUG_PREEMPT=y
-CONFIG_PREEMPTIRQ_EVENTS=y
-```
-
-Build BCC during adeb install (Optional)
---------------------------------------------
-If you would like the latest upstream BCC built and installed on your Android
-device, you can run:
-```
-adeb prepare --build --bcc --kernelsrc /path/to/kernel-source/
-```
-NOTE: This is a slow process and can take a long time. Since it not only builds
-BCC but also installs all non-BCC debian packages onto the filesystem and configures them.
-
-Other Architectures (other than ARM64)
------------------------
-By default adeb assumes the target Android device is based on ARM64
-processor architecture. For other architectures, use the --arch option. For
-example for x86_64 architecture, run:
-```
-adeb prepare --arch amd64 --build --bcc --kernelsrc /path/to/kernel-source/
-```
-Note: The --download option ignores the --arch flag. This is because we only
-provide pre-built filesystems for ARM64 at the moment.
-Note: If you pass --arch, you have to pass --build, because prebuilt
-filesystems are not available for non-arm64 devices.
-
-Common Issues
--------------
-Here are some common issues you may face when running different BCC tools.
-
-* Issue 1: Headers are missing on the target device.
-
-Symptom: This will usually result in an error like the following:
-```
-root@localhost:/# criticalstat
-
-In file included from <built-in>:2
-In file included from /virtual/include/bcc/bpf.h:12:
-In file included from include/linux/types.h:5:
-include/uapi/linux/types.h:4:10: fatal error: 'asm/types.h' file not found
-
-#include <asm/types.h>                                                                                                                                                                   
-
-         ^~~~~~~~~~~~~
-1 error generated.
-Traceback (most recent call last):
-
-  File "./criticalstat.py", line 138, in <module>
-    b = BPF(text=bpf_text)
-  File "/usr/lib/python2.7/dist-packages/bcc/__init__.py", line 297, in __init__
-    raise Exception("Failed to compile BPF text:\n%s" % text)
-Exception: Failed to compile BPF text:
-                                                                                                                                                                                         
-#include <uapi/linux/ptrace.h>                                                                                                                                                           
-#include <uapi/linux/limits.h>                                                                                                                                                           
-#include <linux/sched.h>                                                                                                                                                                 
-
-extern char _stext[];
-```
-
-* Issue 2: `CONFIG_KPROBES` isn't enabled.
-
-Symptom: This will result in an error like the following:
-```
-Traceback (most recent call last):
-  File "/usr/share/bcc/tools/cachetop", line 263, in <module>
-    curses.wrapper(handle_loop, args)
-  File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
-    return func(stdscr, *args, **kwds)
-  File "/usr/share/bcc/tools/cachetop", line 172, in handle_loop
-    b.attach_kprobe(event="add_to_page_cache_lru", fn_name="do_count")
-  File "/usr/lib/python2.7/dist-packages/bcc/__init__.py", line 543, in
-attach_kprobe
-    fn = self.load_func(fn_name, BPF.KPROBE)
-  File "/usr/lib/python2.7/dist-packages/bcc/__init__.py", line 355, in
-load_func
-    (func_name, errstr))
-Exception: Failed to load BPF program do_count: Invalid argument
-```
-
-* Issue 3: `CONFIG_BPF_SYSCALL` isn't enabled.
-
-Symptom: This may result in a compilation error like the following:
-```
-root@localhost:/# cachetop
-Traceback (most recent call last):
-  File "/usr/share/bcc/tools/cachetop", line 263, in <module>
-    curses.wrapper(handle_loop, args)
-  File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
-    return func(stdscr, *args, **kwds)
-  File "/usr/share/bcc/tools/cachetop", line 171, in handle_loop
-    b = BPF(text=bpf_text)
-  File "/usr/lib/python2.7/dist-packages/bcc/__init__.py", line 297, in __init__
-    raise Exception("Failed to compile BPF text:\n%s" % text)
-Exception: Failed to compile BPF text:
-
-
-    #include <uapi/linux/ptrace.h>
-    struct key_t {
-        u64 ip;
-        u32 pid;
-        u32 uid;
-        char comm[16];
-    };
-
-    BPF_HASH(counts, struct key_t);
-
-    int do_count(struct pt_regs *ctx) {
-        struct key_t key = {};
-        u64 zero = 0 , *val;
-        u64 pid = bpf_get_current_pid_tgid();
-        u32 uid = bpf_get_current_uid_gid();
-
-        key.ip = PT_REGS_IP(ctx);
-        key.pid = pid & 0xFFFFFFFF;
-        key.uid = uid & 0xFFFFFFFF;
-        bpf_get_current_comm(&(key.comm), 16);
-
-        val = counts.lookup_or_init(&key, &zero);  // update counter
-        (*val)++;
-        return 0;
-    }
-```
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/METADATA b/METADATA
deleted file mode 100644
index a58b6bc..0000000
--- a/METADATA
+++ /dev/null
@@ -1,19 +0,0 @@
-name: "adeb"
-description: "adeb (also known as androdeb) provides a powerful Linux shell environment where one can run popular and mainstream Linux tracing, compiling, editing and other development tools on an existing Android device. All the commands typically available on a modern Linux system are supported in adeb."
-third_party {
-  url {
-    type: HOMEPAGE
-    value: "https://github.com/joelagnel/adeb/README.md"
-  }
-  url {
-    type: GIT
-    value: "https://github.com/joelagnel/adeb.git"
-  }
-  version: "v0.99f"
-  license_type: NOTICE
-  last_upgrade_date {
-    year: 2018
-    month: 7
-    day: 25
-  }
-}
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29..0000000
--- a/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index d645695..0000000
--- a/NOTICE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/OWNERS b/OWNERS
index afdffad..7529cb9 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,3 +1 @@
-# Default code reviewers picked from top 3 or more developers.
-# Please update this list if you find better candidates.
-joelaf@google.com
+include platform/system/core:/janitors/OWNERS
diff --git a/README.md b/README.md
deleted file mode 100644
index 23ae44d..0000000
--- a/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-adeb
---------
-
-**adeb** (also known as **androdeb**) provides a powerful Linux shell
-environment where one can run popular and mainstream Linux tracing, compiling,
-editing and other development tools on an existing Android device. All the
-commands typically available on a modern Linux system are supported in
-adeb.
-
-Usecases
---------
-1. Powerful development environment with all tools ready to go (editors,
-compilers, tracers, perl/python etc) for your on-device development.
-
-2. No more cross-compiler needed: Because it comes with gcc and clang, one can
-build target packages natively without needing to do any cross compilation. We even
-ship git, and have support to run apt-get to get any missing development packages
-from the web.
-
-3. Using these one can run popular tools such as BCC that are difficult to run
-in an Android environment due to lack of packages, dependencies and
-cross-compilation needed for their operation. [Check BCC on Android using
-adeb](https://github.com/joelagnel/adeb/blob/master/BCC.md) for more
-information on that.
-
-4. No more crippled tools: Its often a theme to build a static binary with
-features disabled, because you couldn't cross-compile the feature's dependencies. One
-classic example is perf. However, thanks to adeb, we can build perf natively
-on device without having to cripple it.
-
-Requirements for running
-------------------------
-Target:
-An ARM64 android N or later device which has "adb root" supported. Typically
-this is a build in a userdebug configuration. Device should have atleast 2 GB
-free space in the data partition. If you would like to use other architectures,
-see the [Other Architectures](https://github.com/joelagnel/adeb/blob/master/README.md#how-to-use-adeb-for-other-architectures-other-than-arm64) section.
-
-Host:
-A machine running recent Ubuntu or Debian, with 4GB of memory and 4GB free space.
-Host needs debootstrap and qemu-debootstrap packages.
-To install it, run `sudo apt-get install qemu-user-static debootstrap`.
-Other distributions may work but they are not tested.
-
-Quick Start Instructions
-------------------------
-* First clone this repository into adb and cd into it.
-```
-cd adeb
-
-# Add some short cuts:
-sudo ln -s $(pwd)/adeb /usr/bin/adeb
-
-# Cached image downloads result in a huge speed-up. These are automatic if you
-# cloned the repository using git. However, if you downloaded the repository
-# as a zip file (or you want to host images elsewere), you could set the
-# ADEB_REPO_URL environment variable in your bashrc file.
-# Disclaimer: Google is not liable for the below URL and this
-#             is just an example.
-export ADEB_REPO_URL="github.com/joelagnel/adeb/"
-```
-
-* Installing adeb onto your device:
-First make sure device is connected to system
-Then run, for the base image:
-```
-adeb prepare
-```
-The previous command only downloads and installs the base image.
-Instead if you want to download and install the full image, do:
-```
-adeb prepare --full
-```
-
-* Now run adeb shell to enter your new environment!:
-```
-adeb shell
-```
-
-* Once done, hit `CTRL + D` and you will exit out of the shell.
-To remove adeb from the device, run:
-```
-adeb remove
-```
-If you have multiple devices connected, please add `-s <serialnumber>`.
-Serial numbers of all devices connected can be obtained by `adb devices`.
-
-* To update an existing adeb clone on your host, run:
-```
-adeb git-pull
-```
-
-More advanced usage instructions
---------------------------------
-### Install kernel headers in addition to preparing adeb device:
-```
-adeb prepare --kernelsrc /path/to/kernel-source
-```
-
-### Update kernel headers onto an already prepared device:
-
-If you need to put kernel sources for an existing install, run:
-```
-adeb prepare --kernelsrc /path/to/kernel-source --skip-install
-```
-Note: The kernel sources should have been built (atleast build should have started).
-
-### Build and prepare device with a custom rootfs locally:
-
-The adeb fs will be prepared locally by downloading packages as needed:
-```
-adeb prepare --build
-```
-This is unlike the default behavior, where the adeb rootfs is itself pulled from the web.
-
-If you wish to do a full build (that is locally prepare a rootfs with all packages, including bcc, then do):
-```
-adeb prepare --full --build
-```
-
-### Add kernel headers to device in addition to building locally:
-```
-adeb prepare --build --kernelsrc /path/to/kernel-source/
-```
-
-### Build/install a base image with BCC:
-```
-adeb prepare --build --bcc --kernelsrc /path/to/kernel-source/
-```
-Note: BCC is built from source. Also `--kernelsrc` is recommended for tools to
-function unless device has them already.
-
-### Extract the FS from the device, after its prepared:
-```
-adeb prepare --buildtar /path/
-```
-After device is prepared, it will extract the root fs from it
-and store it as a tar archive at `/path/adeb-fs.tgz`. This
-can be used later.
-
-### Use a previously prepared adeb rootfs tar from local:
-```
-adeb prepare --archive /path/adeb-fs.tgz
-```
-
-### Build a standalone raw EXT4 image out of the FS:
-```
-adeb prepare --build-image /path/to/image.img
-```
-This can then be passed to Qemu as -hda. Note: This option doesn't need a
-device connected.
-
-### How to use adeb for other Architectures (other than ARM64)
-By default adeb assumes the target Android device is based on ARM64
-processor architecture. For other architectures, use the --arch option. For
-example for x86_64 architecture, run:
-```
-adeb prepare --build --arch amd64 --bcc --kernelsrc /path/to/kernel-source/
-```
-Note: The --download option ignores the --arch flag. This is because we only
-provide pre-built filesystems for ARM64 at the moment.
-
-Common Trouble shooting
------------------
-1. Installing g++ with `apt-get install g++` fails.
-
-Solution: Run `adeb shell apt-get update` after the `adeb prepare` stage.
-
-2. It's too slow to use debootstrap to create debian fs
-
-Solution: Use a local mirror, for example in China you could use
-https://mirror.tuna.tsinghua.edu.cn/debian/ instead of debian official website
-http://deb.debian.org/debian/
diff --git a/TODO b/TODO
deleted file mode 100644
index 2efc767..0000000
--- a/TODO
+++ /dev/null
@@ -1,5 +0,0 @@
-TODO:
- - update androdeb with latest bcc (which will include criticalstat)
- - symlink whichever perf is installed to /usr/bin/perf
- - patch perf with the new futex contention script
-   (probably it can just be dropped into a path)
diff --git a/addons/bashrc b/addons/bashrc
deleted file mode 100644
index 5ca6461..0000000
--- a/addons/bashrc
+++ /dev/null
@@ -1,21 +0,0 @@
-# The bannered bashrc
-source .bashrc.common
-
-if [ ! -f .banner.shown ]; then
-
-echo ""
-echo "##########################################################"
-echo "# Welcome to androdeb environment running on Android!    #"
-echo "# Questions to: Joel Fernandes <joel@joelfernandes.org>  #"
-echo "                                                         #"
-echo " Try running vim, gcc, clang, git, make, perf, filetop   #"
-echo "  ..etc or apt-get install something.                    #"
-echo "##########################################################"
-echo ""
-
-touch .banner.shown
-
-fi
-
-homedir=$( getent passwd "$USER" | cut -d: -f6 )
-export HOME=$homedir
diff --git a/addons/bashrc.common b/addons/bashrc.common
deleted file mode 100644
index 14e09d3..0000000
--- a/addons/bashrc.common
+++ /dev/null
@@ -1,37 +0,0 @@
-export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/bcc/tools/
-export TMPDIR=/tmp/
-
-psk=/proc/sys/kernel/kptr_restrict
-if [ -f $psk ]; then echo 0 > $psk; fi
-
-override_vers=1
-this_vers=$(/get_kvers.sh)
-if [ -d /kernel-headers/ ]; then
-	export BCC_KERNEL_SOURCE=/kernel-headers/;
-
-	h_vers=0
-	vers_line=$(grep LINUX_VERSION_CODE /kernel-headers/include/generated/uapi/linux/version.h)
-	if [ "x$vers_line" != "x" ]; then
-		h_vers=$(echo $vers_line | cut -d ' ' -f3)
-	fi
-
-	if [ $this_vers -eq $h_vers ]; then
-		override_vers=0
-	else
-		this_major=$(($this_vers / (256 * 256)))
-		this_minor=$(($this_vers / 256 % 256))
-		h_major=$(($h_vers / (256 * 256)))
-		h_minor=$(($h_vers / 256 % 256))
-		if [ $this_major -ne $h_major ] || [ $this_minor -ne $h_minor ]; then
-			echo "Error: kernel version does not match installed headers ($this_major.$this_minor <> $h_major.$h_minor)"
-			echo "BCC will not work"
-			override_vers=0
-		fi
-	fi
-fi
-
-# Override kernel version if we haven't found headers with them.
-# Needed for BCC to work on slightly mismatched kernels.
-if [ $override_vers -eq 1 ]; then
-	export BCC_LINUX_VERSION_CODE=$this_vers
-fi
diff --git a/addons/bashrc.silent b/addons/bashrc.silent
deleted file mode 100644
index 1e52500..0000000
--- a/addons/bashrc.silent
+++ /dev/null
@@ -1,4 +0,0 @@
-source .bashrc.common
-
-homedir=$( getent passwd "$USER" | cut -d: -f6 )
-export HOME=$homedir
diff --git a/addons/build-debian-tar b/addons/build-debian-tar
deleted file mode 100755
index 2c58c37..0000000
--- a/addons/build-debian-tar
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/system/bin/sh
-set -e
-# Build a tarball out of a android environment which I can then
-# upload to places for people who want to expedite the install
-
-# This script runs on the device
-
-spath=$( cd "$(dirname "$0")" ; pwd -P )
-cd $spath
-
-./device-umount-all
-
-if [ ! -d debian ]; then echo "Error: environment to tar doesn't exist"; exit 1; fi
-
-rm -rf debian-tar; cp -r debian debian-tar;
-rm -rf debian/debian; mv debian-tar debian/debian
-./run-command "tar -zcf androdeb-fs.tgz --exclude='debian/kernel-headers' debian"
-mv debian/androdeb-fs.tgz .
-rm -rf debian/debian-tar
diff --git a/addons/device-umount-all b/addons/device-umount-all
deleted file mode 100755
index fe3b092..0000000
--- a/addons/device-umount-all
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/system/bin/sh
-
-if [ "$1x" == "--debugx" ]; then
-	set -x
-fi
-
-umount_all() {
-	mpoints=$(mount|cut -d ' ' -f3|grep debian)
-	for m in $mpoints;
-		do umount $m 2>&1 > /dev/null
-	done
-}
-
-for i in $(seq 0 6); do
-	umount_all 2>&1 > /dev/null
-done
diff --git a/addons/device-unpack b/addons/device-unpack
deleted file mode 100755
index 14ba258..0000000
--- a/addons/device-unpack
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/system/bin/sh
-
-set -e
-
-# Script to do unpack of rootfs, ensures proper tear down
-# of existing environment. Expects debian rootfs in
-# /data/deb.tar.gz which it will delete after successful
-# unpack of rootfs.
-
-spath=$( cd "$(dirname "$0")" ; pwd -P )
-
-if [ ! -f /data/androdeb/deb.tar.gz ]; then
-	echo "Debian rootfs tar doesn't existing at /data/deb.tar.gz"
-	echo "Run androdeb with device connected first"
-	exit 1
-fi
-
-if [ -d /data/androdeb/debian ]; then
-	echo "androdeb environment already exists, doing a tear down"
-	/data/androdeb/device-umount-all
-	rm -rf /data/androdeb/debian
-fi
-
-
-tar -zxf /data/androdeb/deb.tar.gz -C /data/androdeb/ || die 2 "Couldn't unpack due to tar -x errors"
-rm /data/androdeb/deb.tar.gz
-
-echo "Unpack of rootfs successful!"
diff --git a/addons/get_kvers.sh b/addons/get_kvers.sh
deleted file mode 100755
index 3d18e32..0000000
--- a/addons/get_kvers.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-kvers=$(uname -r)
-
-MAJOR=$(echo $kvers | awk -F. '{ print $1 }')
-MINOR=$(echo $kvers | awk -F. '{ print $2 }')
-SUBVR=$(echo $kvers | awk -F. '{ print $3 }' | awk -F- '{ print $1 }' | sed 's/[^0-9]*//g')
-
-maj_num=$(($MAJOR * 65536))
-min_num=$(($MINOR * 256))
-
-echo $(($maj_num + $min_num + $SUBVR))
diff --git a/addons/run b/addons/run
deleted file mode 100755
index 9738504..0000000
--- a/addons/run
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/system/bin/sh
-spath=$( cd "$(dirname "$0")" ; pwd -P )
-cd $spath
-
-source run.common
-
-chroot debian/ /bin/bash
diff --git a/addons/run-command b/addons/run-command
deleted file mode 100755
index 6d5a8ca..0000000
--- a/addons/run-command
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/system/bin/sh
-spath=$( cd "$(dirname "$0")" ; pwd -P )
-cd $spath
-
-source run.common
-
-# Directly execute a command within the chroot of an Android device
-CMD="$*"
-
-chroot debian /bin/bash --rcfile '.bashrc.silent' -i -c "$CMD"
diff --git a/addons/run.common b/addons/run.common
deleted file mode 100644
index 5c45308..0000000
--- a/addons/run.common
+++ /dev/null
@@ -1,42 +0,0 @@
-do_mounts()
-{
-	mount --bind /proc debian/proc/ > /dev/null
-
-	mount --bind /dev debian/dev/ > /dev/null
-	mount --bind /dev/pts debian/dev/pts > /dev/null
-
-	mount --bind /sys debian/sys/ > /dev/null
-	mount --bind /sys/fs/bpf/ debian/sys/fs/bpf/ > /dev/null
-	mount --bind /sys/kernel/debug/ debian/sys/kernel/debug/ > /dev/null
-	mount --bind /sys/kernel/debug/tracing/ debian/sys/kernel/debug/tracing/
-
-	# Fix up weirdness with debugfs permission changing because of
-	# above mounts.
-	chmod 0777       /sys/kernel/debug > /dev/null
-	chmod 0777 debian/sys/kernel/debug > /dev/null
-	chmod 0777       /sys/kernel/debug/tracing > /dev/null
-	chmod 0777 debian/sys/kernel/debug/tracing > /dev/null
-
-	# Mount Android partitions
-	if [ -d /d/ ]; then
-		if [ ! -d debian/d ]; then ln -s /sys/kernel/debug debian/d; fi
-	fi
-
-	if [ -d /data/ ]; then
-		mkdir -p debian/data/
-		mount --bind /data debian/data/
-	fi
-
-	if [ -d /system/ ]; then
-		mkdir -p debian/system/
-		mount --bind /system debian/system/
-	fi
-
-	if [ -d /vendor/ ]; then
-		mkdir -p debian/vendor/
-		mount --bind /vendor debian/vendor/
-	fi
-}
-
-mount | grep debian > /dev/null
-if [ $? -ne 0 ]; then do_mounts; fi
diff --git a/adeb b/adeb
deleted file mode 100755
index a651772..0000000
--- a/adeb
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash -e
-#
-# (c) Joel Fernandes <joel@joelfernandes.org>
-
-spath="$(dirname "$(readlink -f "$0")")"
-source $spath/androdeb
diff --git a/androdeb b/androdeb
deleted file mode 100755
index 3600a5b..0000000
--- a/androdeb
+++ /dev/null
@@ -1,386 +0,0 @@
-#!/bin/bash -e
-#
-# (c) Joel Fernandes <joel@joelfernandes.org>
-
-VERSION=v0.99g
-
-spath="$(dirname "$(readlink -f "$0")")"
-# spath=$( cd "$(dirname "$0")" ; pwd -P )
-curdir=$( pwd -P )
-source $spath/utils/support
-source $spath/utils/banners
-
-# Set default vars
-DISTRO=buster; ARCH=arm64
-ADB="adb"
-FULL=0				# Default to a minimal install
-DOWNLOAD=1			# Default to downloading from web
-SKIP_DEVICE=0			# Skip device preparation
-INSTALL_BCC=0			# Decide if BCC is to be installed
-
-# Default packages
-PACKAGES=""
-DEFAULT_PACKAGES="bash ca-certificates apt net-tools iputils-ping procps vim"
-
-EXTRA_FILES="none"
-
-config_full_build() {
-	for f in $(ls $spath/packages); do source $spath/packages/$f; done;
-}
-
-# Parse command line parameters
-if [ $# -lt 1 ]; then usage; fi; POSITIONAL=()
-while [[ $# -gt 0 ]]; do key="$1";
-
-# If its shell mode, any future args become shell's args
-if [ "x$ASHELL" == "x1" ]; then
-	if [ -z "$SHELL_ARGS" ]; then
-		SHELL_ARGS=$key
-	else
-		SHELL_ARGS="$SHELL_ARGS $key"
-	fi
-	shift || true; continue
-fi
-
-case $key in
-    shell) ASHELL=1;     shift || true;     ;;
-    remove) REMOVE=1;     shift || true;     ;;
-    git-pull) GIT_PULL=1; shift || true; ;;
-    pull) PULL=1; shift || true; break	;;
-    push) PUSH=1; shift || true; break	;;
-    prepare) PREPARE=1;  shift || true;    ;;
-    --full) FULL=1; config_full_build; shift || true; ;;
-    --arch) ARCH=$2; shift || true; shift || true; ;;
-    --archive) DOWNLOAD=0; TARF=$2; shift || true; shift || true; ;;
-    --bcc) FULL=1; source $spath/packages/bcc; shift || true;     ;;
-    --kernelsrc) KERNELSRC="$2"; shift || true;     shift || true;     ;;
-    --skip-install) SKIP_INSTALL=1; shift || true; ;;
-    --kernel-headers-targz) KERNELHDRS=$2; shift || true;	shift || true;	;;
-    --tempdir) TDIR="$2"; shift || true;     shift || true;     ;;
-    --build) DOWNLOAD=0;  shift || true;     ;;
-    --buildtar) BTAR=1; DOWNLOAD=0; TARDIR="$2"; shift || true;     shift || true;     ;;
-    --device|-s) ADB="$ADB -s $2"; shift || true; shift || true; ;;
-    --build-image) BI=1; BUILD_IMAGEF=$2; SKIP_DEVICE=1; DOWNLOAD=0; shift || true; shift || true; ;;
-    --debug) set -x; shift || true; ;;
-    *) c_error "Unknown option ($1)"; usage; ;;
-esac
-done
-
-[ -z $ASHELL ] && box_out "adeb: $VERSION"
-
-if [ $FULL -eq 1 ]; then
-	FNAME=androdeb-fs.tgz.zip
-	FNAME_UZ=androdeb-fs.tgz
-else
-	FNAME=androdeb-fs-minimal.tgz.zip
-	FNAME_UZ=androdeb-fs-minimal.tgz
-fi
-
-if [ ! -z $BTAR ] && [ -z $TARDIR ]; then
-	TARDIR=$spath
-fi
-
-if [ ! -z "$GIT_PULL" ]; then
-	c_info "Updating androdeb by git pull"
-	cd $spath
-	git pull
-	c_info "Done."
-	exit 0
-fi
-
-if [ ! -z "$PULL" ]; then
-	if [ $1 == "-a" ]; then
-		PRESERVE="-a"
-		c_info "Preserving filestamps and mode"
-		shift || true
-	fi
-	file_count=`count_sources $@`
-	i=0
-	while [ $i -lt $file_count ]; do
-		files["$i"]=/data/androdeb/debian/$1
-		shift || true
-		i=$((i + 1))
-	done
-	$ADB pull $PRESERVE "${files[@]}" "$@"
-	exit 0
-fi
-
-if [ ! -z "$PUSH" ]; then
-	file_count=`count_sources $@`
-	i=0
-	while [ $i -lt $file_count ]; do
-		files["$i"]=$1
-		shift || true
-		i=$((i + 1))
-	done
-	dest=/data/androdeb/debian/$1
-	$ADB push $sync "${files[@]}" $dest
-	exit 0
-fi
-
-if [[ ! -z ${TARDIR+x} ]] && [[ ! -d $TARDIR ]]; then die 7 "Tar dir specified doesn't exist"; fi
-
-if [ -z $BI ]; then
-	[ -z $ASHELL ] && c_info "Looking for device.."
-	set +e
-	do_adb_root "$ADB"
-
-	if [ $? -ne 0 ]; then
-		c_error "adb root failed, make sure:"
-		c_error " * If multiple devices connected, provide --device <serialno>  (or -s <serialno>)"
-		c_error " * Try to run \"adb root\" manually and see if it works. Typically this needs a userdebug build."
-		c_error ""
-		c_error "Note: adb can be typically obtained using the android-tools-adb or the adb"
-		c_error "packages on your distro, or by installing the Android SDK."
-		die 3 "Exiting."
-	fi
-	set -e
-else
-	[ ! -z $BUILD_IMAGEF ] || die 8 "--build-image passed but no image file provided"
-fi
-
-if [ ! -z "$REMOVE" ]; then
-	die_if_no_androdeb "Nothing to remove."
-	$ADB shell /data/androdeb/device-umount-all || true;
-	$ADB shell rm -rf /data/androdeb; exit 0; fi
-
-##########################################################
-#  SHELL
-##########################################################
-if [ ! -z ${ASHELL+x} ]; then
-	set +e; $ADB shell ls /data/androdeb/debian/.bashrc > /dev/null 2>&1
-	if [ $? -ne 0 ]; then
-	   die 2 "Device doesn't have an androdeb environment, run \"./androdeb prepare\" first";
-	fi; set -e
-
-	if [ ! -z ${SHELL_ARGS+x} ]; then
-		# Explanation of quotes:
-		# Outer quote is so that androdeb's bash passes the SHELL_ARGS as a single
-		# argument to $ADB shell. Inner quotes is so that run-command can receive all
-		# the args even though they may be separated by spaces. \m/
-		$ADB shell -t /data/androdeb/run-command "\"$SHELL_ARGS\""
-	else
-		$ADB shell -t /data/androdeb/run
-	fi
-
-	exit 0
-fi
-
-##########################################################
-#  PREPARE 
-##########################################################
-
-function do_cleanup() {
-	rm -rf $TDIR/*; if [ $MKTEMP -eq 1 ]; then rm -rf $TDIR; fi
-}
-
-function push_unpack_headers() {
-	die_if_no_androdeb "Couldn't update headers."
-
-	c_info "Storing kernel headers into androdeb /kernel-headers/"
-	$ADB shell rm -rf /data/androdeb/debian/kernel-headers/
-	$ADB shell mkdir  /data/androdeb/debian/kernel-headers/
-	run_quiet $ADB push $TDIR_ABS/kh.tgz /data/androdeb/
-	$ADB shell tar -xvf /data/androdeb/kh.tgz -C /data/androdeb/debian/kernel-headers/ > /dev/null
-	$ADB shell rm /data/androdeb/kh.tgz
-}
-
-function push_unpack_tarred_headers() {
-	die_if_no_androdeb "Couldn't update headers."
-
-	$ADB shell rm -rf /data/androdeb/debian/kernel-headers/
-	$ADB shell mkdir  /data/androdeb/debian/kernel-headers/
-
-	c_info "Pushing headers tar onto device"
-	run_quiet $ADB push $1 /data/androdeb/
-
-	c_info "Storing kernel headers into androdeb root directory"
-	$ADB shell tar -xvf /data/androdeb/$(basename $1) -C /data/androdeb/debian/ > /dev/null
-
-	$ADB shell rm /data/androdeb/$(basename $1)
-}
-
-function all_done_banner() {
-	c_info "All done! Run \"adeb shell\" to enter environment"
-}
-
-function detect_repo_url() {
-	ADEB_REPO_URL=`cd $spath && git config -l | grep -m1 remote | grep url | sed -e "s/.*url=//" \
-		 -e "s/.*@//"  \
-		 -e "s/https:\/\///" \
-		 -e "s/:/\//"  \
-		 -e "s/\.git$//"`"/"
-	c_info "Detected URL: $ADEB_REPO_URL"
-}
-
-function check_repo_url () {
-	if [ -z $ADEB_REPO_URL ]; then
-		c_info "No repository URL provided in enviromnent. Attempting to auto-detect it"
-		detect_repo_url
-	fi
-
-	if [ -z $ADEB_REPO_URL ]; then
-		c_warning "Automatic download is disabled. To enable it, please set the \$ADEB_REPO_URL"
-		c_warning "environment variable as recommended in the setup instructions in the README.md"
-		do_cleanup
-		exit 0
-	fi
-}
-
-function download_headers() {
-	KERNEL_MAJOR=`$ADB shell uname -r | cut -d - -f 1 | cut -d . -f 1`
-	KERNEL_MINOR=`$ADB shell uname -r | cut -d - -f 1 | cut -d . -f 2`
-	KERNEL_VERSION="$KERNEL_MAJOR.$KERNEL_MINOR"
-	PREBUILT_HEADERS_FILE=headers-$ARCH-$KERNEL_VERSION.tar.gz.zip
-
-	check_repo_url
-
-	curl -L https://$ADEB_REPO_URL/releases/download/$VERSION/$PREBUILT_HEADERS_FILE --output $TDIR_ABS/$PREBUILT_HEADERS_FILE ||
-		   die 9 "Failed to download kernel headers. Please check your internet connection and repository URL"
-
-	unzip -e $TDIR_ABS/$PREBUILT_HEADERS_FILE -d $TDIR_ABS/ ||
-		   die 10 "Failed to download kernel headers. Kernel $KERNEL_VERSION for $ARCH may not be supported or ADEB_REPO_URL is incorrect."
-	KERNELHDRS=$TDIR_ABS/`echo "$PREBUILT_HEADERS_FILE" | sed "s/.zip//"`
-}
-
-# Prepare is the last command checked
-if [ -z "$PREPARE" ]; then usage; fi
-
-if [ ! -z "$TARF" ] && [ ! -f $TARF ] && [ -z "$DOWNLOAD" ]; then die 5 "archive provided doesn't exist"; fi
-
-if [ ! -z "$KERNELSRC" ] && [ ! -d $KERNELSRC ]; then die 6 "Kernel source directory provided doesn't exist"; fi
-
-if [ ! -z "$KERNELHDRS" ] && [ ! -f $KERNELHDRS ]; then die 7 "Kernel headers tar.gz doesn't exist"; fi
-
-print_prepare_banner
-
-# Where do we want to store temporary files
-MKTEMP=0; if [[ -z ${TDIR+x} ]]  || [[ ! -d "${TDIR}" ]]; then
-	TDIR=`mktemp -d`; MKTEMP=1; fi
-rm -rf $TDIR/*
-TDIR_ABS=$( cd "$TDIR" ; pwd -P )
-
-if [ $DOWNLOAD -eq 1 ]; then
-   c_info "Downloading Androdeb from the web..."; c_info ""
-
-   # Github dropped tar gz support! ##?#??#! Now we've to zip everything.
-   check_repo_url
-
-   curl -L https://$ADEB_REPO_URL/releases/download/$VERSION/$FNAME --output $TDIR_ABS/$FNAME ||
-		   die 9 "Failed to download adeb release."
-
-   unzip -e $TDIR_ABS/$FNAME -d $TDIR_ABS/ ||
-		   die 10 "Failed to download adeb release. Double check the ADEB_REPO_URL value."
-   TARF=$TDIR_ABS/$FNAME_UZ
-fi
-
-if [ ! -z "$FULL" ] && [ -z "$KERNELSRC" ] && [ -z "$KERNELHDRS" ] && [ -z "$BI" ]; then
-	c_info "Kernel headers are needed but none were provided. Downloading pre-built headers"
-	download_headers
-fi
-
-OUT_TMP=$TDIR/debian; rm -rf $OUT_TMP; mkdir -p $OUT_TMP
-
-# Unpack the supplied kernel headers tar.gz directly into androdeb root
-if [ ! -z "$KERNELHDRS" ]; then
-	c_info "Building updating kernel headers from supplied tar.gz ($KERNELHDRS)"
-
-	# Is header tar gz update the only thing left to do?
-	if [[ ! -z "$SKIP_INSTALL" ]]; then
-		c_info "Skipping install"
-		push_unpack_tarred_headers $KERNELHDRS; do_cleanup; all_done_banner; exit 0; fi
-
-	tar -xvf $KERNELHDRS -C $OUT_TMP/ > /dev/null
-fi
-
-# Package kernel headers
-if [ ! -z "$KERNELSRC" ]; then
-	c_info "Building and updating kernel headers from kernel source dir ($KERNELSRC)"
-	$spath/bcc/build-kheaders-targz.sh ${KERNELSRC} $TDIR_ABS/kh.tgz > /dev/null
-
-	# Is header update the only thing left to do?
-	if [[ ! -z "$SKIP_INSTALL" ]]; then
-		c_info "Skipping install"
-		push_unpack_headers; do_cleanup; all_done_banner; exit 0; fi
-
-	mkdir $OUT_TMP/kernel-headers
-	tar -xvf $TDIR_ABS/kh.tgz -C $OUT_TMP/kernel-headers/ > /dev/null
-fi
-
-# Build FS from existing tar, very simple.
-if [ ! -z "$TARF" ]; then
-	c_info "Using archive at $TARF for filesystem preparation"
-	$ADB shell mkdir -p /data/androdeb/
-
-	c_info "Pushing filesystem to device.."
-	run_quiet $ADB push $TARF /data/androdeb/deb.tar.gz
-
-	c_info "Pushing addons to device.."
-	run_quiet $ADB push $spath/addons/* /data/androdeb/
-
-	c_info "Unpacking filesystem in device.."
-	run_quiet $ADB shell /data/androdeb/device-unpack
-
-	if [ ! -z "$KERNELHDRS" ]; then push_unpack_tarred_headers $KERNELHDRS; fi
-	if [ ! -z "$KERNELSRC" ]; then push_unpack_headers; fi
-
-	do_cleanup; all_done_banner; exit 0
-fi
-
-PACKAGES+="$DEFAULT_PACKAGES"
-c_info "Using temporary directory: $TDIR"
-
-if [[ $EUID -ne 0 ]]; then c_info "The next stage runs as sudo, please enter password if asked."; fi
-
-ex_files=$(mktemp); echo $EXTRA_FILES > $ex_files
-
-sudo $spath/buildstrap $ARCH $DISTRO $TDIR $OUT_TMP \
-		"$(make_csv "$PACKAGES")"\
-		$ex_files $INSTALL_BCC $SKIP_DEVICE
-rm $ex_files
-
-# If we only wanted to prepare a rootfs and don't have
-# a device connected, then just echo that and skip cleanup
-if [ $SKIP_DEVICE -eq 1 ]; then
-	c_info "Device preparation is being skipped for the selected options"
-	c_info "any builds that need to happen on device may be cloned but not built."
-
-	if [ ! -z $BI ]; then
-		sudo $spath/buildimage $OUT_TMP $(dirname $BUILD_IMAGEF)/$(basename $BUILD_IMAGEF)
-		sudo chmod a+rw $(dirname $BUILD_IMAGEF)/$(basename $BUILD_IMAGEF)
-		c_info "Your .img has been built! Enjoy!"
-	fi
-
-	do_cleanup
-	exit 0
-fi
-
-# Push tar to device and start unpack
-$ADB shell mkdir -p /data/androdeb/
-$ADB push $TDIR/deb.tar.gz /data/androdeb/
-$ADB push $spath/addons/* /data/androdeb/
-$ADB shell /data/androdeb/device-unpack
-
-# Build BCC and install bcc on device if needed
-if [ $INSTALL_BCC -eq 1 ]; then
-	$ADB shell /data/androdeb/run-command /bcc-master/build-bcc.sh;
-fi
-
-# Extract a tar of the built, compiled and installed androdeb env
-if [[ ! -z ${TARDIR+x} ]]; then
-	c_info "Creating tarball"
-	pushd $TARDIR
-	if [ $INSTALL_BCC -eq 0 ]; then
-		mv $TDIR/deb.tar.gz $FNAME_UZ
-	else
-		$ADB shell /data/androdeb/build-debian-tar
-		$ADB pull /data/androdeb/androdeb-fs.tgz $FNAME_UZ
-		$ADB shell rm /data/androdeb/androdeb-fs.tgz;
-	fi
-	zip -r $FNAME $FNAME_UZ
-	popd
-fi
-
-do_cleanup
-
-all_done_banner
diff --git a/bcc/build-bcc.sh b/bcc/build-bcc.sh
deleted file mode 100755
index a3ddc83..0000000
--- a/bcc/build-bcc.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-# This script should run within a bcc checkout
-
-spath=$( cd "$(dirname "$0")" ; pwd -P )
-cd $spath
-
-rm -rf build && mkdir -p build && cd build
-cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_C_COMPILER=clang-6.0 -DCMAKE_CXX_COMPILER=clang++-6.0
-make -j4
-make install
-cd ..
-rm -rf build
diff --git a/bcc/build-kheaders-targz.sh b/bcc/build-kheaders-targz.sh
deleted file mode 100755
index 06eed93..0000000
--- a/bcc/build-kheaders-targz.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/bash
-script_full_path=$( cd "$(dirname "$0")" ; pwd -P )
-
-if [ $# -ne 2 ]; then
-    echo "illegal number of parameters, usage: ./build KERNEL_PATH out.tar.gz"
-    exit 1
-fi
-
-# Please provide absolute paths
-KERNEL_PATH=$1
-OUT_TAR=$2
-
-KERNEL_PATH="$(dirname $(readlink -e $KERNEL_PATH))/$(basename $KERNEL_PATH)"
-if [ ! -d "$KERNEL_PATH" ]; then
-        echo "Kernel directory couldn't be found"
-        exit 3
-fi
-
-# kdir=$(basename $KERNEL_PATH)
-
-cd $KERNEL_PATH
-find arch -name include -type d -print | xargs -n1 -i: find : -type f > /tmp/kernel-headers.h
-find include >> /tmp/kernel-headers.h
-
-grep "include/generated/autoconf.h" /tmp/kernel-headers.h > /dev/null 2>&1
-retgrep=$?
-if [ $retgrep -ne 0 ]; then
-	>&2 echo ""
-	>&2 echo "The kernel sources at ${KERNEL_PATH} you pointed to aren't configured and built."
-	>&2 echo "Please atleast run in your kernel sources:"
-	>&2 echo $'make defconfig\nmake'
-	>&2 echo $'\nNote: You dont need to do the full build since headers are generated early on.\n'
-	>&2 echo "Note: Please build your kernel in tree (build and source should be in same directory)"
-	>&2 echo ""
-	exit $retgrep
-fi
-
-cat /tmp/kernel-headers.h | tar -zcf $OUT_TAR -T -
-rm /tmp/kernel-headers.h
diff --git a/bcc/misc/android-futex-contention-record b/bcc/misc/android-futex-contention-record
deleted file mode 100644
index a12ff79..0000000
--- a/bcc/misc/android-futex-contention-record
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-perf record -a -g -e syscalls:sys_enter_futex -e syscalls:sys_exit_futex -e sched:sched_waking $@
diff --git a/bcc/misc/android-futex-contention-report b/bcc/misc/android-futex-contention-report
deleted file mode 100644
index 7a8c122..0000000
--- a/bcc/misc/android-futex-contention-report
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-# description: futext contention measurement
-
-perf script $@ -s "$PERF_EXEC_PATH"/scripts/python/android-futex-contention.py
diff --git a/bcc/misc/android-futex-contention.py b/bcc/misc/android-futex-contention.py
deleted file mode 100644
index 5ef3841..0000000
--- a/bcc/misc/android-futex-contention.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# futex contention
-# (c) 2010, Arnaldo Carvalho de Melo <acme@redhat.com>
-# Licensed under the terms of the GNU GPL License version 2
-#
-# Translation of:
-#
-# http://sourceware.org/systemtap/wiki/WSFutexContention
-#
-# to perf python scripting.
-#
-# Measures futex contention
-
-import os, sys
-sys.path.append(os.environ['PERF_EXEC_PATH'] + '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
-from Util import *
-
-process_names = {}
-thread_thislock = {}
-thread_blocktime = {}
-
-lock_waits = {} # long-lived stats on (tid,lock) blockage elapsed time
-waker_wakee = {} # maps the futex waker to wakee
-max_waits = {} # Details about a maximum contention like owner, owner chain
-process_names = {} # long-lived pid-to-execname mapping
-
-def android_lock(callchain):
-    for c in callchain:
-        if 'sym' in c and 'name' in c['sym']:
-            name = c['sym']['name']
-        else:
-            continue
-
-        if 'art::Monitor::Lock' in name:
-            return True
-    return False
-
-def print_callchain(callchain):
-    for c in callchain:
-        if 'sym' in c and 'name' in c['sym']:
-            name = c['sym']['name']
-        else:
-            continue
-
-        print("    %s" % (name))
-
-def sched__sched_waking(event_name, context, common_cpu,
-        common_secs, common_nsecs, common_pid, common_comm,
-        common_callchain, comm, pid, prio, success,
-        target_cpu):
-        waker_wakee[pid] = [common_pid, common_callchain]
-
-def syscalls__sys_enter_futex(event, ctxt, cpu, s, ns, tid, comm, callchain,
-			      nr, uaddr, op, val, utime, uaddr2, val3):
-
-	cmd = op & FUTEX_CMD_MASK
-        if cmd != FUTEX_WAIT or android_lock(callchain) == False:
-		return # we don't care about originators of WAKE events 
-                       # or futex uses that aren't android locks.
-
-	process_names[tid] = comm
-	thread_thislock[tid] = uaddr
-	thread_blocktime[tid] = nsecs(s, ns)
-
-def syscalls__sys_exit_futex(event, ctxt, cpu, s, ns, tid, comm, callchain,
-			     nr, ret):
-
-        waker_pid = -1
-        waker_chain = "[no call chain]"
-
-	if thread_blocktime.has_key(tid):
-                # Gather stats about the contention (sum, min, max)
-		elapsed = nsecs(s, ns) - thread_blocktime[tid]
-		add_stats(lock_waits, (tid, thread_thislock[tid]), elapsed)
-
-                # Track details about the maximum contention seen
-                # including owner and its callchain
-                if (tid, thread_thislock[tid]) in max_waits:
-                    prev_wait = max_waits[(tid, thread_thislock[tid])][0]
-                else:
-                    prev_wait = 0
-
-                if elapsed > prev_wait:
-                    if tid in waker_wakee:
-                        waker_pid = waker_wakee[tid][0]
-                        waker_chain = waker_wakee[tid][1]
-
-                    max_waits[(tid, thread_thislock[tid])] = [elapsed, waker_pid, waker_chain, callchain]
-
-		del thread_blocktime[tid]
-		del thread_thislock[tid]
-
-def trace_begin():
-	print "Press control+C to stop and show the summary"
-
-def trace_end():
-	for (tid, lock) in lock_waits:
-                print("\n==============================================================\n")
-		min, max, avg, count = lock_waits[tid, lock]
-		print "%s[%d] lock %x contended %d times, %d avg ns, %d max ns" % \
-		      (process_names[tid], tid, lock, count, avg, max)
-                print ""
-
-                if not (tid, lock) in max_waits:
-                    print"Max contention info not available"
-                    continue
-
-                print "Callstack of suffering task:"
-                print_callchain(max_waits[tid, lock][3])
-                print ""
-
-                waker_pid = max_waits[tid, lock][1]
-                waker_name = process_names[waker_pid] if waker_pid in process_names else "nameless-owner"
-                print "Owner %s caused this contention of %d ns. Owner's Call stack below:" % (waker_name, max_waits[tid, lock][0])
-                print_callchain(max_waits[tid, lock][2])
-
diff --git a/bcc/misc/futex-contention.py b/bcc/misc/futex-contention.py
deleted file mode 100644
index 5c96780..0000000
--- a/bcc/misc/futex-contention.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# futex contention
-# (c) 2010, Arnaldo Carvalho de Melo <acme@redhat.com>
-# Licensed under the terms of the GNU GPL License version 2
-#
-# Translation of:
-#
-# http://sourceware.org/systemtap/wiki/WSFutexContention
-#
-# to perf python scripting.
-#
-# Measures futex contention
-
-import os, sys
-sys.path.append(os.environ['PERF_EXEC_PATH'] + '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
-from Util import *
-
-process_names = {}
-thread_thislock = {}
-thread_blocktime = {}
-
-lock_waits = {} # long-lived stats on (tid,lock) blockage elapsed time
-process_names = {} # long-lived pid-to-execname mapping
-
-def android_lock(callchain):
-    for c in callchain:
-        if 'sym' in c and 'name' in c['sym']:
-            name = c['sym']['name']
-        else:
-            continue
-
-        if 'art::Monitor::Lock' in name:
-            return True
-    return False
-
-def syscalls__sys_enter_futex(event, ctxt, cpu, s, ns, tid, comm, callchain,
-			      nr, uaddr, op, val, utime, uaddr2, val3):
-
-	cmd = op & FUTEX_CMD_MASK
-        if cmd != FUTEX_WAIT or android_lock(callchain) == False:
-		return # we don't care about originators of WAKE events 
-                       # or futex uses that aren't android locks.
-
-	process_names[tid] = comm
-	thread_thislock[tid] = uaddr
-	thread_blocktime[tid] = nsecs(s, ns)
-
-def syscalls__sys_exit_futex(event, ctxt, cpu, s, ns, tid, comm, callchain,
-			     nr, ret):
-	if thread_blocktime.has_key(tid):
-		elapsed = nsecs(s, ns) - thread_blocktime[tid]
-		add_stats(lock_waits, (tid, thread_thislock[tid]), elapsed)
-		del thread_blocktime[tid]
-		del thread_thislock[tid]
-
-def trace_begin():
-	print "Press control+C to stop and show the summary"
-
-def trace_end():
-	for (tid, lock) in lock_waits:
-		min, max, avg, count = lock_waits[tid, lock]
-		print "%s[%d] lock %x contended %d times, %d avg ns" % \
-		      (process_names[tid], tid, lock, count, avg)
-
diff --git a/bcc/misc/lockstat.py b/bcc/misc/lockstat.py
deleted file mode 100644
index fa3edda..0000000
--- a/bcc/misc/lockstat.py
+++ /dev/null
@@ -1,300 +0,0 @@
-#!/usr/bin/python
-#
-# lockstat Trace and display lock contention stats
-#
-# USAGE: lockstat
-
-# Licensed under the Apache License, Version 2.0 (the "License")
-# 28-Jul-2017   Gisle Dankel   Created this.
-
-from bcc import BPF
-from ctypes import c_int
-from time import sleep
-from datetime import datetime
-import argparse
-import subprocess
-import os
-
-# One Lock object per TGID and uaddr.
-class Lock(object):
-    def __init__(self):
-        self.contention_count = 0
-        self.elapsed_blocked = 0
-        self.thread_count = 0
-        self.last_stack_syms = []
-
-    def update(self, count, block_time, last_stack_syms):
-        self.contention_count += count
-        self.elapsed_blocked += block_time
-        self.thread_count += 1
-        self.last_stack_syms = last_stack_syms
-
-def run_command_get_pid(command):
-        p = subprocess.Popen(command.split())
-        return p.pid
-
-examples = """
-EXAMPLES:
-
-./lockstat
-        Trace calls to sys_futex and display contented locks every 5 seconds
-        for all processes running on the system
-./lockstat -p <pid>
-        Trace only for the specified pid and display contended locks
-        every 5 seconds
-./lockstat -p <pid> -t
-        Trace for a specified pid and print a message on each entry and exit to
-        sys_futex until interrupted or killed
-./lockstat -p <pid> 10
-        Trace the specified pid and show a message every 10 seconds
-./lockstat -c <command> 1 30
-        Run the specified command and display contended locks every 1 second
-        for a total of 30 times
-"""
-
-description = """
-Trace kernel futex events.
-These often occur because of lock contention, e.g. involving a pthread_mutex.
-This script resemblers the following SystemTap example:
-https://sourceware.org/systemtap/SystemTap_Beginners_Guide/futexcontentionsect.html
-"""
-
-parser = argparse.ArgumentParser(description=description,
-        formatter_class=argparse.RawDescriptionHelpFormatter,
-        epilog=examples)
-parser.add_argument("-p", "--pid", type=int, default=-1,
-        help="the PID to trace; if not specified, trace all")
-parser.add_argument("-t", "--trace", action="store_true",
-        help="print trace messages for each futex enter/exit")
-parser.add_argument("interval", nargs="?", default=5, type=int,
-        help="interval in seconds to print summary")
-parser.add_argument("count", nargs="?", type=int,
-        help="number of times to print the report before exiting")
-parser.add_argument("-c", "--command",
-        help="execute and trace the specified command")
-
-args = parser.parse_args()
-
-pid = args.pid
-command = args.command
-interval = args.interval
-num_prints = args.count
-trace_all = args.trace
-
-if command is not None:
-        print("Executing '%s' and tracing the resulting process." % command)
-        pid = run_command_get_pid(command)
-
-bpf_source = """
-#include <uapi/linux/futex.h>
-#include <uapi/linux/ptrace.h>
-#include <linux/sched.h>
-#include <linux/time.h>
-
-struct comm_t {
-    char name[TASK_COMM_LEN];
-};
-
-struct lock_key_t {
-        u64 uaddr;
-        u32 pid;
-        u32 tgid;
-};
-
-struct lock_info_t {
-        u64 elapsed_blocked;
-        u64 contention_count;
-        u64 sid;
-};
-
-BPF_HASH(pid_lock, u32, u64);
-BPF_HASH(pid_blocktime, u32, u64);
-BPF_HASH(tgid_comm, u32, struct comm_t);
-BPF_HASH(lock_stats, struct lock_key_t, struct lock_info_t, 1000000);
-BPF_STACK_TRACE(stack_traces, 16384);
-
-static inline int update_stats(u32 pid, u32 tgid, u64 uaddr, u64 block_time, u64 sid) {
-        struct lock_key_t key = {};
-        struct lock_info_t zero = {};
-        struct lock_info_t *info;
-
-        key.pid = pid;
-        key.tgid = tgid;
-        key.uaddr = uaddr;
-        info = lock_stats.lookup_or_init(&key, &zero);
-        info->elapsed_blocked += block_time;
-        info->contention_count++;
-        info->sid = sid;
-
-        if (0 == tgid_comm.lookup(&tgid)) {
-            struct comm_t comm;
-            bpf_get_current_comm(&comm.name, sizeof(comm.name));
-            tgid_comm.update(&tgid, &comm);
-        }
-        return 0;
-}
-
-// FIXME: Should attach to sys_enter_futex and sys_exit_futex tracepoints here,
-// but that does not currently work
-int sys_futex_enter(struct pt_regs *ctx, u32 *uaddr, int op, u32 val,
-                    struct timespec *utime, u32 *uaddr2, u32 val3) {
-        int cmd = op & FUTEX_CMD_MASK;
-        if (cmd != FUTEX_WAIT)
-                return 0;
-
-        u64 pid_tgid = bpf_get_current_pid_tgid();
-        u32 pid = pid_tgid;
-        u32 tgid = pid_tgid >> 32;
-
-        if (!(THREAD_FILTER))
-            return 0;
-
-        u64 timestamp = bpf_ktime_get_ns();
-        u64 uaddr64 = (u64) uaddr;
-        pid_lock.update(&pid, &uaddr64);
-        pid_blocktime.update(&pid, &timestamp);
-
-        if (SHOULD_PRINT)
-                bpf_trace_printk("enter sys_futex, pid = %u, uaddr = %x, "
-                                 "cmd = %u\\n", pid, uaddr64, cmd);
-        return 0;
-}
-
-int sys_futex_exit(struct pt_regs *ctx) {
-        u64 pid_tgid = bpf_get_current_pid_tgid();
-        u32 pid = pid_tgid;
-        u32 tgid = pid_tgid >> 32;
-        if (!(THREAD_FILTER))
-            return 0;
-
-        u64 *blocktime = pid_blocktime.lookup(&pid);
-        u64 *uaddr = pid_lock.lookup(&pid);
-        u64 timestamp = bpf_ktime_get_ns();
-        u64 elapsed;
-        u64 sid;
-
-        if (blocktime == 0 || uaddr == 0)
-                return 0; // not FUTEX_WAIT, or (less likely) missed futex_enter
-
-        elapsed = timestamp - *blocktime;
-
-        sid = stack_traces.get_stackid(ctx, BPF_F_USER_STACK);
-        update_stats(pid, tgid, *uaddr, elapsed, sid);
-        pid_lock.delete(&pid);
-        pid_blocktime.delete(&pid);
-
-        if (SHOULD_PRINT) {
-                bpf_trace_printk("exit sys_futex, uaddr = %x, elapsed = %uns\\n",
-                                 uaddr == 0 ? 0 : *uaddr, elapsed);
-        }
-        return 0;
-}
-
-"""
-
-bpf_source = bpf_source.replace("SHOULD_PRINT", "1" if trace_all else "0")
-
-thread_filter = '1'
-if pid != -1:
-	print("Tracing pid %d, Ctrl+C to quit." % pid)
-	# 'tgid' in kernel space is what people thin of as 'pid' in userspace
-	thread_filter = "tgid == %d" % pid
-else:
-	print("Tracing all processes, Ctrl+C to quit.")
-
-bpf_source = bpf_source.replace("THREAD_FILTER", thread_filter)
-
-bpf_program = BPF(text=bpf_source)
-bpf_program.attach_kprobe(event="SyS_futex", fn_name="sys_futex_enter")
-bpf_program.attach_kretprobe(event="SyS_futex", fn_name="sys_futex_exit")
-
-def get_syms(stack, pid):
-    global bpf_program
-    syms = []
-    for addr in stack:
-        s = bpf_program.sym(addr, pid, show_offset=True)
-        syms.append(s)
-    return syms
-
-def print_syms(syms):
-    print("=========")
-    for f in syms:
-        print(f)
-    print("=========")
-
-def is_android_monitor_lock(syms):
-    for s in syms:
-        if 'art::Monitor::Lock' in s:
-            return True
-    return False
-
-def disp_stack(stack, pid):
-    for addr in stack:
-        s = bpf_program.sym(addr, pid, show_offset=True)
-
-def create_tgid_stats():
-        global bpf_program
-        stats = bpf_program["lock_stats"]
-        res = {}
-        stack_traces = bpf_program['stack_traces']
-        for key, val in stats.items():
-                # Only display Android monitor locks
-                if val.sid >= 0:
-                    ust = stack_traces.walk(val.sid)
-                    syms = get_syms(ust, key.pid)
-                    if not is_android_monitor_lock(syms):
-                        continue
-                else:
-                    continue
-
-                if not key.tgid in res:
-                        res[key.tgid] = {}
-                if not key.uaddr in res[key.tgid]:
-                        res[key.tgid][key.uaddr] = Lock()
-
-                lock = res[key.tgid][key.uaddr]
-                lock.update(val.contention_count, val.elapsed_blocked, syms)
-        return res
-
-def print_comm_stats(stats):
-        if stats == {}:
-            return
-
-        comms = bpf_program["tgid_comm"]
-        print("\n%s:" % (datetime.now().strftime("%H:%M:%S")))
-        for tgid, locks in stats.items():
-                comm = comms[c_int(tgid)].name
-                print("\n  %s (%d):" % (comm, tgid))
-                sorted_locks = sorted(locks.items(),
-                                      key=lambda x: x[1].elapsed_blocked,
-                                      reverse=True)
-                for addr, stats in sorted_locks:
-                    print("    %x: %dms (%d contentions involving %d threads, avg %dus)" %
-                          (addr, stats.elapsed_blocked / 1000000,
-                           stats.contention_count, stats.thread_count,
-                           stats.elapsed_blocked / stats.contention_count / 1000))
-
-                    # No use of displaying lock stacks since we're only
-                    # filtering for Android monitor locks.
-                    #
-                    # print("Last stack for this lock:")
-                    # print_syms(stats.last_stack_syms)
-
-count_so_far = 0
-while True:
-        if trace_all:
-                print(bpf_program.trace_fields())
-        else:
-                try:
-                        sleep(interval)
-                except KeyboardInterrupt:
-                        exit()
-                print_comm_stats(create_tgid_stats())
-                count_so_far += 1
-                bpf_program['tgid_comm'].clear()
-                bpf_program['lock_stats'].clear()
-                bpf_program['pid_lock'].clear()
-                bpf_program['pid_blocktime'].clear()
-
-                if num_prints is not None and count_so_far >= num_prints:
-                        exit()
diff --git a/buildimage b/buildimage
deleted file mode 100755
index ccdc65d..0000000
--- a/buildimage
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-set -e
-
-# Given a path, make an ext4 image out of it, store it in $2
-dd if=/dev/zero of=$2 bs=4k count=$((256 * 1024 * 2))
-mkfs.ext4 $2
-
-OUT=`mktemp -d`
-mount -o loop $2 $OUT/
-rsync -ra $1/ $OUT/
-umount $OUT/
diff --git a/buildstrap b/buildstrap
deleted file mode 100755
index b33b71e..0000000
--- a/buildstrap
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/bash
-
-spath="$(dirname "$(readlink -f "$0")")"
-source $spath/utils/support
-source $spath/utils/banners
-
-ARCH=$1
-DISTRO=$2
-TDIR=$3
-OUT_TMP=$4
-PACKAGES=$5
-EXTRA_FILES="$(cat $6)"
-INSTALL_BCC=$7
-SKIP_DEVICE=$8		# Skip any device-specific stages
-VARIANT="--variant=minbase"
-
-time qemu-debootstrap --arch $ARCH --include=$PACKAGES $VARIANT \
-	$DISTRO $OUT_TMP http://deb.debian.org/debian/
-
-# Some reason debootstrap leaves these mounted
-umount $OUT_TMP/proc/sys/fs/binfmt_misc || true
-umount $OUT_TMP/proc || true
-
-# Make bash the default shell
-chroot $OUT_TMP rm /bin/sh || true
-chroot $OUT_TMP ln -s /bin/bash /bin/sh || true
-cp $spath/addons/bashrc $OUT_TMP/.bashrc
-cp $spath/addons/bashrc.common $OUT_TMP/.bashrc.common
-cp $spath/addons/bashrc.silent $OUT_TMP/.bashrc.silent
-cp $spath/addons/get_kvers.sh $OUT_TMP/
-
-for f in $EXTRA_FILES; do
-	if [ $f == "none" ]; then continue; fi
-	cp $f $OUT_TMP/
-done
-
-# Cleanup
-rm -rf $OUT_TMP/lib/udev/*
-rm -rf $OUT_TMP/var/lib/apt/lists/*
-rm -rf $OUT_TMP/var/cache/apt/archives/*deb
-rm -rf $OUT_TMP/usr/share/locale/*
-rm -rf $OUT_TMP/usr/lib/share/locale/*
-rm -rf $OUT_TMP/usr/share/doc/*
-rm -rf $OUT_TMP/usr/lib/share/doc/*
-rm -rf $OUT_TMP/usr/share/ieee-data/*
-rm -rf $OUT_TMP/usr/lib/share/ieee-data/*
-rm -rf $OUT_TMP/usr/share/man/*
-rm -rf $OUT_TMP/usr/lib/share/man/*
-
-# Fix apt-get issue: Android requires _apt user to be in the
-# AID_INET group which is also android specific.
-grep -ri _apt:x:100:65534 $OUT_TMP/etc/passwd > /dev/null 2>&1
-if [ $? -ne 0 ]; then
-	c_warning "_apt user cannot be added to AID_INET group"
-else
-	sed -i -e 's/_apt:x:100:65534/_apt:x:100:3003/' $OUT_TMP/etc/passwd
-fi
-
-# Add a default DNS server
-echo "nameserver 4.2.2.2" > $OUT_TMP/etc/resolv.conf
-
-# Clone BCC if needed
-if [ $INSTALL_BCC -eq 1 ]; then
-	git clone https://github.com/iovisor/bcc.git $TDIR/debian/bcc-master
-	cp $spath/bcc/build-bcc.sh $TDIR/debian/bcc-master/;
-fi
-
-# Should be really do this?
-chmod -R 0777 $TDIR/
-
-[ $SKIP_DEVICE -eq 0 ] || exit 0
-
-c_info "Compressing new filesystem to prepare to push to Android /data/androdeb/"
-tar -zcf $TDIR/deb.tar.gz -C $TDIR debian
-
-chmod 0777 $TDIR/deb.tar.gz
diff --git a/packages/bcc b/packages/bcc
deleted file mode 100644
index 1d91354..0000000
--- a/packages/bcc
+++ /dev/null
@@ -1,25 +0,0 @@
-PACKAGES+="
-llvm-6.0-dev
-libclang-6.0-dev
-libelf-dev
-libfl-dev
-libunwind-dev
-libdw-dev
-git
-gcc
-libtool
-autoconf
-make
-cmake
-iperf
-arping
-ethtool
-flex
-bison
-python
-clang-6.0
-python-netaddr
-python-pyroute2
-"
-
-INSTALL_BCC=1
diff --git a/packages/compilers b/packages/compilers
deleted file mode 100644
index f380dd3..0000000
--- a/packages/compilers
+++ /dev/null
@@ -1,9 +0,0 @@
-PACKAGES+="\
-git
-clang-6.0
-gcc
-libtool
-autoconf
-make
-cmake
-"
diff --git a/packages/editors b/packages/editors
deleted file mode 100644
index 99865fa..0000000
--- a/packages/editors
+++ /dev/null
@@ -1,5 +0,0 @@
-PACKAGES+="\
-vim
-nano
-git
-"
diff --git a/packages/scheduler b/packages/scheduler
deleted file mode 100644
index a5df38c..0000000
--- a/packages/scheduler
+++ /dev/null
@@ -1,4 +0,0 @@
-PACKAGES+="\
-git
-rt-app
-"
diff --git a/packages/tracers b/packages/tracers
deleted file mode 100644
index 38c1d43..0000000
--- a/packages/tracers
+++ /dev/null
@@ -1,5 +0,0 @@
-PACKAGES+="\
-linux-perf
-trace-cmd
-strace
-"
diff --git a/utils/banners b/utils/banners
deleted file mode 100755
index 5f975bc..0000000
--- a/utils/banners
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash -x
-
-print_prepare_banner() {
-	c_info "Preparing device..."
-	if [ $FULL -eq 1 ]; then
-		c_info "Doing a full install."
-	else
-		c_info "Doing a base install."
-	fi
-	c_info ""
-}
-
-usage() {
-	c_info "USAGE:"
-	c_info "adeb"
-	c_info "	shell		Enter the androdeb shell environment and get to work!"
-	c_info "	remove		Remove androdeb from the device"
-	c_info "	git-pull	Git pull androdeb to update it on your host"
-	c_info "	pull		Copy files from the androdeb filesystem in the device"
-	c_info "	push		Copy files to the androdeb filesystem in the device"
-	c_info ""
-	c_info "	prepare		Prepare the device (when running for the first time)"
-	c_info "			By default, this will download and install a base image."
-	c_info "	** Folowing are the prepare options **"
-	c_info "	  --full	Pass this to prepare to download and install the full image which"
-	c_info "			contains compilers, editors, tracers etc."
-	c_info ""
-	c_info "	  --build	Instead of download, build and install the image onto the device"
-	c_info ""
-	c_info "	  --archive	Use archive for root fs (overrides all other prepare options)"
-	c_info ""
-	c_info "	  --buildtar	While preparing, also build a tar.gz.zip file of the filesystem,"
-	c_info "				this is how images that are downloaded by prepare are built"
-	c_info ""
-	c_info "	  --build-image	Build an ext4 .img with the base image and BCC (useful for Qemu)"
-	c_info ""
-	c_info "	** Folowing are misc build options **"
-	c_info "	  --tempdir	Use a specific temporary directory for build operation"
-	c_info "	  --arch		Specify an ARCH to build for (default arm64)"
-	c_info "	  --distro	Debian distro to base on (default is buster)"
-	c_info ""
-	c_info "	** Folowing are the options for BCC **"
-	c_info "	  --bcc		Build and install BCC onto the device, from source"
-	c_info "			BCC is already included in 'prepare --full'"
-	c_info ""
-	c_info "	  --kernelsrc	 Extract kernel headers for BCC from this directory"
-	c_info ""
-	c_info "	  --skip-install Pass this to --kernelsrc if you wish to only extra/install kernel headers"
-	c_info "			 and would like to exit after that (skips build/install of everything else)"
-	c_info ""
-	c_info "	** Folowing are device specific options ** "
-	c_info "	--device	Serial number of adb device."
-	c_info "	      -s	Serial number of adb device."
-	c_info ""
-	c_info "	--debug		Debug all execution."
-	exit 1
-}
-
-
diff --git a/utils/packheaders.sh b/utils/packheaders.sh
deleted file mode 100755
index d10b81b..0000000
--- a/utils/packheaders.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/bash
-
-# Utility to build kernel headers tar/zip file
-# must be run from the top level of a kernel source directory
-# and supplied an output file name
-
-MKTEMP=0; if [[ -z ${TDIR+x} ]]  || [[ ! -d "${TDIR}" ]]; then
-	TDIR=`mktemp -d`; MKTEMP=1; fi
-rm -rf $TDIR/*
-TDIR_ABS=$( cd "$TDIR" ; pwd -P )
-
-
-if [ $# -ne 1 ]; then
-  echo "usage: makeheaders.sh <output file name>"
-  exit 0
-fi
-
-mkdir -p $TDIR_ABS/kernel-headers
-
-find arch -name include -type d -print | xargs -n1 -i: find : -type f -exec cp --parents {} $TDIR_ABS/kernel-headers/ \;
-find include -exec cp --parents {} $TDIR_ABS/kernel-headers/ 2> /dev/null \;
-tar -zcf $1 --directory=$TDIR_ABS kernel-headers
-
-zip -r $1.zip $1
-rm -rf $TDIR/*; if [ $MKTEMP -eq 1 ]; then rm -rf $TDIR; fi
diff --git a/utils/support b/utils/support
deleted file mode 100755
index ad72e05..0000000
--- a/utils/support
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/bin/bash -x
-# Utilities to interact with android more easily
-
-function run_quiet() { eval "$* >/dev/null 2>&1"; }
-
-make_csv() {
-	out=""
-	in=$1
-	for p in $in; do
-		if [ "x$out" == "x" ]; then
-			out=$p
-		else
-			out="$out,$p"
-		fi
-	done
-	echo $out
-}
-
-make_spaces() {
-	out=""
-	in=$1
-	for p in $in; do
-		if [ "x$out" == "x" ]; then
-			out=$p
-		else
-			out="$out $p"
-		fi
-	done
-	echo $out
-}
-
-cmd_exists() {
-	which $1 > /dev/null
-	return $?
-}
-
-do_adb_root() {
-	ADB="$1"
-	$ADB root > /dev/null 2>&1
-	return $?
-}
-
-die() {
-	exit_code=$1
-	msg=$2
-	c_error "$msg"
-	exit $exit_code
-}
-
-die_if_no_androdeb() {
-	set +e
-	$ADB shell ls /data/androdeb/debian > /dev/null 2>&1
-	if [ $? -ne 0 ]; then die 8 "Existing androdeb env not found on device. $1"; fi
-	set -e
-}
-
-#  Helper function to count number of source arguments in a list
-#  when more than one argument is supplied, it is assumed the last argument
-#  is a destination
-count_sources() {
-	local source_count=$#
-	if [ $source_count -gt 1 ]; then
-		source_count=$((source_count - 1))
-	fi
-	echo "$source_count"
-}
-
-# Borrowed from project LISA.
-################################################################################
-# Logging functions
-################################################################################
-c_error() {
-	NOW=$(date +"%H:%m:%S")
-	# If there is only one parameter, let's assume it's just the message
-	if [ $# -gt 1 ]; then
-		local parent_lineno="$1"
-		local message="$2"
-		echo -e "${red}$NOW - ERROR: on or near line ${parent_lineno}: ${message}${nocol}"
-		return
-	fi
-
-	local message="$1"
-	echo -e "${red}$NOW - ERROR   : ${message}${nocol}"
-}
-
-c_warning() {
-	NOW=$(date +"%H:%m:%S")
-	# If there is only one parameter, let's assume it's just the message
-	if [ $# -gt 1 ]; then
-		local parent_lineno="$1"
-		local message="$2"
-		echo -e "${yellow}$NOW - WARNING: on or near line ${parent_lineno}: ${message}${nocol}"
-		return
-	fi
-	local message="$1"
-	echo -e "${yellow}$NOW - WARNING : ${message}${nocol}"
-}
-
-c_info() {
-	NOW=$(date +"%H:%m:%S")
-	# If there is only one parameter, let's assume it's just the message
-	if [ $# -gt 1 ]; then
-		local parent_lineno="$1"
-		local message="$2"
-		echo -e "${blue}$NOW - INFO: on or near line ${parent_lineno}: ${message}${nocol}"
-		return
-	fi
-	local message="$1"
-	echo -e "${blue}$NOW - INFO    : ${message}${nocol}"
-}
-
-d_notify() {
-	MESSAGE=$1
-	ICON=$2
-	# Let's try to send a desktop notification,
-	# silently fails if there is not support.
-	notify-send \
-		--icon=$ICON \
-		--urgency=critical \
-		--expire-time=1500 \
-		"Test Series" \
-		"$MESSAGE" \
-		2>/dev/null
-}
-
-my_tput() {
-	if [ "${TERM-dumb}" == dumb ]; then
-		return
-	fi
-	tput $*
-}
-
-box_out()
-{
-	local s=("$@") b w
-	for l in "${s[@]}"; do
-		((w<${#l})) && { b="$l"; w="${#l}"; }
-	done
-	my_tput setaf 3
-	echo -e "|-${b//?/-}-|"
-	for l in "${s[@]}"; do
-		printf '| %s%*s%s |\n' "$(my_tput setaf 4)" "-$w" "$l" "$(my_tput setaf 3)"
-		# echo "|-${b//?/-}-|"
-	done
-	echo "|-${b//?/-}-|"
-	my_tput sgr 0
-}
-
-
-################################################################################
-# Colors
-################################################################################
-
-if [ -t 1 ]; then
-	ncolors=$(my_tput colors)
-	if [ -n "${ncolors}" ] && [ ${ncolors} -ge 8 ]; then
-		nocol='\e[0m' # No Color
-		white='\e[1;37m'
-		black='\e[0;30m'
-		blue='\e[0;34m'
-		lblue='\e[1;34m'
-		green='\e[0;32m'
-		lgreen='\e[1;32m'
-		cyan='\e[0;36m'
-		lcyan='\e[1;36m'
-		red='\e[0;31m'
-		lred='\e[1;31m'
-		purple='\e[0;35m'
-		lpurple='\e[1;35m'
-		brown='\e[0;33m'
-		yellow='\e[1;33m'
-		grey='\e[0;30m'
-		lgrey='\e[0;37m'
-	fi
-fi