[Toybox] [PATCH] Another Android roadmap update.

Rob Landley rob at landley.net
Sat Sep 12 10:25:50 PDT 2015


On 09/12/2015 10:09 AM, enh wrote:
> One of the great things about git is that it's really cheap to just
> clone another copy. Or stash, do something else and "stash pop". Or use
> multiple branches.

Under ~/toybox I currently have toy2, toy3, toy4, toy5, toybox,
toybox.old, git2, and clean directories. Plus 25 "patch" files in the
toy2 directory (my current working directory), and git diff --name-only
| wc says 29 files.

Then in the toybox directory I have 19 text files with names like
"cp.txt" and "psnotes.txt", but one of them is todo.txt (attached,
2.3k). And then in the directory above that, I have a bunch more files
like 9p.txt and uclinux.txt and one of those is todo.txt (much smaller,
290 bytes). Then in my home directory I have a third todo.txt (attched,
14k) along with files like todo.today and today.txt and so on which are
of course not current.

That's ignoring the 8 desktops each with a half-dozen windows with
dozens of tabs where the fact a tab has a file open or the result of a
test displayed lets me know what I left off in the middle of, and the
browser tabs open to github or some standards document, or the email
message windows with half-composed replies or emails marked as unread
indicating go back and look at that again...

> Of course, it's definitely possible to end up with a lot of different
> clones lying around, but at least it makes it hard to accidentally check
> in part of an unfinished change when doing something else. (And for a
> small project like toybox you really can afford to throw a clone away
> after using it once.)

It's a symptom. The causal problem is I get interrupted halfway through
stuff and things accumulate rather than completing because I'm
swap-thrashing. The fix is to sit down and spend hours at a time closing
tabs.

$DAYJOB has gotten exciting (plane to tokyo in 3 hours). Toybox has
gotten exciting. Aboriginal needs an overhaul to do musl properly which
means it needs the main textcase (Linux From Scratch) redone from 6.8 to
current and it's 2 or 3 kernel versions behind (The mips guys took the
bug report upstream and it looks like they fixed it in 4.2, and I fixed
the sparc breakage by noticing -3 mode was always enabled and fixing
that but what was breaking was uClibc is sanity checking the pipe -3
arguments in the syscall and is the problem uClibc or is the problem how
I'm using pipe, meanwhile x86_64 distcc is still broken even with mips
and digging into the code is a convoluted mess and I don't have time to
write a distcc replacement of my own right now...) I have a pile of
kernel todo items but haven't had time. Poking at llvm (let alone qcc)
is on a back burner but might become relevant for $DAYJOB and thus jump
the queue...

> But I've found that one tree for my work and one tree for applying and
> testing contributions works well and isn't confusing. And I get easily
> confused ☺

I get easily confused too. I've lost dozens of half-finished large
changes in the past year alone just because my tree got so messy I
started a new one, and by the time I went back to look at the old tree
it was too stale to bother porting from and I just started over. (I'm
pretty sure I still have that half-done dd rewrite somewhere, for
example, but who cares at this point?)

Working on it... :)

Rob
-------------- next part --------------
Low hanging fruit and/or high demand:
  ioctl.c
  newfs_msdos/mkfs.vfat
  ping.c
  lsof.c

Cleanup soon:
  route.c
  bzcat.c
  tar.c
  nbd-client.c
  ls.c --preserve
  blkid.c: implement -U and -L via /proc/partitions
  telnet/netcat
    - xconnect, socket() bind() connect()

fix strcasestr() problem

readfile should just take filename, readfileat() can take existin buffer.

halt/poweroff (in reboot) don't build standalone due to help text.
  And gratuitous main() wrappers elsewhere...

scripts/single.sh enables SMACK or BLAH_SMACK which is wrong.

hexedit: undo buffer

Why no -Z in mkdir --help when enabled?

cp --preserve=context,links,xattr,mode,ownership,timestamps,all
  -p = mode,ownership,timestamps

vertical line stack display infrastructure w/scrolling
  key reader returns list of known keys with #defines
    - how do I input utf8 and what does that look like?
  
  redo hexedit to use genericized

  implement more, command line history, midnight commander?
    - scrollable file list, expand/shrink, total size+files each one

  Callback to draw a single line, with/without "highlight" indicator.
    - fontmetrics mbrlen(), mbrtowc(), wcwidth(), strwidth()
    -  trim output to edge of screen (wrap or not-wrap), and
      write bottom-right character as necessary.
    - place cursor within data? If cursor off right edge, wrap/scroll.
      On last line, drawing char in bottom right corner:
      echo -e '\033[25;79HX\033[25;79H\033[1@\033[0;0H'
  draw full screen
    line up
    line down
    scroll screen up   (shift up or up at edge)
    scroll screen down (shift down or down at edge)
    page up, page down
    home, end
    jump to line
  
callback for this line, with/without "highlight" indicator.
    cursor up/down within (vi) vs just scroll stack (more)
      - and then there's command line editing behavior, stay in place but move
        up when length of "line" expands!
    cursor left/right handled locally
    pgup/pgdn/home/end
    shift-left? control-left?

  screen height: small as possible for command history? Scrolls in place.

qemu-system-xtensa

git internals: http://lccojapan2015.sched.org/event/ebb3f293915804382ff319e329f98409

vi accept input from pipe then read from /dev/tty for filename "-"
swapon -d (/etc/fstab -o discard)
scripts/config2help.c add @CFGSYM@ lines
cp --preserve=xattr,context --no-preserve --sparse
time -v (page faults)
-------------- next part --------------
modify build to keep old .config and diff with new .config to get changed
symbol list, sort -u it, find *.c lib/*.c toys/*/*.c with _SYM|_SYM|...
and force rebuild of those.

Figure out why -Z isn't showing up in mkdir help.

Add git extensions to patch.c: http://git-scm.com/docs/git-diff
-------------- next part --------------
[BLOG] why I blog http://lists.landley.net/pipermail/toybox-landley.net/2015-September/004425.html September 5

Design issues:
  comma_bits(): how to automate comma flag generation? [BLOG]
    lib/getmountlist.c ps.c
    comma_scan() not grabbing last entry (hyejin kim cp.c bug report)

uclinux-dist triage to update roadmap
  enh pending roadmap update?

hyejin kim last bit of falsepositive review? Did not understand...

Fix dirtree for infinite recursion depth. Design notes:
  http://lists.landley.net/pipermail/toybox-landley.net/2015-August/004391.html
  if filehandle > getrlimit(RLIMIT_NOFILE)/2 do cd .. and compare stat behavior
    EXCEPT for symlinks traversed as directories, must cache ->parent for that.
    need to cache rlimit to avoid syscalls
  update www/code.html

sed + support

vmlinux build devtmpfs_mount needs to work
  - 4.2 kernel patch: ~/temp2 ~/sei/linux-4.2 ~/sei/linux-3.19-sei.patch
  ~/sei/busybox.txt

check oneit -3 on sparc (libc/sysdeps/linux/sparc/pipe.S sanity check? BLOG)
did I get df -H done?
sh2eb toolchain calls ld.real with no prefix when -melf?
promote mdev already

Container stuff (nspawn, see ~/cut.txt)

cleanup lsof

LSB 5.0 came out, ~/toybox/toy2/lsb50.txt [BLOG sep 3, AlliedEnvy on freenode]

scripts/single.sh install makes cp instead?
promote gunzip (disentangle from compression side)

email:
  Going through 8/17/2015 3:50 enh "Another Android roadmap update"

  8/19/2015 Isaac Dunham init SIGTERM
  8/17/2015 enh fix uptime.c
  7/17/2015 Sameer Pradhan cp - typo
  7/16/2015 enh Squinting at LSM support in cp
  7/14/2015 Isaac Dunham Working on a [currently lame] downloader
  7/14/2015 Sameer Pradhan Refactoring/cleanup of route.c and netstat.c
  7/13/2015 Yeongdeok Suh names_to_pid() of killall checks only first argument
  5/20/2015 David Halls armv6l

toybox:
  vi ~/cleanup/notes.txt

  Spreadsheet of false positives
    ~/toybox/toy2/falsepositive.xlsx

  soc_top
    cd ~/sei/soctop/soc_top/out
    vi merges.txt

  vi ~/toybox/toy2/todo.txt
  vi ~/sei/todo.txt
  vi ~/sei/notes.txt
  vi ~/devtree.txt

  ~/toybox/toy2/*.patch (nbdfork.patch?)

  hexedit.c: factor out draw_tail()

  blah.patch: mdev change. Isaac? (August 1...)

  PING COMMAND!!!


  git diff www/roadmap.html
    - finish uclinux analysis
  du -h
    blah3.patch
    toys/example/test_human_readable.c
    lib/lib.c human_readable()

  uptime
    cd ~/toybox/pending/core/toolbox; ./a.out && uptime
    vi core/toolbox/uptime2.c
    vi toys/other/uptime.c

  toys/lsb/gunzip.c bitbuf_get()

  main.c main()
  lib/xwrap.c xpopen_both();
  toys/posix/cpio.c x8u()

  lib/net.c xconnect()
  toys/other/netcat.c line 107 xsocket() call
    - git diff that
  toys/pending/tftp.c tftp_main()

  www/history.html

  blkid /dev/sda5
    - select by label or UUID, output only that?
  grep -r 'ai_family.*=' toys/*/*.c
  ./telnet 127.0.0.1 37
  vi tftp.txt
    ./busybox --help tftp
    ./busybox --help tftpd
  vi /usr/include/*/bits/socket.h line 58
  grep 'connect(' lib/*.c toys/*/*.c

  man lsof
  vi lsof.txt
  vi ~/toybox/pending/core/toolbox/lsof.c

  toys/posix/grep.c add -ABC

  toys/*/ps.c
  toys/*/top.c
    cat /proc/1/stat
  toys/*/cp.c line 350

  cd ~/toybox/toy2/idunham
    git log

  reset && grep '^[a-z].*(' toys/*/*.c | grep -v ':static' | grep -v _main | grep -v '/pending/'
    - nonstatic function check

  linux:
    git show 69349c2dc01c (config_enable)
    git show 96c586555 (loop autodestruct)
    grep rootflag init/do_mounts.c
    arch/sh/include/uapi/asm/cpu-features.h processor flags

    git show 46490b572544 (broke mips)
    git show 620b1550345 (didn't fix mips)
      arch/mips/kernel/elf.c arch_check_elf()
      CONFIG_MIPS_O32_FP64_SUPPORT

  aboriginal:
    vi ~/talks/shrink/coldfire
    cd ~/nommu (emails!)
    compare sh4 with sources/targets/sh4
    sparc broke
      toybox git e6abb61e057
      ./root-filesystem.sh sparc && ./system-image.sh sparc && more/run-emulator-from-build.sh sparc

  vi ~/sei/rich/fdpic_elf_loader.diff

android:
  cd ~/android
    sudo debootstrap sid sid ftp://ftp.debian.org/debian/

Toybox
  Build nommu
    Fix fork, forkpty
      - detect musl fork() broken
      - implement vfork() reentry
    Fix single builds
    shell situation
  
Aboriginal
  Toolchain
    sh2eb
    sh2eb-elf
    binflt
      segment sharing
    musl fdpic
      fork detection (SYS_FORK, __NR_fork)
      segment sharing
  Nommu userspace
    finish ash->hush conversion
      - well it builds, but it's crap.
    bash doesn't build nommu!
      - neither does pdksh
  Cut a release with 4.0, 4.1
  Switch to musl
    upgrade LFS control image version
      6.8 won't build with musl due to specific (really stupid) package #ifdefs
  targets
    sh2eb
    coldfire
    h8300
    alpha
    s390
    m68k

j2 kernel
  Device tree rewrite
  sdcard driver rewrite using DMA
  SMP support
    - without MMU.
    - NUMA using bitlink?
  Break up to resubmit

Reproduce 0pf
  Board build and run
    For numato board, red board:
      Order hardware
        - avnet s6 microboard: http://em.avnet.com/s6microboard
          - very small/portable, usb powered, ethernet. Bad: no sdcard
        - numato mimas v2: http://numato.com/mimas-v2-spartan-6-fpga-development-board-with-ddr-sdram.html
          - builtin sdcard, vga, audio. USB powered.
          - serial's a bit funky
          - cheapest lx9 we've found so far.

      build bitstream
      install bitstream
      build kernel
      install kernel
      boot and run with console
  bitstream build
    Download binary
    Download git repo
      - WE STILL DO NOT HAVE A GIT REPO FOR SOC_TOP!
    Document xilinx install
      List alternatives to xilinx install
      Post on nommu.org/j2
    ELF toolchain
  userspace build
    aboriginal cpio image
  kernel build
    toolchain
    initramfs
    source
    config

VHDL programming
  base VHDL tutorial (where?)
    - the grey code thing is too big to be a hello world example.
    - tutorial on numato website is verilog, not vhdl
  Adapting 0pf build system to a board
    Numoto, "downloads" tab, User Constraints File:
      http://numato.com/downloads/dl/file/id/115/product/95/user_constraints_file.ucf
  0pf code walkthrough
    - what would h8300 take?
    - does dsp share code with main build? Why it isn't just a new spreadsheet.

websites
  services
    httpd
    mailing list
    wiki
    git repo
    release binaries
    release announcements (lwn.net?)
  lastgplv2 web
    - binutils
    - gcc
      - shiz sent me gentoo patch links?
      - bsd
    - gdb
    - Alternative to samba
    - rise and fall of copyleft
      - mp3, outline
      - The point is there are valid objections to GPLv3.
      - Apple removing GPL code
      - Android no GPL in userspace policy
  nommu.org
    - coldfire
      - build aboriginal coldfire image
        - requires nommu target working
      - run under QEMU
    - h8300
      gdb emulator?
  0pf web content
    - nommu.org/j2 ? I can't post to 0pf site...

buildroot nommu support
  toybox for buildroot
  j2 board support
  coldfire qemu board support

openembedded nommu support
  toybox
  j2
  coldfire

Talks
  shrinking c code tutorial
  turtles at plumber's
    - and toybox talk
    - and BOF/tutorial?
  turtles at texas linuxfest
    - tutorial?
  turtles at ELC europe
    - tutorial?

Wale's infrastructure
  get the vpn working on mac
  wiki

Get our guys contributing to open stuff
  individual introductions on 0pf at nommu.org
  dogfood open repo
  development discussion on open list

Update blog

---------------

Does the gas weak symbol issue:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66609
  affect binutils 2.17, and if so what's the fix?

Jun 15, 2015:
  #finish ash->hush conversion in aboriginal
  document m68k build (in email to Waldemar Brodkorb)
  update aboriginal to linux-4.0, run test builds
  #Resubmit 0BSD to SPDX through proper channels.
  Rich Felker got his board, talked with him a bit on irc
  toybox backlog

vi ~/richbastards.txt
toybox.mk for buildroot
~/today.txt
~/linux/linux$ grep -r elf_fdpic_arch_lay_out_mm .

sed captures from build (test each one)

~/aboriginal/s390$ wget http://ftp.nl.debian.org/debian/dists/stable/main/installer-s390/current/images/generic/initrd.debian
$ qemu-system-s390x -kernel kernel.debian -nographic -m 2048 -initrd initrd.debian -append "rdinit=/bin/ash console=/dev/ttyS0"

~/busybox/busybox$ grep -r IPPROTO_ICMP .

~/toybox/toybox/*.patch

toybox/axTLS/crypto/bigint.c
man dosfsck
qemu/block/vvfat.c
examine toybox/serviceman
toybox/pending/deflate/zip30/deflate.c

ssh -X 192.168.1.6 -X thunderbird
~/email/newmail/thunderbird$ rsync --delete -avHzPe "ssh" 192.168.1.6:.thunderbird/. . --bwlimit=150

$ find . -name "*.h" | xargs grep ELF_FDPIC_CORE_EFLAGS
./arch/frv/include/asm/elf.h:#define ELF_FDPIC_CORE_EFLAGS	EF_FRV_FDPIC
./arch/c6x/include/asm/elf.h:#define ELF_FDPIC_CORE_EFLAGS	0
./arch/blackfin/include/asm/elf.h:#define ELF_FDPIC_CORE_EFLAGS	EF_BFIN_FDPIC
./arch/sh/include/asm/elf.h:#define ELF_FDPIC_CORE_EFLAGS	EF_SH_FDPIC
^C
landley at driftwood:~/linux/linux$ vi arch/sh/include/asm/elf.h


m68k fork
  - squish kernel config
  - qemu command line

aboriginal
  - x86-64 merge TLS changes
  - sh2 binflt merge
    - requires full cross-compiler to get host libraries
  - coldfire
toybox
  - merge bionic build probe
  - finish FLAG_ macro redo

QEMU sh2 support ala jeff's email

finish/commit/test toybox sed.
finish/commit/test toybox ping.

poke posix guys, cpio format:
  kernel.org/doc/Documentation/early-userspace/buffer-format.txt

toybox: chroot hard (new namespace, pivot_root with "/" as old,
cd filehandle, umount -l ".", cd filehandle)

aboriginal cpio test:
> Now, as far as files to look at...
> We want a list of files with names that are 1, 2, 3, and no bytes longer
> than n*4 bytes to check padding; at least one unopenable device, socket,
> symlink, or directory; and ideally, a selection of file sizes.
> Without root access, /dev/console counts as unopenable.

wiki.musl-libc.org
  - update current events
  - linky
    - ftp://ftp.barfooze.de/pub/sabotage
    - http://distfiles.gentoo.org/experimental/amd64/

toybox 0.4.8 release:
  - cleanup.html
    - uudecode.txt
  - grep.c (writeup: grep.txt)
  - vmstat.c (writeup: ~/vmstat.txt)
    - man 3 clock_gettime
  - cpio -d (mkdir -p -> lib)
  - copy.patch
  - reply to:
    - felix janda 12/02 "Factor out dhcpd's and syslogind's main loops"
    - ibid.ag 12/04/2013 message about "archivers".

toybox after 0.4.8:
  man fstrim
  rsync.samba.org/tech_report/node3.html
    - toybox/rsync, rsync.txt


dalias' libgcc --disable-shared glitch, try the swap he complained about?
  - musl mailing list

LFS 7.4
aboriginal:
  new kernel
  new toybox
  record-commands.sh breakout

Explain: Why tarballs+patches instead of extracted source in repository?

GPL writeup ~/gpl

Aboriginal LICENSE change
  - documentation.html

Dig up dvpnd

dhcp packets must be between 300 (rfc 1542) and 576 (busybox bug 1849) bytes
test case: mount -a -t tmpfs -oremount,size=128M

kernel doc
  random.txt http://lkml.indiana.edu/hypermail/linux/kernel/1309.1/04103.html
  On the need to edit kernel oops messages in commit logs:
    http://lkml.indiana.edu/hypermail/linux/kernel/1309.3/04165.html

lxc:
  thread on making interfaces go away when container exits:
    http://sourceforge.net/mailarchive/forum.php?thread_name=0A2009F9DE7D46469F263CB6367EA135A444F701%40dnbf-ex1.AD.DDB.DE&forum_name=lxc-users

toybox lsof

toybox:
  scripts/make.sh
sed -n -e 's/.* \(USE_.*\)([^)]*)$/\1/;h;t keep;b next;:keep;g;s/^/#undef /p;g;s/.*/#define &(...) __VA_ARGS__/p;d' -e ':next;s/.* \(CFG_.*\) 0$/\1/;h;t keep2;d;:keep2;g;s/^/#undef /p;g;s/.*/#define & 1/p' generated/config.h

linux: git log --follow crypto/sha256_generic.c
Ping linaro guy (~/notes.txt)
kup: gpg/landley/welcome.readme
9p:
  ~/toybox/9p.txt
  ~/toybox/9p
  ~/diod/diod
podiatry/video/screencast.sh

toybox: lsusb-names.patch
  services.c
debootstrap debuild
  echo dpkg --add-architecture musl-linux-amd64
  sudo aptitude install devscripts debootstrap
  ~/aboriginal/debuclibc
inittmpfs
  linux/rootmpfs2.patch
  IS_ENABLED()
  Robin Holt <holt at sgi.com>
  Daniel Walker <dwalker at fifo99.com>
aboriginal/ab-3.11
Test current qemu on all targets.
qcc: chop out daniel's contributions.

links.txt
gpl.txt
mount:
  read Documentation/filesystems/sharedsubtree.txt
  Gurang Shastri's mount:
    http://lists.landley.net/pipermail/toybox-landley.net/2012-October/000677.html
  Notes about mount: vfs flags
    http://lists.landley.net/pipermail/toybox-landley.net/2012-August/000628.html
ls -l /dev doesn't show major:minor
Old busybox FAQ -> toybox FAQ
  - newfaq.html
SPARC softmmu : build LFS
~qemu/qemu-m68k
~/toybox/prasanna/control-images-patchset$
  aboriginal/lfs/lfs-packages-7.3.tar
control-images: new dropbear, zlib
  rebuild static-tools
  update downloadable control-images
pending:
  showkey
  sha3, sha256
build/host/busybox: what's left
login: calls vhangup()
kexec: man kexec_load
scripts/findglobals.sh
nbd-server
toybox/toybox/git.txt: git mirroring
run the test suite, fix stuff
www/talks/proto-transcript.txt
Yann Morin 3/13 "resetting my crosstool bearings"

# email lwn.net about toybox talk going up.
What is the license on aboriginal? (And root-filesystem code?)
merge ccwrap into toybox
Add 9p (diod/virtfs) server to toybox
top should do iotop
figure out hibernate tool
bc
  scale = 0
  define function()
  auto x,y;
  while (blah) { }
  x = a % b ^ c * d + e - f / g
  for (a; b; c) { }
  if (a >= b) { }
  if (a < b) { }
  print "string", val, "str"
  obase = int


triage klibc 1/23 blog entry for roadmap
apply for CELF travel
toybox
  --help (toybox --help command; toybox command --help)
  fix head/tail: -3 -1
  arp
  http://mywiki.wooledge.org/BashFAQ/031
  http://codemonkey.org.uk/2013/01/03/linked-list-debugging-2
  starchlinux.org

aboriginal linux website redo
  - Ab Origine - from the beginning
  - The simplest Linux system capable of rebuilding itself from source code.

  - Build cross compiler, construct target system, boot it under qemu.
    - build control image

Kernel failing to boot when compressed with bzip2 - Thomas Capricelli
Pull microemacs
Submit perl removal patches
virtfs talk
CELF tickets
  - sash en.wikipedia.org/wiki/Stand-alone_shell


github.com/pikhq/bootstrap-linux
sta.li/masterplan
9p.cat-v.org
quotes.cat-v.org/programming
harful.cat-v.org/software
suckless.org/project_ideas


mipsel native compiler: === Linker verson 0 is to old for

setup git server

LFS 7.2 (clean-control-images)
#balsa email
collate todo.today
bisect docs

phone:
  dead trigger
  inotia4
  ninjump

toybox:
  # sub/losetup
  triage new toolbox
  initramfs ls -l "exe: No such file or directory"
  some sort of build marker?  hg identify -n hg diff
  triage busybox-1.2.2
    - files I touched
    - files I created
    - files last touched by me
  oldlicense.txt
  md5sum rfc1321.txt
  cp
  mount (questions.txt)
  collate toybox2, toybox.bak

aboriginal:
  update about.html
    Ab Origine - from the beginning
  wrapdir pointing to nothing
  busybox vs toybox
  musl


# Achille Fouilleul - fdlength bug
#push sh4 change to qemu
#patch 2.7 breaks aboriginal


More information about the Toybox mailing list