diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-04-02 23:14:21 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-04-02 23:14:21 +0000 |
commit | 2f1ba09955a36a3c6f7cb0704d3ccec0151c07cb (patch) | |
tree | 57e9631f497bc143062b92a68f9ef0a4bc3ec2b5 | |
parent | 80afad5d85162a53a187c8b3e0427796ac976007 (diff) | |
parent | 9a270c2510a3c163c0ae68be4d3ba831c379471b (diff) | |
download | toybox-2f1ba09955a36a3c6f7cb0704d3ccec0151c07cb.tar.gz |
Snap for 11662267 from 9a270c2510a3c163c0ae68be4d3ba831c379471b to sdk-release
Change-Id: I2099c2f2e81e550d551b941d5358af9d12fe3cb3
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | android/device/generated/newtoys.h | 2 | ||||
-rw-r--r-- | android/linux/generated/newtoys.h | 2 | ||||
-rw-r--r-- | android/mac/generated/newtoys.h | 2 | ||||
-rwxr-xr-x | mkroot/mkroot.sh | 132 | ||||
-rwxr-xr-x | mkroot/packages/tests | 3 | ||||
-rwxr-xr-x | mkroot/record-commands | 15 | ||||
-rwxr-xr-x | mkroot/tar-for-web.sh | 8 | ||||
-rwxr-xr-x | scripts/mcm-buildall.sh | 11 | ||||
-rwxr-xr-x | scripts/prereq/build.sh | 15 | ||||
-rw-r--r-- | scripts/prereq/generated/config.h | 704 | ||||
-rw-r--r-- | scripts/prereq/generated/flags.h | 848 | ||||
-rw-r--r-- | scripts/prereq/generated/globals.h | 155 | ||||
-rw-r--r-- | scripts/prereq/generated/help.h | 34 | ||||
-rw-r--r-- | scripts/prereq/generated/newtoys.h | 124 | ||||
-rw-r--r-- | scripts/prereq/generated/tags.h | 1 | ||||
-rwxr-xr-x | scripts/probes/cmd2dpkg | 26 | ||||
-rwxr-xr-x | scripts/recreate-prereq.sh | 40 | ||||
-rw-r--r-- | toys/other/inotifyd.c | 3 | ||||
-rw-r--r-- | www/faq.html | 2 |
20 files changed, 2062 insertions, 71 deletions
@@ -8,13 +8,13 @@ third_party { license_type: UNENCUMBERED last_upgrade_date { year: 2024 - month: 3 - day: 25 + month: 4 + day: 1 } homepage: "https://landley.net/toybox/" identifier { type: "Git" value: "https://github.com/landley/toybox" - version: "95906a13d1c6d0df5f521d2d91371791663f339e" + version: "d1acc6e88be52e96e558717805b438c1f46ba529" } } diff --git a/android/device/generated/newtoys.h b/android/device/generated/newtoys.h index 23119eca..92814854 100644 --- a/android/device/generated/newtoys.h +++ b/android/device/generated/newtoys.h @@ -141,7 +141,7 @@ USE_ICONV(NEWTOY(iconv, "cst:f:", TOYFLAG_USR|TOYFLAG_BIN)) USE_ID(NEWTOY(id, ">1"USE_ID_Z("Z")"nGgru[!"USE_ID_Z("Z")"Ggu]", TOYFLAG_USR|TOYFLAG_BIN)) USE_IFCONFIG(NEWTOY(ifconfig, "^?aS", TOYFLAG_SBIN)) USE_INIT(NEWTOY(init, "", TOYFLAG_SBIN)) -USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN)) +USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) USE_INSMOD(NEWTOY(insmod, "<1", TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) USE_INSTALL(NEWTOY(install, "<1cdDp(preserve-timestamps)svt:m:o:g:", TOYFLAG_USR|TOYFLAG_BIN)) USE_IONICE(NEWTOY(ionice, "^tc#<0>3=2n#<0>7=5p#", TOYFLAG_USR|TOYFLAG_BIN)) diff --git a/android/linux/generated/newtoys.h b/android/linux/generated/newtoys.h index 23119eca..92814854 100644 --- a/android/linux/generated/newtoys.h +++ b/android/linux/generated/newtoys.h @@ -141,7 +141,7 @@ USE_ICONV(NEWTOY(iconv, "cst:f:", TOYFLAG_USR|TOYFLAG_BIN)) USE_ID(NEWTOY(id, ">1"USE_ID_Z("Z")"nGgru[!"USE_ID_Z("Z")"Ggu]", TOYFLAG_USR|TOYFLAG_BIN)) USE_IFCONFIG(NEWTOY(ifconfig, "^?aS", TOYFLAG_SBIN)) USE_INIT(NEWTOY(init, "", TOYFLAG_SBIN)) -USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN)) +USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) USE_INSMOD(NEWTOY(insmod, "<1", TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) USE_INSTALL(NEWTOY(install, "<1cdDp(preserve-timestamps)svt:m:o:g:", TOYFLAG_USR|TOYFLAG_BIN)) USE_IONICE(NEWTOY(ionice, "^tc#<0>3=2n#<0>7=5p#", TOYFLAG_USR|TOYFLAG_BIN)) diff --git a/android/mac/generated/newtoys.h b/android/mac/generated/newtoys.h index 23119eca..92814854 100644 --- a/android/mac/generated/newtoys.h +++ b/android/mac/generated/newtoys.h @@ -141,7 +141,7 @@ USE_ICONV(NEWTOY(iconv, "cst:f:", TOYFLAG_USR|TOYFLAG_BIN)) USE_ID(NEWTOY(id, ">1"USE_ID_Z("Z")"nGgru[!"USE_ID_Z("Z")"Ggu]", TOYFLAG_USR|TOYFLAG_BIN)) USE_IFCONFIG(NEWTOY(ifconfig, "^?aS", TOYFLAG_SBIN)) USE_INIT(NEWTOY(init, "", TOYFLAG_SBIN)) -USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN)) +USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) USE_INSMOD(NEWTOY(insmod, "<1", TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) USE_INSTALL(NEWTOY(install, "<1cdDp(preserve-timestamps)svt:m:o:g:", TOYFLAG_USR|TOYFLAG_BIN)) USE_IONICE(NEWTOY(ionice, "^tc#<0>3=2n#<0>7=5p#", TOYFLAG_USR|TOYFLAG_BIN)) diff --git a/mkroot/mkroot.sh b/mkroot/mkroot.sh index 37a91642..a4879edd 100755 --- a/mkroot/mkroot.sh +++ b/mkroot/mkroot.sh @@ -53,6 +53,7 @@ ${CROSS_COMPILE}cc --static -xc - -o /dev/null <<< "int main(void){return 0;}"|| # ----- Create hermetic build environment +rm -rf generated if [ -z "$NOAIRLOCK"] && [ -n "$CROSS_COMPILE" ]; then # When cross compiling set host $PATH to binaries with known behavior by # - building a host toybox later builds use as their command line @@ -152,7 +153,10 @@ root:x:0:0:root:/root:/bin/sh guest:x:500:500:guest:/home/guest:/bin/sh nobody:x:65534:65534:nobody:/proc/self:/dev/null EOF -echo -e 'root:x:0:\nguest:x:500:\nnobody:x:65534:' > "$ROOT"/etc/group || exit 1 +echo -e 'root:x:0:\nguest:x:500:\nnobody:x:65534:' > "$ROOT"/etc/group && +: ${VERSION:=$(toybox --version)} && +# Optional file, basically a comment +echo $'NAME="mkroot"\nVERSION="'${VERSION#* }$'"\nHOME_URL="https://landley.net/toybox"' > "$ROOT"/etc/os-release || exit 1 # Build any packages listed on command line for i in ${PKG:+plumbing $PKG}; do @@ -177,6 +181,7 @@ fi # Convert comma separated values in $1 to CONFIG=$2 lines csv2cfg() { sed -E '/^$/d;s/([^,]*)($|,)/CONFIG_\1\n/g' <<< "$1" | sed '/^$/!{/=/!s/.*/&='"$2/}";} +be2csv() { eval "echo $*" | tr ' ' ,; } # brace expansion to csv # Set variables from $CROSS, die on unrecognized target: # BUILTIN - if set, statically link initramfs into kernel image @@ -191,12 +196,17 @@ get_target_config() # Target-specific info in an (alphabetical order) if/else staircase # Each target needs board config, serial console, RTC, ethernet, block device. + KARGS=ttyS0 VMLINUX=vmlinux if [ "$CROSS" == armv5l ]; then # This could use the same VIRT board as armv7, but let's demonstrate a # different one requiring a separate device tree binary. - QEMU="arm -M versatilepb -net nic,model=rtl8139 -net user" KARCH=arm KARGS=ttyAMA0 VMLINUX=arch/arm/boot/zImage - KCONF=CPU_ARM926T,MMU,VFP,ARM_THUMB,AEABI,ARCH_VERSATILE,ATAGS,DEPRECATED_PARAM_STRUCT,ARM_ATAG_DTB_COMPAT,ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND,SERIAL_AMBA_PL011,SERIAL_AMBA_PL011_CONSOLE,RTC_CLASS,RTC_DRV_PL031,RTC_HCTOSYS,PCI,PCI_VERSATILE,BLK_DEV_SD,SCSI,SCSI_LOWLEVEL,SCSI_SYM53C8XX_2,SCSI_SYM53C8XX_MMIO,NET_VENDOR_REALTEK,8139CP,SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 + QEMU="arm -M versatilepb -net nic,model=rtl8139 -net user" + KCONF="$(be2csv CPU_ARM926T MMU VFP ARM_THUMB AEABI ARCH_VERSATILE ATAGS \ + DEPRECATED_PARAM_STRUCT BLK_DEV_SD NET_VENDOR_REALTEK 8139CP \ + ARM_ATAG_DTB_COMPAT{,_CMDLINE_EXTEND} PCI{,_VERSATILE} \ + SERIAL_AMBA_PL011{,_CONSOLE} RTC_{CLASS,DRV_PL031,HCTOSYS} \ + SCSI{,_LOWLEVEL,_SYM53C8XX_{2,MMIO,DMA_ADDRESSING_MODE=0}})" DTB=versatile-pb.dtb elif [ "$CROSS" == armv7l ] || [ "$CROSS" == aarch64 ]; then if [ "$CROSS" == aarch64 ]; then @@ -206,9 +216,13 @@ get_target_config() QEMU="arm -M virt" KARCH=arm VMLINUX=arch/arm/boot/zImage fi KARGS=ttyAMA0 - KCONF=MMU,ARCH_MULTI_V7,ARCH_VIRT,SOC_DRA7XX,ARCH_OMAP2PLUS_TYPICAL,ARCH_ALPINE,ARM_THUMB,VDSO,CPU_IDLE,ARM_CPUIDLE,KERNEL_MODE_NEON,SERIAL_AMBA_PL011,SERIAL_AMBA_PL011_CONSOLE,RTC_CLASS,RTC_HCTOSYS,RTC_DRV_PL031,VIRTIO_MENU,VIRTIO_NET,PCI,PCI_HOST_GENERIC,VIRTIO_BLK,VIRTIO_PCI,VIRTIO_MMIO,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,PATA_PLATFORM,PATA_OF_PLATFORM,ATA_GENERIC,ARM_LPAE + KCONF="$(be2csv MMU SOC_DRA7XX VDSO CPU_IDLE KERNEL_MODE_NEON \ + ARCH_{MULTI_V7,VIRT,OMAP2PLUS_TYPICAL,ALPINE} ARM_{THUMB,CPUIDLE,LPAE} \ + ATA{,_SFF,_BMDMA,_PIIX,_GENERIC} VIRTIO_{MENU,NET,BLK,PCI,MMIO} \ + SERIAL_AMBA_PL011{,_CONSOLE} RTC_{CLASS,HCTOSYS,DRV_PL031} \ + PATA_{,OF_}PLATFORM PCI{,_HOST_GENERIC})" elif [ "$CROSS" == hexagon ]; then - QEMU="hexagon -M comet" KARGS=ttyS0 VMLINUX=vmlinux + QEMU="hexagon -M comet" KARCH="hexagon LLVM_IAS=1" KCONF=SPI,SPI_BITBANG,IOMMU_SUPPORT elif [ "$CROSS" == i486 ] || [ "$CROSS" == i686 ] || [ "$CROSS" == x86_64 ] || [ "$CROSS" == x32 ]; then @@ -220,44 +234,73 @@ get_target_config() QEMU=x86_64 KCONF=64BIT [ "$CROSS" == x32 ] && KCONF=X86_X32 fi - KARCH=x86 KARGS=ttyS0 VMLINUX=arch/x86/boot/bzImage - KCONF=$KCONF,UNWINDER_FRAME_POINTER,PCI,BLK_DEV_SD,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,NET_VENDOR_INTEL,E1000,SERIAL_8250,SERIAL_8250_CONSOLE,RTC_CLASS + KARCH=x86 VMLINUX=arch/x86/boot/bzImage + KCONF+=,"$(be2csv UNWINDER_FRAME_POINTER PCI BLK_DEV_SD NET_VENDOR_INTEL \ + E1000 RTC_CLASS ATA{,_SFF,_BMDMA,_PIIX} SERIAL_8250{,_CONSOLE})" elif [ "$CROSS" == m68k ]; then - QEMU="m68k -M q800" KARCH=m68k KARGS=ttyS0 VMLINUX=vmlinux - KCONF=MMU,M68040,M68KFPU_EMU,MAC,SCSI,SCSI_LOWLEVEL,BLK_DEV_SD,SCSI_MAC_ESP,MACINTOSH_DRIVERS,NET_VENDOR_NATSEMI,MACSONIC,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE + QEMU="m68k -M q800" KARCH=m68k + KCONF="$(be2csv MMU M68040 M68KFPU_EMU MAC BLK_DEV_SD MACINTOSH_DRIVERS \ + NET_VENDOR_NATSEMI MACSONIC SCSI{,_LOWLEVEL,_MAC_ESP} \ + SERIAL_PMACZILOG{,_TTYS,_CONSOLE})" + elif [ "$CROSS" == microblaze ]; then + QEMU="microblaze -M petalogix-s3adsp1800" KARCH=microblaze KARGS=ttyUL0 + KCONF="$(be2csv MMU CPU_BIG_ENDIAN SERIAL_UARTLITE{,_CONSOLE} \ + XILINX_{EMACLITE,MICROBLAZE0_{FAMILY="spartan3adsp",USE_{{MSR,PCMP}_INSTR,BARREL,HW_MUL}=1}})" elif [ "$CROSS" == mips ] || [ "$CROSS" == mipsel ]; then - QEMU="mips -M malta" KARCH=mips KARGS=ttyS0 VMLINUX=vmlinux - KCONF=MIPS_MALTA,CPU_MIPS32_R2,SERIAL_8250,SERIAL_8250_CONSOLE,PCI,BLK_DEV_SD,ATA,ATA_SFF,ATA_BMDMA,ATA_PIIX,NET_VENDOR_AMD,PCNET32,POWER_RESET,POWER_RESET_SYSCON - [ "$CROSS" == mipsel ] && KCONF=$KCONF,CPU_LITTLE_ENDIAN && + QEMU="mips -M malta" KARCH=mips + KCONF="$(be2csv MIPS_MALTA CPU_MIPS32_R2 BLK_DEV_SD NET_VENDOR_AMD PCNET32 \ + PCI SERIAL_8250{,_CONSOLE} ATA{,_SFF,_BMDMA,_PIIX} POWER_RESET{,_SYSCON})" + [ "$CROSS" == mipsel ] && KCONF+=,CPU_LITTLE_ENDIAN && QEMU="mipsel -M malta" elif [ "$CROSS" == or1k ]; then - KARCH=openrisc QEMU="or1k -M or1k-sim" KARGS=FIXME VMLINUX=vmlinux BUILTIN=1 - KCONF=OPENRISC_BUILTIN_DTB=\"or1ksim\",ETHOC,SERIO,SERIAL_8250,SERIAL_8250_CONSOLE,SERIAL_OF_PLATFORM + KARCH=openrisc QEMU="or1k -M or1k-sim" KARGS=FIXME BUILTIN=1 + KCONF="$(be2csv OPENRISC_BUILTIN_DTB=\\\"or1ksim\\\" ETHOC SERIO \ + SERIAL_OF_PLATFORM SERIAL_8250{,_CONSOLE})" elif [ "$CROSS" == powerpc ]; then - KARCH=powerpc QEMU="ppc -M g3beige" KARGS=ttyS0 VMLINUX=vmlinux - KCONF=ALTIVEC,PPC_PMAC,PPC_OF_BOOT_TRAMPOLINE,ATA,ATA_SFF,ATA_BMDMA,PATA_MACIO,BLK_DEV_SD,MACINTOSH_DRIVERS,ADB,ADB_CUDA,NET_VENDOR_NATSEMI,NET_VENDOR_8390,NE2K_PCI,SERIO,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE,BOOTX_TEXT + KARCH=powerpc QEMU="ppc -M g3beige" + KCONF="$(be2csv ALTIVEC PATA_MACIO BLK_DEV_SD MACINTOSH_DRIVERS SERIO \ + NET_VENDOR_8390 NE2K_PCI BOOTX_TEXT PPC_{PMAC,OF_BOOT_TRAMPOLINE} \ + ATA{,_SFF,_BMDMA} ADB{,_CUDA} SERIAL_PMACZILOG{,_TTYS,_CONSOLE})" elif [ "$CROSS" == powerpc64 ] || [ "$CROSS" == powerpc64le ]; then KARCH=powerpc QEMU="ppc64 -M pseries -vga none" KARGS=hvc0 - VMLINUX=vmlinux - KCONF=PPC64,PPC_PSERIES,PPC_OF_BOOT_TRAMPOLINE,BLK_DEV_SD,SCSI_LOWLEVEL,SCSI_IBMVSCSI,ATA,NET_VENDOR_IBM,IBMVETH,HVC_CONSOLE,PPC_TRANSACTIONAL_MEM,PPC_DISABLE_WERROR,SECTION_MISMATCH_WARN_ONLY + KCONF="$(be2csv PPC64 BLK_DEV_SD ATA NET_VENDOR_IBM IBMVETH HVC_CONSOLE \ + PPC_{PSERIES,OF_BOOT_TRAMPOLINE,TRANSACTIONAL_MEM,DISABLE_WERROR} \ + SCSI_{LOWLEVEL,IBMVSCSI})" +#SECTION_MISMATCH_WARN_ONLY [ "$CROSS" == powerpc64le ] && KCONF=$KCONF,CPU_LITTLE_ENDIAN elif [ "$CROSS" = s390x ]; then QEMU="s390x" KARCH=s390 VMLINUX=arch/s390/boot/bzImage - KCONF=MARCH_Z900,PACK_STACK,VIRTIO_NET,VIRTIO_BLK,SCLP_TTY,SCLP_CONSOLE,SCLP_VT220_TTY,SCLP_VT220_CONSOLE,S390_GUEST + KCONF="$(be2csv MARCH_Z900 PACK_STACK S390_GUEST VIRTIO_{NET,BLK} \ + SCLP_{TTY,CONSOLE,VT220_{TTY,CONSOLE}})" elif [ "$CROSS" == sh2eb ]; then - BUILTIN=1 KARCH=sh VMLINUX=vmlinux - KCONF=CPU_SUBTYPE_J2,CPU_BIG_ENDIAN,SH_JCORE_SOC,SMP,BINFMT_ELF_FDPIC,JCORE_EMAC,SERIAL_UARTLITE,SERIAL_UARTLITE_CONSOLE,HZ_100,CMDLINE_OVERWRITE,SPI,SPI_JCORE,MMC,PWRSEQ_SIMPLE,MMC_BLOCK,MMC_SPI,BINMT_FLAT,BINFMT_MISC,DNOTIFY,INOTIFY_USER,FUSE_FS,I2C,I2C_HELPER_AUTO,LOCALVERSION_AUTO,MTD,MTD_SPI_NOR,MTD_SST25L,MTD_OF_PARTS,POSIX_MQUEUE,SYSVIPC,UEVENT_HELPER,UIO,UIO_PDRV_GENIRQ,FLATMEM_MANUAL,MEMORY_START=0x10000000,CMDLINE=\"console=ttyUL0\ earlycon\" - KCONF+=,BFP_SYSCALL,CRYPTO_DES,CRYPTO_DH,CRYPTO_ECHAINIV,CRYPTO_LZO,CRYPTO_MANAGER_DISABLE_TESTS,CRYPTO_RSA,CRYPTO_SHA1,CRYPTO_SHA3,INET_DIAG,SERIAL_8250 - # TODO NET_9P,9P_FS fails to boot in 6.3, unaligned access? - elif [ "$CROSS" == sh4 ]; then - QEMU="sh4 -M r2d -serial null -serial mon:stdio" KARCH=sh + BUILTIN=1 KARCH=sh + KCONF="$(be2csv CPU_{SUBTYPE_J2,BIG_ENDIAN} SH_JCORE_SOC SMP JCORE_EMAC \ + FLATMEM_MANUAL MEMORY_START=0x10000000 CMDLINE_OVERWRITE DNOTIFY FUSE_FS \ + INOTIFY_USER SPI{,_JCORE} SERIAL_UARTLITE{,_CONSOLE} PWRSEQ_SIMPLE \ + MMC{,_BLOCK,_SPI} UIO{,_PDRV_GENIRQ} MTD{,_SPI_NOR,_SST25L,_OF_PARTS} \ + BINFMT_{ELF_FDPIC,MISC} I2C{,_HELPER_AUTO})" + KCONF+=,CMDLINE=\"console=ttyUL0\ earlycon\" + elif [ "$CROSS" == sh4 ] || [ "$CROSS" == sh4eb ]; then + QEMU="$CROSS -M r2d -serial null -serial mon:stdio" KARCH=sh KARGS="ttySC1 noiotrap" VMLINUX=arch/sh/boot/zImage - KCONF=CPU_SUBTYPE_SH7751R,MMU,VSYSCALL,SH_FPU,SH_RTS7751R2D,RTS7751R2D_PLUS,SERIAL_SH_SCI,SERIAL_SH_SCI_CONSOLE,PCI,NET_VENDOR_REALTEK,8139CP,PCI,BLK_DEV_SD,ATA,ATA_SFF,ATA_BMDMA,PATA_PLATFORM,BINFMT_ELF_FDPIC,BINFMT_FLAT,MEMORY_START=0x0c000000 + KCONF="$(be2csv CPU_SUBTYPE_SH7751R MMU VSYSCALL SH_{FPU,RTS7751R2D} PCI \ + RTS7751R2D_PLUS SERIAL_SH_SCI{,_CONSOLE} NET_VENDOR_REALTEK 8139CP \ + BLK_DEV_SD ATA{,_SFF,_BMDMA} PATA_PLATFORM BINFMT_ELF_FDPIC \ + MEMORY_START=0x0c000000)" #see also SPI SPI_SH_SCI MFD_SM501 RTC_CLASS RTC_DRV_R9701 RTC_DRV_SH RTC_HCTOSYS + [ "$CROSS" == sh4eb ] && KCONF+=,CPU_BIG_ENDIAN else die "Unknown \$CROSS=$CROSS" fi } +# Linux kernel .config symbols common to all architectures +: ${GENERIC_KCONF:=$(be2csv PANIC_TIMEOUT=1 NO_HZ HIGH_RES_TIMERS RD_GZIP \ + BINFMT_{ELF,SCRIPT} BLK_DEV{,_INITRD,_LOOP} EXT4_{FS,USE_FOR_EXT2} \ + VFAT_FS FAT_DEFAULT_UTF8 MISC_FILESYSTEMS NLS_{CODEPAGE_437,ISO8859_1} \ + SQUASHFS{,_XATTR,_ZLIB} TMPFS{,_POSIX_ACL} DEVTMPFS{,_MOUNT} \ + NET{,DEVICES,_CORE,CONSOLE} PACKET UNIX INET IPV6 ETHERNET \ + COMPAT_32BIT_TIME EARLY_PRINTK IKCONFIG{,_PROC})} + # ----- Build kernel for target if [ -z "$LINUX" ] || [ ! -d "$LINUX/kernel" ]; then @@ -269,8 +312,9 @@ else get_target_config # Write the qemu launch script + INITRAMFS=initramfs.cpio.gz if [ -n "$QEMU" ]; then - [ -z "$BUILTIN" ] && INITRD='-initrd "$DIR"/initramfs.cpio.gz' + [ -z "$BUILTIN" ] && INITRD='-initrd "$DIR"/'"$INITRAMFS" { echo DIR='"$(dirname $0)";' qemu-system-"$QEMU" -m 256 '"$@"' $QEMU_MORE \ -nographic -no-reboot -kernel '"$DIR"'/linux-kernel $INITRD \ ${DTB:+-dtb '"$DIR"'/linux.dtb} \ @@ -284,22 +328,27 @@ else pushd "$LINUX" && make distclean && popd && cp -sfR "$LINUX" "$TEMP/linux" && pushd "$TEMP/linux" && - # Write linux-miniconfig + # Write microconfig (minimal symbol name/value list in CSV format) mkdir -p "$OUTDOC" && - { echo "# make ARCH=$KARCH allnoconfig KCONFIG_ALLCONFIG=linux-miniconfig" - echo -e "# make ARCH=$KARCH -j \$(nproc)\n# boot $VMLINUX\n\n" - - # Expand list of =y symbols, first generic then architecture-specific - for i in BINFMT_ELF,BINFMT_SCRIPT,PANIC_TIMEOUT=1,NO_HZ,HIGH_RES_TIMERS,BLK_DEV,BLK_DEV_INITRD,RD_GZIP,BLK_DEV_LOOP,EXT4_FS,EXT4_USE_FOR_EXT2,VFAT_FS,FAT_DEFAULT_UTF8,NLS_CODEPAGE_437,NLS_ISO8859_1,MISC_FILESYSTEMS,SQUASHFS,SQUASHFS_XATTR,SQUASHFS_ZLIB,DEVTMPFS,DEVTMPFS_MOUNT,TMPFS,TMPFS_POSIX_ACL,NET,PACKET,UNIX,INET,IPV6,NETDEVICES,NET_CORE,NETCONSOLE,ETHERNET,COMPAT_32BIT_TIME,EARLY_PRINTK,IKCONFIG,IKCONFIG_PROC "$KCONF" ${MODULES+MODULES,MODULE_UNLOAD} "$KEXTRA" ; do - echo "$i" >> "$OUTDOC"/linux-microconfig + for i in "$GENERIC_KCONF" "$KCONF" ${MODULES+MODULES,MODULE_UNLOAD} "$KEXTRA" + do echo "$i"; done > "$OUTDOC"/linux-microconfig && + + # expand to miniconfig (symbol list to switch on after running "allnoconfig") + { + echo "# make ARCH=$KARCH allnoconfig KCONFIG_ALLCONFIG=linux-miniconfig" + echo "# make ARCH=$KARCH -j \$(nproc)" + echo "# boot $VMLINUX${DTB:+ dtb $DTB} console=$KARGS" + echo + while read i; do echo "# architecture ${X:-independent}" csv2cfg "$i" y X=${X:+extra} X=${X:-specific} - done + done < "$OUTDOC"/linux-microconfig [ -n "$BUILTIN" ] && echo -e CONFIG_INITRAMFS_SOURCE="\"$OUTPUT/fs\"" for i in $MODULES; do csv2cfg "$i" m; done - echo "$KERNEL_CONFIG" } > "$OUTDOC/linux-miniconfig" && + + # Expand miniconfig to full .config make ARCH=$KARCH allnoconfig KCONFIG_ALLCONFIG="$OUTDOC/linux-miniconfig" && # Second config pass to remove stupid kernel defaults @@ -322,12 +371,11 @@ else fi # clean up and package root filesystem for initramfs. -if [ -z "$BUILTIN" ]; then - announce initramfs - { (cd "$ROOT" && find . -printf '%P\n' | cpio -o -H newc -R +0:+0 ) || exit 1 - ! test -e "$OUTDOC/modules.cpio.gz" || zcat $_;} | gzip \ - > "$OUTPUT"/initramfs.cpio.gz || exit 1 -fi +announce initramfs +[ -z "$BUILTIN" ] && DIR="$OUTPUT" || DIR="$OUTDOC" +{ (cd "$ROOT" && find . -printf '%P\n' | cpio -o -H newc -R +0:+0 ) || exit 1 + ! test -e "$OUTDOC/modules.cpio.gz" || zcat $_;} | gzip \ + > "$DIR/$INITRAMFS" || exit 1 mv "$LOG".{n,y} && echo "Output is in $OUTPUT" rmdir "$TEMP" 2>/dev/null || exit 0 # remove if empty, not an error diff --git a/mkroot/packages/tests b/mkroot/packages/tests index bca3b40c..5e27f4a1 100755 --- a/mkroot/packages/tests +++ b/mkroot/packages/tests @@ -10,6 +10,5 @@ download 6694284723e034f0c564e81a30879939d5ef8b7e \ cp "$DOWNLOAD"/{usb,pci}.ids "$ROOT/etc/" || exit 1 -# Enable module support in the kernel and add a couple test modules -KEXTRA=MODULES,MODULE_UNLOAD,"$KEXTRA" +# add a couple test modules MODULES+=FSCACHE,CACHEFILES diff --git a/mkroot/record-commands b/mkroot/record-commands index 6e63c5b7..32557a3e 100755 --- a/mkroot/record-commands +++ b/mkroot/record-commands @@ -16,13 +16,11 @@ if [ ! -x "$WRAPDIR/logpath" ] then mkdir -p "$WRAPDIR" || exit 1 [ -e "$(which logpath)" ] && cp -H "$(which logpath)" "$WRAPDIR/logpath" || - mkdir -p "$WRAPDIR" && PREFIX="$WRAPDIR/" scripts/single.sh logpath || - exit 1 - find $(tr : '\n' <<< "$PATH") -type f,l -maxdepth 1 -executable \ - -exec basename {} \; | while read FILE - do - ln -s logpath "$WRAPDIR/$FILE" 2>/dev/null - done + PREFIX="$WRAPDIR/" scripts/single.sh logpath || exit 1 + tr : '\n' <<< "$PATH" | while read i; do + find "$i" -type f,l -maxdepth 1 -executable -exec basename {} \; | \ + while read FILE; do ln -s logpath "$WRAPDIR/$FILE" 2>/dev/null; done + done fi # Delete old log (if any) @@ -34,8 +32,7 @@ if [ ${#BASH_SOURCE[@]} -lt 2 ] then "$@" X=$? - - [ ! -z "$RM" ] && "$RM" -rf "$WRAPDIR" + [ -n "$RM" ] && "$RM" -rf "$WRAPDIR" exit $X fi diff --git a/mkroot/tar-for-web.sh b/mkroot/tar-for-web.sh index c31b2888..5bb6d80c 100755 --- a/mkroot/tar-for-web.sh +++ b/mkroot/tar-for-web.sh @@ -25,11 +25,11 @@ Bootable system images created by: mkroot/mkroot.sh LINUX=~/linux CROSS=allnonstop Each system image is built from two packages: toybox and linux. -Run the ./qemu-*.sh script in each tarball to boot the system -to a shell prompt under qemu. Run the "exit" command to shut down the -virtual system and exit the emulator. +The run-qemu.sh script in each tarball should boot the system +to a shell prompt under qemu, exit from that shell to shut down the +virtual system and stop the emulator. -See https://landley.net/toybox/FAQ.html#mkroot for details. +See https://landley.net/toybox/faq.html#mkroot for details. Built from mkroot $(git describe --tags), and Linux $KVERS with patches in linux-patches/ EOF diff --git a/scripts/mcm-buildall.sh b/scripts/mcm-buildall.sh index b5b19e5e..a27b9c07 100755 --- a/scripts/mcm-buildall.sh +++ b/scripts/mcm-buildall.sh @@ -29,7 +29,8 @@ TARGETS=(i686:: aarch64:eabi: "armv7m:eabi:--with-arch=armv7-m --with-mode=thumb --disable-libatomic --enable-default-pie" armv7r:eabihf:"--with-arch=armv7-r --enable-default-pie" i486:: m68k:: microblaze:: mips:: mips64:: mipsel:: or1k:: powerpc:: - powerpc64:: powerpc64le:: riscv64:: s390x:: sh2eb:fdpic:--with-cpu=mj2 + powerpc64:: powerpc64le:: riscv32:: riscv64:: s390x:: + sh2eb:fdpic:--with-cpu=mj2 sh4::--enable-incomplete-targets sh4eb::--enable-incomplete-targets x86_64::--with-mtune=nocona x86_64@x32:x32: ) @@ -173,13 +174,13 @@ patch_mcm() # and doesn't even use the latest musl release by default, so fix it up. # Select newer package versions and don't use dodgy mirrors - sed -i 's/mirror//;s/\(LINUX_VER =\).*/\1 6.6/;s/\(GCC_VER =\).*/\1 11.2.0/' \ + sed -i 's/mirror//;s/\(LINUX_VER =\).*/\1 6.8/;s/\(GCC_VER =\).*/\1 11.2.0/' \ Makefile && - echo 'c8dbfa8285f1a90596a227690653d84b9eb2debe linux-6.6.tar.xz' > \ - hashes/linux-6.6.tar.xz.sha1 && + echo 'c9ab5b95c0b8e9e41290d3fc53b4e5cb2e8abb75 linux-6.8.tar.xz' > \ + hashes/linux-6.8.tar.xz.sha1 && # mcm redundantly downloads tarball if hash file has newer timestamp, # and it whack-a-moles how to download kernels by version for some reason. - touch -d @1 hashes/linux-6.6.tar.xz.sha1 && + touch -d @1 hashes/linux-6.8.tar.xz.sha1 && sed -i 's/\(.*linux-\)3\(.*\)v3.x/\16\2v6.x/' Makefile && # nommu toolchains need to vfork()+pipe, and or1k has different kernel arch diff --git a/scripts/prereq/build.sh b/scripts/prereq/build.sh new file mode 100755 index 00000000..4c88dbab --- /dev/null +++ b/scripts/prereq/build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +BUILD='cc -funsigned-char -I scripts/prereq -I . -Os -ffunction-sections -fdata-sections -fno-asynchronous-unwind-tables -fno-strict-aliasing -DTOYBOX_VERSION=""' +LINK='' +FILES=" +main.c toys/lsb/gzip.c toys/other/readlink.c toys/other/taskset.c +toys/other/which.c toys/pending/tr.c toys/posix/basename.c toys/posix/cat.c +toys/posix/chmod.c toys/posix/cmp.c toys/posix/dirname.c toys/posix/echo.c +toys/posix/fold.c toys/posix/grep.c toys/posix/head.c toys/posix/ln.c +toys/posix/ls.c toys/posix/mkdir.c toys/posix/od.c toys/posix/rm.c +toys/posix/sed.c toys/posix/sort.c toys/posix/tail.c toys/posix/tee.c +toys/posix/uname.c toys/posix/wc.c toys/posix/xargs.c +" + +$BUILD lib/*.c $FILES $LINK -o toybox diff --git a/scripts/prereq/generated/config.h b/scripts/prereq/generated/config.h new file mode 100644 index 00000000..43eb0b6b --- /dev/null +++ b/scripts/prereq/generated/config.h @@ -0,0 +1,704 @@ +#define CFG_TOYBOX_ON_ANDROID 0 +#define USE_TOYBOX_ON_ANDROID(...) +#define CFG_TOYBOX_FORK 1 +#define USE_TOYBOX_FORK(...) __VA_ARGS__ +#define CFG_BASENAME 1 +#define USE_BASENAME(...) __VA_ARGS__ +#define CFG_CAL 0 +#define USE_CAL(...) +#define CFG_CAT 1 +#define USE_CAT(...) __VA_ARGS__ +#define CFG_CHGRP 0 +#define USE_CHGRP(...) +#define CFG_CHOWN 0 +#define USE_CHOWN(...) +#define CFG_CHMOD 1 +#define USE_CHMOD(...) __VA_ARGS__ +#define CFG_CKSUM 0 +#define USE_CKSUM(...) +#define CFG_CRC32 0 +#define USE_CRC32(...) +#define CFG_CMP 1 +#define USE_CMP(...) __VA_ARGS__ +#define CFG_COMM 0 +#define USE_COMM(...) +#define CFG_CP 0 +#define USE_CP(...) +#define CFG_MV 0 +#define USE_MV(...) +#define CFG_INSTALL 0 +#define USE_INSTALL(...) +#define CFG_CPIO 0 +#define USE_CPIO(...) +#define CFG_CUT 0 +#define USE_CUT(...) +#define CFG_DATE 0 +#define USE_DATE(...) +#define CFG_DD 0 +#define USE_DD(...) +#define CFG_DF 0 +#define USE_DF(...) +#define CFG_DIRNAME 1 +#define USE_DIRNAME(...) __VA_ARGS__ +#define CFG_DU 0 +#define USE_DU(...) +#define CFG_ECHO 1 +#define USE_ECHO(...) __VA_ARGS__ +#define CFG_ENV 0 +#define USE_ENV(...) +#define CFG_EXPAND 0 +#define USE_EXPAND(...) +#define CFG_FALSE 0 +#define USE_FALSE(...) +#define CFG_FILE 0 +#define USE_FILE(...) +#define CFG_FIND 0 +#define USE_FIND(...) +#define CFG_FOLD 1 +#define USE_FOLD(...) __VA_ARGS__ +#define CFG_GETCONF 0 +#define USE_GETCONF(...) +#define CFG_GREP 1 +#define USE_GREP(...) __VA_ARGS__ +#define CFG_EGREP 1 +#define USE_EGREP(...) __VA_ARGS__ +#define CFG_FGREP 1 +#define USE_FGREP(...) __VA_ARGS__ +#define CFG_HEAD 1 +#define USE_HEAD(...) __VA_ARGS__ +#define CFG_ICONV 0 +#define USE_ICONV(...) +#define CFG_ID 0 +#define USE_ID(...) +#define CFG_ID_Z 0 +#define USE_ID_Z(...) +#define CFG_GROUPS 0 +#define USE_GROUPS(...) +#define CFG_LOGNAME 0 +#define USE_LOGNAME(...) +#define CFG_WHOAMI 0 +#define USE_WHOAMI(...) +#define CFG_KILL 0 +#define USE_KILL(...) +#define CFG_KILLALL5 0 +#define USE_KILLALL5(...) +#define CFG_LINK 0 +#define USE_LINK(...) +#define CFG_LN 1 +#define USE_LN(...) __VA_ARGS__ +#define CFG_LOGGER 0 +#define USE_LOGGER(...) +#define CFG_LS 1 +#define USE_LS(...) __VA_ARGS__ +#define CFG_MKDIR 1 +#define USE_MKDIR(...) __VA_ARGS__ +#define CFG_MKDIR_Z 0 +#define USE_MKDIR_Z(...) +#define CFG_MKFIFO 0 +#define USE_MKFIFO(...) +#define CFG_MKFIFO_Z 0 +#define USE_MKFIFO_Z(...) +#define CFG_NICE 0 +#define USE_NICE(...) +#define CFG_NL 0 +#define USE_NL(...) +#define CFG_NOHUP 0 +#define USE_NOHUP(...) +#define CFG_OD 1 +#define USE_OD(...) __VA_ARGS__ +#define CFG_PASTE 0 +#define USE_PASTE(...) +#define CFG_PATCH 0 +#define USE_PATCH(...) +#define CFG_PRINTF 0 +#define USE_PRINTF(...) +#define CFG_PS 0 +#define USE_PS(...) +#define CFG_TOP 0 +#define USE_TOP(...) +#define CFG_IOTOP 0 +#define USE_IOTOP(...) +#define CFG_PGREP 0 +#define USE_PGREP(...) +#define CFG_PKILL 0 +#define USE_PKILL(...) +#define CFG_PWD 0 +#define USE_PWD(...) +#define CFG_RENICE 0 +#define USE_RENICE(...) +#define CFG_RM 1 +#define USE_RM(...) __VA_ARGS__ +#define CFG_RMDIR 0 +#define USE_RMDIR(...) +#define CFG_SED 1 +#define USE_SED(...) __VA_ARGS__ +#define CFG_SLEEP 0 +#define USE_SLEEP(...) +#define CFG_SORT 1 +#define USE_SORT(...) __VA_ARGS__ +#define CFG_SORT_FLOAT 0 +#define USE_SORT_FLOAT(...) +#define CFG_SPLIT 0 +#define USE_SPLIT(...) +#define CFG_STRINGS 0 +#define USE_STRINGS(...) +#define CFG_TAIL 1 +#define USE_TAIL(...) __VA_ARGS__ +#define CFG_TAR 0 +#define USE_TAR(...) +#define CFG_TEE 1 +#define USE_TEE(...) __VA_ARGS__ +#define CFG_TEST 0 +#define USE_TEST(...) +#define CFG_TEST_GLUE 0 +#define USE_TEST_GLUE(...) +#define CFG_TIME 0 +#define USE_TIME(...) +#define CFG_TOUCH 0 +#define USE_TOUCH(...) +#define CFG_TRUE 0 +#define USE_TRUE(...) +#define CFG_TSORT 0 +#define USE_TSORT(...) +#define CFG_TTY 0 +#define USE_TTY(...) +#define CFG_ULIMIT 0 +#define USE_ULIMIT(...) +#define CFG_ARCH 0 +#define USE_ARCH(...) +#define CFG_UNAME 1 +#define USE_UNAME(...) __VA_ARGS__ +#define CFG_UNIQ 0 +#define USE_UNIQ(...) +#define CFG_UNLINK 0 +#define USE_UNLINK(...) +#define CFG_UUDECODE 0 +#define USE_UUDECODE(...) +#define CFG_UUENCODE 0 +#define USE_UUENCODE(...) +#define CFG_WC 1 +#define USE_WC(...) __VA_ARGS__ +#define CFG_WHO 0 +#define USE_WHO(...) +#define CFG_XARGS 1 +#define USE_XARGS(...) __VA_ARGS__ +#define CFG_ARP 0 +#define USE_ARP(...) +#define CFG_ARPING 0 +#define USE_ARPING(...) +#define CFG_BC 0 +#define USE_BC(...) +#define CFG_BOOTCHARTD 0 +#define USE_BOOTCHARTD(...) +#define CFG_BRCTL 0 +#define USE_BRCTL(...) +#define CFG_CHSH 0 +#define USE_CHSH(...) +#define CFG_CROND 0 +#define USE_CROND(...) +#define CFG_CRONTAB 0 +#define USE_CRONTAB(...) +#define CFG_CSPLIT 0 +#define USE_CSPLIT(...) +#define CFG_DHCP 0 +#define USE_DHCP(...) +#define CFG_DHCP6 0 +#define USE_DHCP6(...) +#define CFG_DHCPD 0 +#define USE_DHCPD(...) +#define CFG_DEBUG_DHCP 0 +#define USE_DEBUG_DHCP(...) +#define CFG_DIFF 0 +#define USE_DIFF(...) +#define CFG_DUMPLEASES 0 +#define USE_DUMPLEASES(...) +#define CFG_EXPR 0 +#define USE_EXPR(...) +#define CFG_FDISK 0 +#define USE_FDISK(...) +#define CFG_FSCK 0 +#define USE_FSCK(...) +#define CFG_GETFATTR 0 +#define USE_GETFATTR(...) +#define CFG_GETTY 0 +#define USE_GETTY(...) +#define CFG_GITCOMPAT 0 +#define USE_GITCOMPAT(...) +#define CFG_GITCLONE 0 +#define USE_GITCLONE(...) +#define CFG_GITINIT 0 +#define USE_GITINIT(...) +#define CFG_GITREMOTE 0 +#define USE_GITREMOTE(...) +#define CFG_GITFETCH 0 +#define USE_GITFETCH(...) +#define CFG_GITCHECKOUT 0 +#define USE_GITCHECKOUT(...) +#define CFG_GROUPADD 0 +#define USE_GROUPADD(...) +#define CFG_GROUPDEL 0 +#define USE_GROUPDEL(...) +#define CFG_HEXDUMP 0 +#define USE_HEXDUMP(...) +#define CFG_HD 0 +#define USE_HD(...) +#define CFG_INIT 0 +#define USE_INIT(...) +#define CFG_IP 0 +#define USE_IP(...) +#define CFG_IPCRM 0 +#define USE_IPCRM(...) +#define CFG_IPCS 0 +#define USE_IPCS(...) +#define CFG_KLOGD 0 +#define USE_KLOGD(...) +#define CFG_KLOGD_SOURCE_RING_BUFFER 0 +#define USE_KLOGD_SOURCE_RING_BUFFER(...) +#define CFG_LAST 0 +#define USE_LAST(...) +#define CFG_LSOF 0 +#define USE_LSOF(...) +#define CFG_MAN 0 +#define USE_MAN(...) +#define CFG_MDEV 0 +#define USE_MDEV(...) +#define CFG_MDEV_CONF 0 +#define USE_MDEV_CONF(...) +#define CFG_MKE2FS 0 +#define USE_MKE2FS(...) +#define CFG_MKE2FS_JOURNAL 0 +#define USE_MKE2FS_JOURNAL(...) +#define CFG_MKE2FS_GEN 0 +#define USE_MKE2FS_GEN(...) +#define CFG_MKE2FS_LABEL 0 +#define USE_MKE2FS_LABEL(...) +#define CFG_MKE2FS_EXTENDED 0 +#define USE_MKE2FS_EXTENDED(...) +#define CFG_MODPROBE 0 +#define USE_MODPROBE(...) +#define CFG_MORE 0 +#define USE_MORE(...) +#define CFG_ROUTE 0 +#define USE_ROUTE(...) +#define CFG_SH 0 +#define USE_SH(...) +#define CFG_CD 0 +#define USE_CD(...) +#define CFG_DECLARE 0 +#define USE_DECLARE(...) +#define CFG_EXIT 0 +#define USE_EXIT(...) +#define CFG_SET 0 +#define USE_SET(...) +#define CFG_UNSET 0 +#define USE_UNSET(...) +#define CFG_EVAL 0 +#define USE_EVAL(...) +#define CFG_EXEC 0 +#define USE_EXEC(...) +#define CFG_EXPORT 0 +#define USE_EXPORT(...) +#define CFG_JOBS 0 +#define USE_JOBS(...) +#define CFG_LOCAL 0 +#define USE_LOCAL(...) +#define CFG_SHIFT 0 +#define USE_SHIFT(...) +#define CFG_SOURCE 0 +#define USE_SOURCE(...) +#define CFG_WAIT 0 +#define USE_WAIT(...) +#define CFG_STRACE 0 +#define USE_STRACE(...) +#define CFG_STTY 0 +#define USE_STTY(...) +#define CFG_SULOGIN 0 +#define USE_SULOGIN(...) +#define CFG_SYSLOGD 0 +#define USE_SYSLOGD(...) +#define CFG_TCPSVD 0 +#define USE_TCPSVD(...) +#define CFG_TELNET 0 +#define USE_TELNET(...) +#define CFG_TELNETD 0 +#define USE_TELNETD(...) +#define CFG_TFTP 0 +#define USE_TFTP(...) +#define CFG_TFTPD 0 +#define USE_TFTPD(...) +#define CFG_TR 1 +#define USE_TR(...) __VA_ARGS__ +#define CFG_TRACEROUTE 0 +#define USE_TRACEROUTE(...) +#define CFG_USERADD 0 +#define USE_USERADD(...) +#define CFG_USERDEL 0 +#define USE_USERDEL(...) +#define CFG_VI 0 +#define USE_VI(...) +#define CFG_XZCAT 0 +#define USE_XZCAT(...) +#define CFG_ACPI 0 +#define USE_ACPI(...) +#define CFG_ASCII 0 +#define USE_ASCII(...) +#define CFG_UNICODE 0 +#define USE_UNICODE(...) +#define CFG_BASE64 0 +#define USE_BASE64(...) +#define CFG_BASE32 0 +#define USE_BASE32(...) +#define CFG_BLKDISCARD 0 +#define USE_BLKDISCARD(...) +#define CFG_BLKID 0 +#define USE_BLKID(...) +#define CFG_FSTYPE 0 +#define USE_FSTYPE(...) +#define CFG_BLOCKDEV 0 +#define USE_BLOCKDEV(...) +#define CFG_BUNZIP2 0 +#define USE_BUNZIP2(...) +#define CFG_BZCAT 0 +#define USE_BZCAT(...) +#define CFG_CHCON 0 +#define USE_CHCON(...) +#define CFG_CHROOT 0 +#define USE_CHROOT(...) +#define CFG_CHRT 0 +#define USE_CHRT(...) +#define CFG_CLEAR 0 +#define USE_CLEAR(...) +#define CFG_COUNT 0 +#define USE_COUNT(...) +#define CFG_DEVMEM 0 +#define USE_DEVMEM(...) +#define CFG_DOS2UNIX 0 +#define USE_DOS2UNIX(...) +#define CFG_UNIX2DOS 0 +#define USE_UNIX2DOS(...) +#define CFG_EJECT 0 +#define USE_EJECT(...) +#define CFG_FACTOR 0 +#define USE_FACTOR(...) +#define CFG_FALLOCATE 0 +#define USE_FALLOCATE(...) +#define CFG_FLOCK 0 +#define USE_FLOCK(...) +#define CFG_FMT 0 +#define USE_FMT(...) +#define CFG_FREE 0 +#define USE_FREE(...) +#define CFG_FREERAMDISK 0 +#define USE_FREERAMDISK(...) +#define CFG_FSFREEZE 0 +#define USE_FSFREEZE(...) +#define CFG_FSYNC 0 +#define USE_FSYNC(...) +#define CFG_GETOPT 0 +#define USE_GETOPT(...) +#define CFG_GPIODETECT 0 +#define USE_GPIODETECT(...) +#define CFG_GPIOFIND 0 +#define USE_GPIOFIND(...) +#define CFG_GPIOINFO 0 +#define USE_GPIOINFO(...) +#define CFG_GPIOGET 0 +#define USE_GPIOGET(...) +#define CFG_GPIOSET 0 +#define USE_GPIOSET(...) +#define CFG_HELP 0 +#define USE_HELP(...) +#define CFG_HEXEDIT 0 +#define USE_HEXEDIT(...) +#define CFG_HWCLOCK 0 +#define USE_HWCLOCK(...) +#define CFG_I2CDETECT 0 +#define USE_I2CDETECT(...) +#define CFG_I2CDUMP 0 +#define USE_I2CDUMP(...) +#define CFG_I2CGET 0 +#define USE_I2CGET(...) +#define CFG_I2CSET 0 +#define USE_I2CSET(...) +#define CFG_I2CTRANSFER 0 +#define USE_I2CTRANSFER(...) +#define CFG_INOTIFYD 0 +#define USE_INOTIFYD(...) +#define CFG_INSMOD 0 +#define USE_INSMOD(...) +#define CFG_IONICE 0 +#define USE_IONICE(...) +#define CFG_IORENICE 0 +#define USE_IORENICE(...) +#define CFG_LINUX32 0 +#define USE_LINUX32(...) +#define CFG_LOGIN 0 +#define USE_LOGIN(...) +#define CFG_LOSETUP 0 +#define USE_LOSETUP(...) +#define CFG_LSATTR 0 +#define USE_LSATTR(...) +#define CFG_CHATTR 0 +#define USE_CHATTR(...) +#define CFG_LSMOD 0 +#define USE_LSMOD(...) +#define CFG_LSPCI 0 +#define USE_LSPCI(...) +#define CFG_LSUSB 0 +#define USE_LSUSB(...) +#define CFG_MAKEDEVS 0 +#define USE_MAKEDEVS(...) +#define CFG_MCOOKIE 0 +#define USE_MCOOKIE(...) +#define CFG_MEMEATER 0 +#define USE_MEMEATER(...) +#define CFG_MIX 0 +#define USE_MIX(...) +#define CFG_MKPASSWD 0 +#define USE_MKPASSWD(...) +#define CFG_MKSWAP 0 +#define USE_MKSWAP(...) +#define CFG_MODINFO 0 +#define USE_MODINFO(...) +#define CFG_MOUNTPOINT 0 +#define USE_MOUNTPOINT(...) +#define CFG_NBD_CLIENT 0 +#define USE_NBD_CLIENT(...) +#define CFG_NBD_SERVER 0 +#define USE_NBD_SERVER(...) +#define CFG_UNSHARE 0 +#define USE_UNSHARE(...) +#define CFG_NSENTER 0 +#define USE_NSENTER(...) +#define CFG_ONEIT 0 +#define USE_ONEIT(...) +#define CFG_OPENVT 0 +#define USE_OPENVT(...) +#define CFG_CHVT 0 +#define USE_CHVT(...) +#define CFG_DEALLOCVT 0 +#define USE_DEALLOCVT(...) +#define CFG_PARTPROBE 0 +#define USE_PARTPROBE(...) +#define CFG_PIVOT_ROOT 0 +#define USE_PIVOT_ROOT(...) +#define CFG_PMAP 0 +#define USE_PMAP(...) +#define CFG_PRINTENV 0 +#define USE_PRINTENV(...) +#define CFG_PWDX 0 +#define USE_PWDX(...) +#define CFG_PWGEN 0 +#define USE_PWGEN(...) +#define CFG_READAHEAD 0 +#define USE_READAHEAD(...) +#define CFG_READELF 0 +#define USE_READELF(...) +#define CFG_READLINK 1 +#define USE_READLINK(...) __VA_ARGS__ +#define CFG_REALPATH 0 +#define USE_REALPATH(...) +#define CFG_REBOOT 0 +#define USE_REBOOT(...) +#define CFG_RESET 0 +#define USE_RESET(...) +#define CFG_REV 0 +#define USE_REV(...) +#define CFG_RMMOD 0 +#define USE_RMMOD(...) +#define CFG_RTCWAKE 0 +#define USE_RTCWAKE(...) +#define CFG_SETFATTR 0 +#define USE_SETFATTR(...) +#define CFG_SETSID 0 +#define USE_SETSID(...) +#define CFG_SHA3SUM 0 +#define USE_SHA3SUM(...) +#define CFG_SHRED 0 +#define USE_SHRED(...) +#define CFG_SHUF 0 +#define USE_SHUF(...) +#define CFG_STAT 0 +#define USE_STAT(...) +#define CFG_SWAPOFF 0 +#define USE_SWAPOFF(...) +#define CFG_SWAPON 0 +#define USE_SWAPON(...) +#define CFG_SWITCH_ROOT 0 +#define USE_SWITCH_ROOT(...) +#define CFG_SYSCTL 0 +#define USE_SYSCTL(...) +#define CFG_TAC 0 +#define USE_TAC(...) +#define CFG_NPROC 1 +#define USE_NPROC(...) __VA_ARGS__ +#define CFG_TASKSET 0 +#define USE_TASKSET(...) +#define CFG_TIMEOUT 0 +#define USE_TIMEOUT(...) +#define CFG_TRUNCATE 0 +#define USE_TRUNCATE(...) +#define CFG_TS 0 +#define USE_TS(...) +#define CFG_UCLAMPSET 0 +#define USE_UCLAMPSET(...) +#define CFG_UPTIME 0 +#define USE_UPTIME(...) +#define CFG_USLEEP 0 +#define USE_USLEEP(...) +#define CFG_UUIDGEN 0 +#define USE_UUIDGEN(...) +#define CFG_VCONFIG 0 +#define USE_VCONFIG(...) +#define CFG_VMSTAT 0 +#define USE_VMSTAT(...) +#define CFG_W 0 +#define USE_W(...) +#define CFG_WATCH 0 +#define USE_WATCH(...) +#define CFG_WATCHDOG 0 +#define USE_WATCHDOG(...) +#define CFG_WHICH 1 +#define USE_WHICH(...) __VA_ARGS__ +#define CFG_XXD 0 +#define USE_XXD(...) +#define CFG_YES 0 +#define USE_YES(...) +#define CFG_FTPGET 0 +#define USE_FTPGET(...) +#define CFG_FTPPUT 0 +#define USE_FTPPUT(...) +#define CFG_HOST 0 +#define USE_HOST(...) +#define CFG_HTTPD 0 +#define USE_HTTPD(...) +#define CFG_IFCONFIG 0 +#define USE_IFCONFIG(...) +#define CFG_MICROCOM 0 +#define USE_MICROCOM(...) +#define CFG_NETCAT 0 +#define USE_NETCAT(...) +#define CFG_NETSTAT 0 +#define USE_NETSTAT(...) +#define CFG_PING 0 +#define USE_PING(...) +#define CFG_RFKILL 0 +#define USE_RFKILL(...) +#define CFG_SNTP 0 +#define USE_SNTP(...) +#define CFG_TUNCTL 0 +#define USE_TUNCTL(...) +#define CFG_WGET 0 +#define USE_WGET(...) +#define CFG_WGET_LIBTLS 0 +#define USE_WGET_LIBTLS(...) +#define CFG_DMESG 0 +#define USE_DMESG(...) +#define CFG_GZIP 1 +#define USE_GZIP(...) __VA_ARGS__ +#define CFG_GUNZIP 0 +#define USE_GUNZIP(...) +#define CFG_ZCAT 0 +#define USE_ZCAT(...) +#define CFG_HOSTNAME 0 +#define USE_HOSTNAME(...) +#define CFG_DNSDOMAINNAME 0 +#define USE_DNSDOMAINNAME(...) +#define CFG_KILLALL 0 +#define USE_KILLALL(...) +#define CFG_MD5SUM 0 +#define USE_MD5SUM(...) +#define CFG_SHA1SUM 0 +#define USE_SHA1SUM(...) +#define CFG_SHA224SUM 0 +#define USE_SHA224SUM(...) +#define CFG_SHA256SUM 0 +#define USE_SHA256SUM(...) +#define CFG_SHA384SUM 0 +#define USE_SHA384SUM(...) +#define CFG_SHA512SUM 0 +#define USE_SHA512SUM(...) +#define CFG_MKNOD 0 +#define USE_MKNOD(...) +#define CFG_MKNOD_Z 0 +#define USE_MKNOD_Z(...) +#define CFG_MKTEMP 0 +#define USE_MKTEMP(...) +#define CFG_MOUNT 0 +#define USE_MOUNT(...) +#define CFG_PASSWD 0 +#define USE_PASSWD(...) +#define CFG_PASSWD_SAD 0 +#define USE_PASSWD_SAD(...) +#define CFG_PIDOF 0 +#define USE_PIDOF(...) +#define CFG_SEQ 0 +#define USE_SEQ(...) +#define CFG_SU 0 +#define USE_SU(...) +#define CFG_SYNC 0 +#define USE_SYNC(...) +#define CFG_UMOUNT 0 +#define USE_UMOUNT(...) +#define CFG_DEMO_MANY_OPTIONS 0 +#define USE_DEMO_MANY_OPTIONS(...) +#define CFG_DEMO_NUMBER 0 +#define USE_DEMO_NUMBER(...) +#define CFG_DEMO_SCANKEY 0 +#define USE_DEMO_SCANKEY(...) +#define CFG_DEMO_UTF8TOWC 0 +#define USE_DEMO_UTF8TOWC(...) +#define CFG_HELLO 0 +#define USE_HELLO(...) +#define CFG_HOSTID 0 +#define USE_HOSTID(...) +#define CFG_LOGPATH 0 +#define USE_LOGPATH(...) +#define CFG_SKELETON 0 +#define USE_SKELETON(...) +#define CFG_SKELETON_ALIAS 0 +#define USE_SKELETON_ALIAS(...) +#define CFG_GETENFORCE 0 +#define USE_GETENFORCE(...) +#define CFG_LOAD_POLICY 0 +#define USE_LOAD_POLICY(...) +#define CFG_LOG 0 +#define USE_LOG(...) +#define CFG_RESTORECON 0 +#define USE_RESTORECON(...) +#define CFG_RUNCON 0 +#define USE_RUNCON(...) +#define CFG_SENDEVENT 0 +#define USE_SENDEVENT(...) +#define CFG_SETENFORCE 0 +#define USE_SETENFORCE(...) +#define CFG_TOYBOX 1 +#define USE_TOYBOX(...) __VA_ARGS__ +#define CFG_TOYBOX_SUID 0 +#define USE_TOYBOX_SUID(...) +#define CFG_TOYBOX_LSM_NONE 1 +#define USE_TOYBOX_LSM_NONE(...) __VA_ARGS__ +#define CFG_TOYBOX_SELINUX 0 +#define USE_TOYBOX_SELINUX(...) +#define CFG_TOYBOX_SMACK 0 +#define USE_TOYBOX_SMACK(...) +#define CFG_TOYBOX_LIBCRYPTO 0 +#define USE_TOYBOX_LIBCRYPTO(...) +#define CFG_TOYBOX_LIBZ 0 +#define USE_TOYBOX_LIBZ(...) +#define CFG_TOYBOX_FLOAT 0 +#define USE_TOYBOX_FLOAT(...) +#define CFG_TOYBOX_HELP 0 +#define USE_TOYBOX_HELP(...) +#define CFG_TOYBOX_HELP_DASHDASH 0 +#define USE_TOYBOX_HELP_DASHDASH(...) +#define CFG_TOYBOX_ZHELP 0 +#define USE_TOYBOX_ZHELP(...) +#define CFG_TOYBOX_FREE 0 +#define USE_TOYBOX_FREE(...) +#define CFG_TOYBOX_NORECURSE 0 +#define USE_TOYBOX_NORECURSE(...) +#define CFG_TOYBOX_DEBUG 0 +#define USE_TOYBOX_DEBUG(...) +#define CFG_TOYBOX_FORCE_NOMMU 0 +#define USE_TOYBOX_FORCE_NOMMU(...) diff --git a/scripts/prereq/generated/flags.h b/scripts/prereq/generated/flags.h new file mode 100644 index 00000000..2565862c --- /dev/null +++ b/scripts/prereq/generated/flags.h @@ -0,0 +1,848 @@ +#undef FORCED_FLAG +#ifdef FORCE_FLAGS +#define FORCED_FLAG 1LL +#else +#define FORCED_FLAG 0LL +#endif + +// basename ^<1as: ^<1as: +#undef OPTSTR_basename +#define OPTSTR_basename "^<1as:" +#ifdef CLEANUP_basename +#undef CLEANUP_basename +#undef FOR_basename +#undef FLAG_s +#undef FLAG_a +#endif + +// cat uvte uvte +#undef OPTSTR_cat +#define OPTSTR_cat "uvte" +#ifdef CLEANUP_cat +#undef CLEANUP_cat +#undef FOR_cat +#undef FLAG_e +#undef FLAG_t +#undef FLAG_v +#undef FLAG_u +#endif + +// chmod <2?vfR[-vf] <2?vfR[-vf] +#undef OPTSTR_chmod +#define OPTSTR_chmod "<2?vfR[-vf]" +#ifdef CLEANUP_chmod +#undef CLEANUP_chmod +#undef FOR_chmod +#undef FLAG_R +#undef FLAG_f +#undef FLAG_v +#endif + +// cmp <1>4ls(silent)(quiet)n#<1[!ls] <1>4ls(silent)(quiet)n#<1[!ls] +#undef OPTSTR_cmp +#define OPTSTR_cmp "<1>4ls(silent)(quiet)n#<1[!ls]" +#ifdef CLEANUP_cmp +#undef CLEANUP_cmp +#undef FOR_cmp +#undef FLAG_n +#undef FLAG_s +#undef FLAG_l +#endif + +// echo ^?Een[-eE] ^?Een[-eE] +#undef OPTSTR_echo +#define OPTSTR_echo "^?Een[-eE]" +#ifdef CLEANUP_echo +#undef CLEANUP_echo +#undef FOR_echo +#undef FLAG_n +#undef FLAG_e +#undef FLAG_E +#endif + +// fold bsw#<1=80 bsw#<1=80 +#undef OPTSTR_fold +#define OPTSTR_fold "bsw#<1=80" +#ifdef CLEANUP_fold +#undef CLEANUP_fold +#undef FOR_fold +#undef FLAG_w +#undef FLAG_s +#undef FLAG_b +#endif + +// grep (line-buffered)(color):;(exclude-dir)*S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rRsvwc(count)L(files-without-match)l(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EF] (line-buffered)(color):;(exclude-dir)*S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rRsvwc(count)L(files-without-match)l(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EF] +#undef OPTSTR_grep +#define OPTSTR_grep "(line-buffered)(color):;(exclude-dir)*S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rRsvwc(count)L(files-without-match)l(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EF]" +#ifdef CLEANUP_grep +#undef CLEANUP_grep +#undef FOR_grep +#undef FLAG_x +#undef FLAG_m +#undef FLAG_A +#undef FLAG_B +#undef FLAG_C +#undef FLAG_f +#undef FLAG_e +#undef FLAG_q +#undef FLAG_l +#undef FLAG_L +#undef FLAG_c +#undef FLAG_w +#undef FLAG_v +#undef FLAG_s +#undef FLAG_R +#undef FLAG_r +#undef FLAG_o +#undef FLAG_n +#undef FLAG_i +#undef FLAG_h +#undef FLAG_b +#undef FLAG_a +#undef FLAG_I +#undef FLAG_H +#undef FLAG_F +#undef FLAG_E +#undef FLAG_z +#undef FLAG_Z +#undef FLAG_M +#undef FLAG_S +#undef FLAG_exclude_dir +#undef FLAG_color +#undef FLAG_line_buffered +#endif + +// gzip n(no-name)cdfkt123456789[-123456789] n(no-name)cdfkt123456789[-123456789] +#undef OPTSTR_gzip +#define OPTSTR_gzip "n(no-name)cdfkt123456789[-123456789]" +#ifdef CLEANUP_gzip +#undef CLEANUP_gzip +#undef FOR_gzip +#undef FLAG_9 +#undef FLAG_8 +#undef FLAG_7 +#undef FLAG_6 +#undef FLAG_5 +#undef FLAG_4 +#undef FLAG_3 +#undef FLAG_2 +#undef FLAG_1 +#undef FLAG_t +#undef FLAG_k +#undef FLAG_f +#undef FLAG_d +#undef FLAG_c +#undef FLAG_n +#endif + +// head ?n(lines)#<0=10c(bytes)#<0qv[-nc] ?n(lines)#<0=10c(bytes)#<0qv[-nc] +#undef OPTSTR_head +#define OPTSTR_head "?n(lines)#<0=10c(bytes)#<0qv[-nc]" +#ifdef CLEANUP_head +#undef CLEANUP_head +#undef FOR_head +#undef FLAG_v +#undef FLAG_q +#undef FLAG_c +#undef FLAG_n +#endif + +// ln <1rt:Tvnfs <1rt:Tvnfs +#undef OPTSTR_ln +#define OPTSTR_ln "<1rt:Tvnfs" +#ifdef CLEANUP_ln +#undef CLEANUP_ln +#undef FOR_ln +#undef FLAG_s +#undef FLAG_f +#undef FLAG_n +#undef FLAG_v +#undef FLAG_T +#undef FLAG_t +#undef FLAG_r +#endif + +// ls (sort):(color):;(full-time)(show-control-chars)˙(block-size)#=1024<1Ħ(group-directories-first)ŝZgoACFHLNRSUXabcdfhikl@mnpqrstuw#=80<0x1[-Cxm1][-Cxml][-Cxmo][-Cxmg][-cu][-ftS][-HL][-Nqb][-k˙] (sort):(color):;(full-time)(show-control-chars)˙(block-size)#=1024<1Ħ(group-directories-first)ŝZgoACFHLNRSUXabcdfhikl@mnpqrstuw#=80<0x1[-Cxm1][-Cxml][-Cxmo][-Cxmg][-cu][-ftS][-HL][-Nqb][-k˙] +#undef OPTSTR_ls +#define OPTSTR_ls "(sort):(color):;(full-time)(show-control-chars)˙(block-size)#=1024<1Ħ(group-directories-first)ŝZgoACFHLNRSUXabcdfhikl@mnpqrstuw#=80<0x1[-Cxm1][-Cxml][-Cxmo][-Cxmg][-cu][-ftS][-HL][-Nqb][-k˙]" +#ifdef CLEANUP_ls +#undef CLEANUP_ls +#undef FOR_ls +#undef FLAG_1 +#undef FLAG_x +#undef FLAG_w +#undef FLAG_u +#undef FLAG_t +#undef FLAG_s +#undef FLAG_r +#undef FLAG_q +#undef FLAG_p +#undef FLAG_n +#undef FLAG_m +#undef FLAG_l +#undef FLAG_k +#undef FLAG_i +#undef FLAG_h +#undef FLAG_f +#undef FLAG_d +#undef FLAG_c +#undef FLAG_b +#undef FLAG_a +#undef FLAG_X +#undef FLAG_U +#undef FLAG_S +#undef FLAG_R +#undef FLAG_N +#undef FLAG_L +#undef FLAG_H +#undef FLAG_F +#undef FLAG_C +#undef FLAG_A +#undef FLAG_o +#undef FLAG_g +#undef FLAG_Z +#undef FLAG_X7E +#undef FLAG_X21 +#undef FLAG_X7F +#undef FLAG_show_control_chars +#undef FLAG_full_time +#undef FLAG_color +#undef FLAG_sort +#endif + +// mkdir <1vp(parent)(parents)m: <1Z:vp(parent)(parents)m: +#undef OPTSTR_mkdir +#define OPTSTR_mkdir "<1vp(parent)(parents)m:" +#ifdef CLEANUP_mkdir +#undef CLEANUP_mkdir +#undef FOR_mkdir +#undef FLAG_m +#undef FLAG_p +#undef FLAG_v +#undef FLAG_Z +#endif + +// od j#vw#<1=16N#xsodcbA:t* j#vw#<1=16N#xsodcbA:t* +#undef OPTSTR_od +#define OPTSTR_od "j#vw#<1=16N#xsodcbA:t*" +#ifdef CLEANUP_od +#undef CLEANUP_od +#undef FOR_od +#undef FLAG_t +#undef FLAG_A +#undef FLAG_b +#undef FLAG_c +#undef FLAG_d +#undef FLAG_o +#undef FLAG_s +#undef FLAG_x +#undef FLAG_N +#undef FLAG_w +#undef FLAG_v +#undef FLAG_j +#endif + +// readlink <1vnf(canonicalize)emqz[-mef][-qv] <1vnf(canonicalize)emqz[-mef][-qv] +#undef OPTSTR_readlink +#define OPTSTR_readlink "<1vnf(canonicalize)emqz[-mef][-qv]" +#ifdef CLEANUP_readlink +#undef CLEANUP_readlink +#undef FOR_readlink +#undef FLAG_z +#undef FLAG_q +#undef FLAG_m +#undef FLAG_e +#undef FLAG_f +#undef FLAG_n +#undef FLAG_v +#endif + +// realpath <1(relative-base):R(relative-to):s(no-symlinks)LPemqz[-Ps][-LP][-me] +#undef OPTSTR_realpath +#define OPTSTR_realpath "<1(relative-base):R(relative-to):s(no-symlinks)LPemqz[-Ps][-LP][-me]" +#ifdef CLEANUP_realpath +#undef CLEANUP_realpath +#undef FOR_realpath +#undef FLAG_z +#undef FLAG_q +#undef FLAG_m +#undef FLAG_e +#undef FLAG_P +#undef FLAG_L +#undef FLAG_s +#undef FLAG_R +#undef FLAG_relative_base +#endif + +// rm f(force)iRrv[-fi] f(force)iRrv[-fi] +#undef OPTSTR_rm +#define OPTSTR_rm "f(force)iRrv[-fi]" +#ifdef CLEANUP_rm +#undef CLEANUP_rm +#undef FOR_rm +#undef FLAG_v +#undef FLAG_r +#undef FLAG_R +#undef FLAG_i +#undef FLAG_f +#endif + +// sed (help)(version)(tarxform)e*f*i:;nErz(null-data)s[+Er] (help)(version)(tarxform)e*f*i:;nErz(null-data)s[+Er] +#undef OPTSTR_sed +#define OPTSTR_sed "(help)(version)(tarxform)e*f*i:;nErz(null-data)s[+Er]" +#ifdef CLEANUP_sed +#undef CLEANUP_sed +#undef FOR_sed +#undef FLAG_s +#undef FLAG_z +#undef FLAG_r +#undef FLAG_E +#undef FLAG_n +#undef FLAG_i +#undef FLAG_f +#undef FLAG_e +#undef FLAG_tarxform +#undef FLAG_version +#undef FLAG_help +#endif + +// sort S:T:mo:k*t:xVbMCcszdfirun gS:T:mo:k*t:xVbMCcszdfirun +#undef OPTSTR_sort +#define OPTSTR_sort "S:T:mo:k*t:xVbMCcszdfirun" +#ifdef CLEANUP_sort +#undef CLEANUP_sort +#undef FOR_sort +#undef FLAG_n +#undef FLAG_u +#undef FLAG_r +#undef FLAG_i +#undef FLAG_f +#undef FLAG_d +#undef FLAG_z +#undef FLAG_s +#undef FLAG_c +#undef FLAG_C +#undef FLAG_M +#undef FLAG_b +#undef FLAG_V +#undef FLAG_x +#undef FLAG_t +#undef FLAG_k +#undef FLAG_o +#undef FLAG_m +#undef FLAG_T +#undef FLAG_S +#undef FLAG_g +#endif + +// tail ?fFs:c(bytes)-n(lines)-[-cn][-fF] ?fFs:c(bytes)-n(lines)-[-cn][-fF] +#undef OPTSTR_tail +#define OPTSTR_tail "?fFs:c(bytes)-n(lines)-[-cn][-fF]" +#ifdef CLEANUP_tail +#undef CLEANUP_tail +#undef FOR_tail +#undef FLAG_n +#undef FLAG_c +#undef FLAG_s +#undef FLAG_F +#undef FLAG_f +#endif + +// taskset <1^pa +#undef OPTSTR_taskset +#define OPTSTR_taskset "<1^pa" +#ifdef CLEANUP_taskset +#undef CLEANUP_taskset +#undef FOR_taskset +#undef FLAG_a +#undef FLAG_p +#endif + +// tee ia ia +#undef OPTSTR_tee +#define OPTSTR_tee "ia" +#ifdef CLEANUP_tee +#undef CLEANUP_tee +#undef FOR_tee +#undef FLAG_a +#undef FLAG_i +#endif + +// tr ^<1>2Ccstd[+cC] ^<1>2Ccstd[+cC] +#undef OPTSTR_tr +#define OPTSTR_tr "^<1>2Ccstd[+cC]" +#ifdef CLEANUP_tr +#undef CLEANUP_tr +#undef FOR_tr +#undef FLAG_d +#undef FLAG_t +#undef FLAG_s +#undef FLAG_c +#undef FLAG_C +#endif + +// uname paomvrns paomvrns +#undef OPTSTR_uname +#define OPTSTR_uname "paomvrns" +#ifdef CLEANUP_uname +#undef CLEANUP_uname +#undef FOR_uname +#undef FLAG_s +#undef FLAG_n +#undef FLAG_r +#undef FLAG_v +#undef FLAG_m +#undef FLAG_o +#undef FLAG_a +#undef FLAG_p +#endif + +// wc Lcmwl Lcmwl +#undef OPTSTR_wc +#define OPTSTR_wc "Lcmwl" +#ifdef CLEANUP_wc +#undef CLEANUP_wc +#undef FOR_wc +#undef FLAG_l +#undef FLAG_w +#undef FLAG_m +#undef FLAG_c +#undef FLAG_L +#endif + +// xargs ^E:P#<0(null)=1optr(no-run-if-empty)n#<1(max-args)s#0[!0E] ^E:P#<0(null)=1optr(no-run-if-empty)n#<1(max-args)s#0[!0E] +#undef OPTSTR_xargs +#define OPTSTR_xargs "^E:P#<0(null)=1optr(no-run-if-empty)n#<1(max-args)s#0[!0E]" +#ifdef CLEANUP_xargs +#undef CLEANUP_xargs +#undef FOR_xargs +#undef FLAG_0 +#undef FLAG_s +#undef FLAG_n +#undef FLAG_r +#undef FLAG_t +#undef FLAG_p +#undef FLAG_o +#undef FLAG_P +#undef FLAG_E +#endif + +#ifdef FOR_basename +#define CLEANUP_basename +#ifndef TT +#define TT this.basename +#endif +#define FLAG_s (1LL<<0) +#define FLAG_a (1LL<<1) +#endif + +#ifdef FOR_cat +#define CLEANUP_cat +#ifndef TT +#define TT this.cat +#endif +#define FLAG_e (1LL<<0) +#define FLAG_t (1LL<<1) +#define FLAG_v (1LL<<2) +#define FLAG_u (1LL<<3) +#endif + +#ifdef FOR_chmod +#define CLEANUP_chmod +#ifndef TT +#define TT this.chmod +#endif +#define FLAG_R (1LL<<0) +#define FLAG_f (1LL<<1) +#define FLAG_v (1LL<<2) +#endif + +#ifdef FOR_cmp +#define CLEANUP_cmp +#ifndef TT +#define TT this.cmp +#endif +#define FLAG_n (1LL<<0) +#define FLAG_s (1LL<<1) +#define FLAG_l (1LL<<2) +#endif + +#ifdef FOR_echo +#define CLEANUP_echo +#ifndef TT +#define TT this.echo +#endif +#define FLAG_n (1LL<<0) +#define FLAG_e (1LL<<1) +#define FLAG_E (1LL<<2) +#endif + +#ifdef FOR_fold +#define CLEANUP_fold +#ifndef TT +#define TT this.fold +#endif +#define FLAG_w (1LL<<0) +#define FLAG_s (1LL<<1) +#define FLAG_b (1LL<<2) +#endif + +#ifdef FOR_grep +#define CLEANUP_grep +#ifndef TT +#define TT this.grep +#endif +#define FLAG_x (1LL<<0) +#define FLAG_m (1LL<<1) +#define FLAG_A (1LL<<2) +#define FLAG_B (1LL<<3) +#define FLAG_C (1LL<<4) +#define FLAG_f (1LL<<5) +#define FLAG_e (1LL<<6) +#define FLAG_q (1LL<<7) +#define FLAG_l (1LL<<8) +#define FLAG_L (1LL<<9) +#define FLAG_c (1LL<<10) +#define FLAG_w (1LL<<11) +#define FLAG_v (1LL<<12) +#define FLAG_s (1LL<<13) +#define FLAG_R (1LL<<14) +#define FLAG_r (1LL<<15) +#define FLAG_o (1LL<<16) +#define FLAG_n (1LL<<17) +#define FLAG_i (1LL<<18) +#define FLAG_h (1LL<<19) +#define FLAG_b (1LL<<20) +#define FLAG_a (1LL<<21) +#define FLAG_I (1LL<<22) +#define FLAG_H (1LL<<23) +#define FLAG_F (1LL<<24) +#define FLAG_E (1LL<<25) +#define FLAG_z (1LL<<26) +#define FLAG_Z (1LL<<27) +#define FLAG_M (1LL<<28) +#define FLAG_S (1LL<<29) +#define FLAG_exclude_dir (1LL<<30) +#define FLAG_color (1LL<<31) +#define FLAG_line_buffered (1LL<<32) +#endif + +#ifdef FOR_gzip +#define CLEANUP_gzip +#ifndef TT +#define TT this.gzip +#endif +#define FLAG_9 (1LL<<0) +#define FLAG_8 (1LL<<1) +#define FLAG_7 (1LL<<2) +#define FLAG_6 (1LL<<3) +#define FLAG_5 (1LL<<4) +#define FLAG_4 (1LL<<5) +#define FLAG_3 (1LL<<6) +#define FLAG_2 (1LL<<7) +#define FLAG_1 (1LL<<8) +#define FLAG_t (1LL<<9) +#define FLAG_k (1LL<<10) +#define FLAG_f (1LL<<11) +#define FLAG_d (1LL<<12) +#define FLAG_c (1LL<<13) +#define FLAG_n (1LL<<14) +#endif + +#ifdef FOR_head +#define CLEANUP_head +#ifndef TT +#define TT this.head +#endif +#define FLAG_v (1LL<<0) +#define FLAG_q (1LL<<1) +#define FLAG_c (1LL<<2) +#define FLAG_n (1LL<<3) +#endif + +#ifdef FOR_ln +#define CLEANUP_ln +#ifndef TT +#define TT this.ln +#endif +#define FLAG_s (1LL<<0) +#define FLAG_f (1LL<<1) +#define FLAG_n (1LL<<2) +#define FLAG_v (1LL<<3) +#define FLAG_T (1LL<<4) +#define FLAG_t (1LL<<5) +#define FLAG_r (1LL<<6) +#endif + +#ifdef FOR_ls +#define CLEANUP_ls +#ifndef TT +#define TT this.ls +#endif +#define FLAG_1 (1LL<<0) +#define FLAG_x (1LL<<1) +#define FLAG_w (1LL<<2) +#define FLAG_u (1LL<<3) +#define FLAG_t (1LL<<4) +#define FLAG_s (1LL<<5) +#define FLAG_r (1LL<<6) +#define FLAG_q (1LL<<7) +#define FLAG_p (1LL<<8) +#define FLAG_n (1LL<<9) +#define FLAG_m (1LL<<10) +#define FLAG_l (1LL<<11) +#define FLAG_k (1LL<<12) +#define FLAG_i (1LL<<13) +#define FLAG_h (1LL<<14) +#define FLAG_f (1LL<<15) +#define FLAG_d (1LL<<16) +#define FLAG_c (1LL<<17) +#define FLAG_b (1LL<<18) +#define FLAG_a (1LL<<19) +#define FLAG_X (1LL<<20) +#define FLAG_U (1LL<<21) +#define FLAG_S (1LL<<22) +#define FLAG_R (1LL<<23) +#define FLAG_N (1LL<<24) +#define FLAG_L (1LL<<25) +#define FLAG_H (1LL<<26) +#define FLAG_F (1LL<<27) +#define FLAG_C (1LL<<28) +#define FLAG_A (1LL<<29) +#define FLAG_o (1LL<<30) +#define FLAG_g (1LL<<31) +#define FLAG_Z (1LL<<32) +#define FLAG_X7E (1LL<<33) +#define FLAG_X21 (1LL<<34) +#define FLAG_X7F (1LL<<35) +#define FLAG_show_control_chars (1LL<<36) +#define FLAG_full_time (1LL<<37) +#define FLAG_color (1LL<<38) +#define FLAG_sort (1LL<<39) +#endif + +#ifdef FOR_mkdir +#define CLEANUP_mkdir +#ifndef TT +#define TT this.mkdir +#endif +#define FLAG_m (1LL<<0) +#define FLAG_p (1LL<<1) +#define FLAG_v (1LL<<2) +#define FLAG_Z (FORCED_FLAG<<3) +#endif + +#ifdef FOR_od +#define CLEANUP_od +#ifndef TT +#define TT this.od +#endif +#define FLAG_t (1LL<<0) +#define FLAG_A (1LL<<1) +#define FLAG_b (1LL<<2) +#define FLAG_c (1LL<<3) +#define FLAG_d (1LL<<4) +#define FLAG_o (1LL<<5) +#define FLAG_s (1LL<<6) +#define FLAG_x (1LL<<7) +#define FLAG_N (1LL<<8) +#define FLAG_w (1LL<<9) +#define FLAG_v (1LL<<10) +#define FLAG_j (1LL<<11) +#endif + +#ifdef FOR_readlink +#define CLEANUP_readlink +#ifndef TT +#define TT this.readlink +#endif +#define FLAG_z (1LL<<0) +#define FLAG_q (1LL<<1) +#define FLAG_m (1LL<<2) +#define FLAG_e (1LL<<3) +#define FLAG_f (1LL<<4) +#define FLAG_n (1LL<<5) +#define FLAG_v (1LL<<6) +#endif + +#ifdef FOR_realpath +#define CLEANUP_realpath +#ifndef TT +#define TT this.realpath +#endif +#define FLAG_z (FORCED_FLAG<<0) +#define FLAG_q (FORCED_FLAG<<1) +#define FLAG_m (FORCED_FLAG<<2) +#define FLAG_e (FORCED_FLAG<<3) +#define FLAG_P (FORCED_FLAG<<4) +#define FLAG_L (FORCED_FLAG<<5) +#define FLAG_s (FORCED_FLAG<<6) +#define FLAG_R (FORCED_FLAG<<7) +#define FLAG_relative_base (FORCED_FLAG<<8) +#endif + +#ifdef FOR_rm +#define CLEANUP_rm +#ifndef TT +#define TT this.rm +#endif +#define FLAG_v (1LL<<0) +#define FLAG_r (1LL<<1) +#define FLAG_R (1LL<<2) +#define FLAG_i (1LL<<3) +#define FLAG_f (1LL<<4) +#endif + +#ifdef FOR_sed +#define CLEANUP_sed +#ifndef TT +#define TT this.sed +#endif +#define FLAG_s (1LL<<0) +#define FLAG_z (1LL<<1) +#define FLAG_r (1LL<<2) +#define FLAG_E (1LL<<3) +#define FLAG_n (1LL<<4) +#define FLAG_i (1LL<<5) +#define FLAG_f (1LL<<6) +#define FLAG_e (1LL<<7) +#define FLAG_tarxform (1LL<<8) +#define FLAG_version (1LL<<9) +#define FLAG_help (1LL<<10) +#endif + +#ifdef FOR_sort +#define CLEANUP_sort +#ifndef TT +#define TT this.sort +#endif +#define FLAG_n (1LL<<0) +#define FLAG_u (1LL<<1) +#define FLAG_r (1LL<<2) +#define FLAG_i (1LL<<3) +#define FLAG_f (1LL<<4) +#define FLAG_d (1LL<<5) +#define FLAG_z (1LL<<6) +#define FLAG_s (1LL<<7) +#define FLAG_c (1LL<<8) +#define FLAG_C (1LL<<9) +#define FLAG_M (1LL<<10) +#define FLAG_b (1LL<<11) +#define FLAG_V (1LL<<12) +#define FLAG_x (1LL<<13) +#define FLAG_t (1LL<<14) +#define FLAG_k (1LL<<15) +#define FLAG_o (1LL<<16) +#define FLAG_m (1LL<<17) +#define FLAG_T (1LL<<18) +#define FLAG_S (1LL<<19) +#define FLAG_g (FORCED_FLAG<<20) +#endif + +#ifdef FOR_tail +#define CLEANUP_tail +#ifndef TT +#define TT this.tail +#endif +#define FLAG_n (1LL<<0) +#define FLAG_c (1LL<<1) +#define FLAG_s (1LL<<2) +#define FLAG_F (1LL<<3) +#define FLAG_f (1LL<<4) +#endif + +#ifdef FOR_taskset +#define CLEANUP_taskset +#ifndef TT +#define TT this.taskset +#endif +#define FLAG_a (FORCED_FLAG<<0) +#define FLAG_p (FORCED_FLAG<<1) +#endif + +#ifdef FOR_tee +#define CLEANUP_tee +#ifndef TT +#define TT this.tee +#endif +#define FLAG_a (1LL<<0) +#define FLAG_i (1LL<<1) +#endif + +#ifdef FOR_tr +#define CLEANUP_tr +#ifndef TT +#define TT this.tr +#endif +#define FLAG_d (1LL<<0) +#define FLAG_t (1LL<<1) +#define FLAG_s (1LL<<2) +#define FLAG_c (1LL<<3) +#define FLAG_C (1LL<<4) +#endif + +#ifdef FOR_uname +#define CLEANUP_uname +#ifndef TT +#define TT this.uname +#endif +#define FLAG_s (1LL<<0) +#define FLAG_n (1LL<<1) +#define FLAG_r (1LL<<2) +#define FLAG_v (1LL<<3) +#define FLAG_m (1LL<<4) +#define FLAG_o (1LL<<5) +#define FLAG_a (1LL<<6) +#define FLAG_p (1LL<<7) +#endif + +#ifdef FOR_wc +#define CLEANUP_wc +#ifndef TT +#define TT this.wc +#endif +#define FLAG_l (1LL<<0) +#define FLAG_w (1LL<<1) +#define FLAG_m (1LL<<2) +#define FLAG_c (1LL<<3) +#define FLAG_L (1LL<<4) +#endif + +#ifdef FOR_xargs +#define CLEANUP_xargs +#ifndef TT +#define TT this.xargs +#endif +#define FLAG_0 (1LL<<0) +#define FLAG_s (1LL<<1) +#define FLAG_n (1LL<<2) +#define FLAG_r (1LL<<3) +#define FLAG_t (1LL<<4) +#define FLAG_p (1LL<<5) +#define FLAG_o (1LL<<6) +#define FLAG_P (1LL<<7) +#define FLAG_E (1LL<<8) +#endif + +#undef OPTSTR_ascii +#define OPTSTR_ascii 0 +#undef OPTSTR_dirname +#define OPTSTR_dirname "<1" +#undef OPTSTR_gitcheckout +#define OPTSTR_gitcheckout "<1" +#undef OPTSTR_gitclone +#define OPTSTR_gitclone "<1" +#undef OPTSTR_gitfetch +#define OPTSTR_gitfetch 0 +#undef OPTSTR_gitinit +#define OPTSTR_gitinit "<1" +#undef OPTSTR_gitremote +#define OPTSTR_gitremote "<1" +#undef OPTSTR_makedevs +#define OPTSTR_makedevs "<1>1d:" +#undef OPTSTR_nproc +#define OPTSTR_nproc "(all)" +#undef OPTSTR_toybox +#define OPTSTR_toybox 0 +#undef OPTSTR_which +#define OPTSTR_which "<1a" diff --git a/scripts/prereq/generated/globals.h b/scripts/prereq/generated/globals.h new file mode 100644 index 00000000..464bfd70 --- /dev/null +++ b/scripts/prereq/generated/globals.h @@ -0,0 +1,155 @@ +struct gzip_data { + int level; +}; + +struct realpath_data { + char *R, *relative_base; +}; + +struct tr_data { + short *map; + int len1, len2; +}; + +struct basename_data { + char *s; +}; + +struct chmod_data { + char *mode; +}; + +struct cmp_data { + long n; + + int fd; + char *name; +}; + +struct fold_data { + long w; +}; + +struct grep_data { + long m, A, B, C; + struct arg_list *f, *e, *M, *S, *exclude_dir; + char *color; + + char *purple, *cyan, *red, *green, *grey; + struct double_list *reg; + int found, tried, delim; + struct arg_list **fixed; +}; + +struct head_data { + long c, n; + + int file_no; +}; + +struct ln_data { + char *t; +}; + +struct ls_data { + long w, l, block_size; + char *color, *sort; + + struct dirtree *files, *singledir; + unsigned screen_width; + int nl_title; + char *escmore; +}; + +struct mkdir_data { + char *m, *Z; +}; + +struct od_data { + struct arg_list *t; + char *A; + long N, w, j; + + int address_idx; + unsigned types, leftover, star; + char *buf; // Points to buffers[0] or buffers[1]. + char *bufs[2]; // Used to detect duplicate lines. + off_t pos; +}; + +struct sed_data { + char *i; + struct arg_list *f, *e; + + // processed pattern list + struct double_list *pattern; + + char *nextline, *remember, *tarxform; + void *restart, *lastregex; + long nextlen, rememberlen, count; + int fdout, noeol; + unsigned xx, tarxlen, xflags; + char delim, xftype; +}; + +struct sort_data { + char *t; + struct arg_list *k; + char *o, *T, S; + + void *key_list; + unsigned linecount; + char **lines, *name; +}; + +struct tail_data { + long n, c; + char *s; + + int file_no, last_fd, ss; + struct xnotify *not; + struct { + char *path; + int fd; + struct dev_ino di; + } *F; +}; + +struct tee_data { + void *outputs; + int out; +}; + +struct wc_data { + unsigned long totals[5]; +}; + +struct xargs_data { + long s, n, P; + char *E; + + long entries, bytes, np; + char delim; + FILE *tty; +}; +extern union global_union { + struct gzip_data gzip; + struct realpath_data realpath; + struct tr_data tr; + struct basename_data basename; + struct chmod_data chmod; + struct cmp_data cmp; + struct fold_data fold; + struct grep_data grep; + struct head_data head; + struct ln_data ln; + struct ls_data ls; + struct mkdir_data mkdir; + struct od_data od; + struct sed_data sed; + struct sort_data sort; + struct tail_data tail; + struct tee_data tee; + struct wc_data wc; + struct xargs_data xargs; +} this; diff --git a/scripts/prereq/generated/help.h b/scripts/prereq/generated/help.h new file mode 100644 index 00000000..9b17e37b --- /dev/null +++ b/scripts/prereq/generated/help.h @@ -0,0 +1,34 @@ +#define HELP_toybox "" +#define HELP_as "" +#define HELP_basename "" +#define HELP_cat "" +#define HELP_cc "" +#define HELP_chmod "" +#define HELP_cmp "" +#define HELP_dirname "" +#define HELP_echo "" +#define HELP_egrep "" +#define HELP_fold "" +#define HELP_git "" +#define HELP_grep "" +#define HELP_gzip "" +#define HELP_head "" +#define HELP_ld "" +#define HELP_ln "" +#define HELP_ls "" +#define HELP_make "" +#define HELP_mkdir "" +#define HELP_nproc "" +#define HELP_od "" +#define HELP_readlink "" +#define HELP_rm "" +#define HELP_sed "" +#define HELP_sort "" +#define HELP_strip "" +#define HELP_tail "" +#define HELP_tee "" +#define HELP_tr "" +#define HELP_uname "" +#define HELP_wc "" +#define HELP_which "" +#define HELP_xargs "" diff --git a/scripts/prereq/generated/newtoys.h b/scripts/prereq/generated/newtoys.h new file mode 100644 index 00000000..289a3c5e --- /dev/null +++ b/scripts/prereq/generated/newtoys.h @@ -0,0 +1,124 @@ +USE_TOYBOX(NEWTOY(toybox, 0, TOYFLAG_STAYROOT|TOYFLAG_NOHELP)) +USE_SH(OLDTOY(-bash, sh, 0)) +USE_SH(OLDTOY(-sh, sh, 0)) +USE_SH(OLDTOY(-toysh, sh, 0)) +USE_SH(OLDTOY(., source, TOYFLAG_NOFORK)) +USE_TRUE(OLDTOY(:, true, TOYFLAG_NOFORK|TOYFLAG_NOHELP)) +USE_TEST_GLUE(OLDTOY([, test, TOYFLAG_BIN|TOYFLAG_MAYFORK|TOYFLAG_NOHELP)) +USE_SH(OLDTOY([[, test, TOYFLAG_NOFORK|TOYFLAG_NOHELP)) +USE_GROUPADD(OLDTOY(addgroup, groupadd, TOYFLAG_NEEDROOT|TOYFLAG_SBIN)) +USE_USERADD(OLDTOY(adduser, useradd, TOYFLAG_NEEDROOT|TOYFLAG_UMASK|TOYFLAG_SBIN)) +USE_ASCII(NEWTOY(ascii, 0, TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_BASE32(NEWTOY(base32, "diw#<0=76[!dw]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_BASE64(NEWTOY(base64, "diw#<0=76[!dw]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_BASENAME(NEWTOY(basename, "^<1as:", TOYFLAG_USR|TOYFLAG_BIN)) +USE_SH(OLDTOY(bash, sh, TOYFLAG_BIN)) +USE_BZCAT(NEWTOY(bzcat, 0, TOYFLAG_USR|TOYFLAG_BIN)) +USE_CAT(NEWTOY(cat, "uvte", TOYFLAG_BIN)) +USE_CHATTR(NEWTOY(chattr, "?p#v#R", TOYFLAG_BIN)) +USE_CHMOD(NEWTOY(chmod, "<2?vfR[-vf]", TOYFLAG_BIN)) +USE_CHOWN(OLDTOY(chown, chgrp, TOYFLAG_BIN)) +USE_CKSUM(NEWTOY(cksum, "HIPLN", TOYFLAG_BIN)) +USE_CMP(NEWTOY(cmp, "<1>4ls(silent)(quiet)n#<1[!ls]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_ARGFAIL(2))) +USE_CROND(NEWTOY(crond, "fbSl#<0=8d#<0L:c:[-bf][-LS][-ld]", TOYFLAG_USR|TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) +USE_GROUPDEL(OLDTOY(delgroup, groupdel, TOYFLAG_NEEDROOT|TOYFLAG_SBIN)) +USE_USERDEL(OLDTOY(deluser, userdel, TOYFLAG_NEEDROOT|TOYFLAG_SBIN)) +USE_DEMO_UTF8TOWC(NEWTOY(demo_utf8towc, 0, TOYFLAG_USR|TOYFLAG_BIN)) +USE_DIRNAME(NEWTOY(dirname, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_DUMPLEASES(NEWTOY(dumpleases, ">0arf:[!ar]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_ECHO(NEWTOY(echo, "^?Een[-eE]", TOYFLAG_BIN|TOYFLAG_MAYFORK|TOYFLAG_LINEBUF)) +USE_EGREP(OLDTOY(egrep, grep, TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)|TOYFLAG_LINEBUF)) +USE_FALLOCATE(NEWTOY(fallocate, ">1l#|o#", TOYFLAG_USR|TOYFLAG_BIN)) +USE_FALSE(NEWTOY(false, NULL, TOYFLAG_BIN|TOYFLAG_NOHELP|TOYFLAG_MAYFORK)) +USE_FGREP(OLDTOY(fgrep, grep, TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)|TOYFLAG_LINEBUF)) +USE_FOLD(NEWTOY(fold, "bsw#<1=80", TOYFLAG_USR|TOYFLAG_BIN)) +USE_FTPPUT(OLDTOY(ftpput, ftpget, TOYFLAG_USR|TOYFLAG_BIN)) +USE_GETFATTR(NEWTOY(getfattr, "(only-values)dhn:", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GITCHECKOUT(NEWTOY(gitcheckout, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GITCLONE(NEWTOY(gitclone, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GITFETCH(NEWTOY(gitfetch, 0, TOYFLAG_USR|TOYFLAG_BIN)) +USE_GITINIT(NEWTOY(gitinit, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GITREMOTE(NEWTOY(gitremote, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GPIODETECT(NEWTOY(gpiodetect, ">0", TOYFLAG_USR|TOYFLAG_BIN)) +USE_GREP(NEWTOY(grep, "(line-buffered)(color):;(exclude-dir)*S(exclude)*M(include)*ZzEFHIab(byte-offset)h(no-filename)ino(only-matching)rRsvwc(count)L(files-without-match)l(files-with-matches)q(quiet)(silent)e*f*C#B#A#m#x[!wx][!EF]", TOYFLAG_BIN|TOYFLAG_ARGFAIL(2)|TOYFLAG_LINEBUF)) +USE_GZIP(NEWTOY(gzip, "n(no-name)cdfkt123456789[-123456789]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_REBOOT(OLDTOY(halt, reboot, TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) +USE_HD(OLDTOY(hd, hexdump, TOYFLAG_USR|TOYFLAG_BIN)) +USE_HEAD(NEWTOY(head, "?n(lines)#<0=10c(bytes)#<0qv[-nc]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_HWCLOCK(NEWTOY(hwclock, ">0(fast)f(rtc):u(utc)l(localtime)t(systz)s(hctosys)r(show)w(systohc)[-ul][!rtsw]", TOYFLAG_SBIN)) +USE_I2CTRANSFER(NEWTOY(i2ctransfer, "<2vfy", TOYFLAG_USR|TOYFLAG_SBIN)) +USE_INSMOD(NEWTOY(insmod, "<1", TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) +USE_IP(OLDTOY(ipaddr, ip, TOYFLAG_SBIN)) +USE_IPCRM(NEWTOY(ipcrm, "m*M*s*S*q*Q*", TOYFLAG_USR|TOYFLAG_BIN)) +USE_IP(OLDTOY(iplink, ip, TOYFLAG_SBIN)) +USE_IP(OLDTOY(iproute, ip, TOYFLAG_SBIN)) +USE_IP(OLDTOY(iprule, ip, TOYFLAG_SBIN)) +USE_IP(OLDTOY(iptunnel, ip, TOYFLAG_SBIN)) +USE_LAST(NEWTOY(last, "f:W", TOYFLAG_BIN)) +USE_LN(NEWTOY(ln, "<1rt:Tvnfs", TOYFLAG_BIN)) +USE_LS(NEWTOY(ls, "(sort):(color):;(full-time)(show-control-chars)\377(block-size)#=1024<1\241(group-directories-first)\376ZgoACFHLNRSUXabcdfhikl@mnpqrstuw#=80<0x1[-Cxm1][-Cxml][-Cxmo][-Cxmg][-cu][-ftS][-HL][-Nqb][-k\377]", TOYFLAG_BIN)) +USE_LSATTR(NEWTOY(lsattr, "ldapvR", TOYFLAG_BIN)) +USE_LSMOD(NEWTOY(lsmod, NULL, TOYFLAG_SBIN)) +USE_LSOF(NEWTOY(lsof, "lp*t", TOYFLAG_USR|TOYFLAG_BIN)) +USE_LSPCI(NEWTOY(lspci, "emkn@x@i:", TOYFLAG_USR|TOYFLAG_BIN)) +USE_LSUSB(NEWTOY(lsusb, "i:", TOYFLAG_USR|TOYFLAG_BIN)) +USE_MAKEDEVS(NEWTOY(makedevs, "<1>1d:", TOYFLAG_USR|TOYFLAG_BIN)) +USE_MDEV(NEWTOY(mdev, "s", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_UMASK)) +USE_MKDIR(NEWTOY(mkdir, "<1"USE_MKDIR_Z("Z:")"vp(parent)(parents)m:", TOYFLAG_BIN|TOYFLAG_UMASK)) +USE_MKNOD(NEWTOY(mknod, "<2>4m(mode):"USE_MKNOD_Z("Z:"), TOYFLAG_BIN|TOYFLAG_UMASK)) +USE_MKPASSWD(NEWTOY(mkpasswd, ">2S:m:P#=0<0", TOYFLAG_USR|TOYFLAG_BIN)) +USE_MODINFO(NEWTOY(modinfo, "<1b:k:F:0", TOYFLAG_SBIN)) +USE_MODPROBE(NEWTOY(modprobe, "alrqvsDbd*", TOYFLAG_SBIN)) +USE_NBD_CLIENT(OLDTOY(nbd-client, nbd_client, TOYFLAG_USR|TOYFLAG_BIN)) +USE_NBD_SERVER(OLDTOY(nbd-server, nbd_server, TOYFLAG_USR|TOYFLAG_BIN)) +USE_NETCAT(OLDTOY(nc, netcat, TOYFLAG_USR|TOYFLAG_BIN)) +USE_NETCAT(NEWTOY(netcat, "^tElLw#<1W#<1p#<1>65535q#<1s:f:46uUnvz[!tlL][!Lw][!Lu][!46U]", TOYFLAG_BIN)) +USE_NPROC(NEWTOY(nproc, "(all)", TOYFLAG_USR|TOYFLAG_BIN)) +USE_OD(NEWTOY(od, "j#vw#<1=16N#xsodcbA:t*", TOYFLAG_USR|TOYFLAG_BIN)) +USE_PASSWD(NEWTOY(passwd, ">1a:dlu", TOYFLAG_STAYROOT|TOYFLAG_USR|TOYFLAG_BIN)) +USE_PASTE(NEWTOY(paste, "d:s", TOYFLAG_USR|TOYFLAG_BIN)) +USE_PGREP(NEWTOY(pgrep, "?cld:u*U*t*s*P*g*G*fnovxL:[-no]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_PING(OLDTOY(ping6, ping, TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_REBOOT(OLDTOY(poweroff, reboot, TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) +USE_ULIMIT(OLDTOY(prlimit, ulimit, TOYFLAG_USR|TOYFLAG_BIN)) +USE_READAHEAD(NEWTOY(readahead, NULL, TOYFLAG_BIN)) +USE_READLINK(NEWTOY(readlink, "<1vnf(canonicalize)emqz[-mef][-qv]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_RM(NEWTOY(rm, "f(force)iRrv[-fi]", TOYFLAG_BIN)) +USE_RMDIR(NEWTOY(rmdir, "<1(ignore-fail-on-non-empty)p(parents)", TOYFLAG_BIN)) +USE_RMMOD(NEWTOY(rmmod, "<1wf", TOYFLAG_SBIN|TOYFLAG_NEEDROOT)) +USE_SED(NEWTOY(sed, "(help)(version)(tarxform)e*f*i:;nErz(null-data)s[+Er]", TOYFLAG_BIN|TOYFLAG_NOHELP)) +USE_SETFATTR(NEWTOY(setfattr, "hn:|v:x:|[!xv]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_SHA1SUM(OLDTOY(sha1sum, md5sum, TOYFLAG_USR|TOYFLAG_BIN)) +USE_SHA224SUM(OLDTOY(sha224sum, md5sum, TOYFLAG_USR|TOYFLAG_BIN)) +USE_SHA256SUM(OLDTOY(sha256sum, md5sum, TOYFLAG_USR|TOYFLAG_BIN)) +USE_SHA384SUM(OLDTOY(sha384sum, md5sum, TOYFLAG_USR|TOYFLAG_BIN)) +USE_SHA512SUM(OLDTOY(sha512sum, md5sum, TOYFLAG_USR|TOYFLAG_BIN)) +USE_SKELETON_ALIAS(NEWTOY(skeleton_alias, "b#dq", TOYFLAG_USR|TOYFLAG_BIN)) +USE_SORT(NEWTOY(sort, USE_SORT_FLOAT("g")"S:T:m" "o:k*t:" "xVbMCcszdfirun", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_ARGFAIL(2))) +USE_STRACE(NEWTOY(strace, "^p#s#v", TOYFLAG_USR|TOYFLAG_SBIN)) +USE_STRINGS(NEWTOY(strings, "t:an#=4<1fo", TOYFLAG_USR|TOYFLAG_BIN)) +USE_SYSLOGD(NEWTOY(syslogd,">0l#<1>8=8R:b#<0>99=1s#<0=200m#<0>71582787=20O:p:f:a:nSKLD", TOYFLAG_SBIN|TOYFLAG_STAYROOT)) +USE_TAIL(NEWTOY(tail, "?fFs:c(bytes)-n(lines)-[-cn][-fF]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) +USE_TASKSET(NEWTOY(taskset, "<1^pa", TOYFLAG_USR|TOYFLAG_BIN)) +USE_TEE(NEWTOY(tee, "ia", TOYFLAG_USR|TOYFLAG_BIN)) +USE_TELNET(NEWTOY(telnet, "<1>2", TOYFLAG_BIN)) +USE_TELNETD(NEWTOY(telnetd, "w#<0b:p#<0>65535=23f:l:FSKi[!wi]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_SH(OLDTOY(toysh, sh, TOYFLAG_BIN)) +USE_TR(NEWTOY(tr, "^<1>2Ccstd[+cC]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_TRACEROUTE(NEWTOY(traceroute, "<1>2i:f#<1>255=1z#<0>86400=0g*w#<0>86400=5t#<0>255=0s:q#<1>255=3p#<1>65535=33434m#<1>255=30rvndlIUF64", TOYFLAG_STAYROOT|TOYFLAG_USR|TOYFLAG_BIN)) +USE_TRACEROUTE(OLDTOY(traceroute6,traceroute, TOYFLAG_STAYROOT|TOYFLAG_USR|TOYFLAG_BIN)) +USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN|TOYFLAG_NOHELP|TOYFLAG_MAYFORK)) +USE_TRUNCATE(NEWTOY(truncate, "<1s:|c", TOYFLAG_USR|TOYFLAG_BIN)) +USE_TSORT(NEWTOY(tsort, ">1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_TCPSVD(OLDTOY(udpsvd, tcpsvd, TOYFLAG_USR|TOYFLAG_BIN)) +USE_UNAME(NEWTOY(uname, "paomvrns", TOYFLAG_BIN)) +USE_UNICODE(NEWTOY(unicode, "<1", TOYFLAG_USR|TOYFLAG_BIN)) +USE_USERADD(NEWTOY(useradd, "<1>2u#<0G:s:g:h:SDH", TOYFLAG_NEEDROOT|TOYFLAG_UMASK|TOYFLAG_SBIN)) +USE_UUDECODE(NEWTOY(uudecode, ">1o:", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_UMASK)) +USE_UUENCODE(NEWTOY(uuencode, "<1>2m", TOYFLAG_USR|TOYFLAG_BIN)) +USE_WC(NEWTOY(wc, "Lcmwl", TOYFLAG_USR|TOYFLAG_BIN)) +USE_WHICH(NEWTOY(which, "<1a", TOYFLAG_USR|TOYFLAG_BIN)) +USE_WHOAMI(OLDTOY(whoami, logname, TOYFLAG_USR|TOYFLAG_BIN)) +USE_XARGS(NEWTOY(xargs, "^E:P#<0(null)=1optr(no-run-if-empty)n#<1(max-args)s#0[!0E]", TOYFLAG_USR|TOYFLAG_BIN)) +USE_XZCAT(NEWTOY(xzcat, NULL, TOYFLAG_USR|TOYFLAG_BIN)) +USE_ZCAT(NEWTOY(zcat, "cdfkt123456789[-123456789]", TOYFLAG_USR|TOYFLAG_BIN)) diff --git a/scripts/prereq/generated/tags.h b/scripts/prereq/generated/tags.h new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/scripts/prereq/generated/tags.h @@ -0,0 +1 @@ + diff --git a/scripts/probes/cmd2dpkg b/scripts/probes/cmd2dpkg new file mode 100755 index 00000000..6a9c3489 --- /dev/null +++ b/scripts/probes/cmd2dpkg @@ -0,0 +1,26 @@ +#!/bin/bash + +# Show debian packages host versions of each command live in +# (Alas, not as useful as I thought it would be.) + +[ -x toybox ] || { echo "no ./toybox" >&2; exit 1; } + +declare -A ray + +# Sad that this is NOT in the default path, but less dumb than /bin/sh->dash +PATH="$PATH":/sbin:/usr/sbin + +# Only checks installed packages, puts anything it can't find in none: +for i in $(./toybox) +do + tty -s && echo -n . >&2 + which $i >/dev/null || { ray["none:"]+=" $i"; continue; } + + ray[$(dpkg-query -S $(readlink -f $(which $i)) | toybox cut -DF 1)]+=" $i" +done + +# Print results +for i in ${!ray[@]} +do + echo $i ${ray[$i]} +done diff --git a/scripts/recreate-prereq.sh b/scripts/recreate-prereq.sh new file mode 100755 index 00000000..328290ef --- /dev/null +++ b/scripts/recreate-prereq.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Regenerate scripts/prereq (hopefully) portable build. + +# Detect toybox prerequisites using record-commands + +mkroot/record-commands make clean defconfig toybox +sed -i 's/default y/default n/' generated/Config.probed +CMDLIST="$(echo toybox; ./toybox cut -DF 1 log.txt | sort -u)" +{ + for i in $(tr '[:lower:]' '[:upper:]' <<<"$CMDLIST") + do + grep -qi CONFIG_$i'[= ]' .config && echo CONFIG_$i=y + done +} > prereq.mini + +# Create minimal dependency-free build + +make clean allnoconfig KCONFIG_ALLCONFIG=prereq.mini +make toybox +cat > scripts/prereq/build.sh << 'EOF' +#!/bin/sh + +BUILD='cc -funsigned-char -I scripts/prereq -I . -Os -ffunction-sections -fdata-sections -fno-asynchronous-unwind-tables -fno-strict-aliasing -DTOYBOX_VERSION=""' +LINK='' +EOF + +# harvest stripped down headers + +grep -A999 FILES= generated/build.sh >> scripts/prereq/build.sh +echo > scripts/prereq/generated/tags.h +sed 's/.*/#define HELP_& ""/' <<<"$CMDLIST" > scripts/prereq/generated/help.h +egrep "($(xargs <<<"$CMDLIST"|tr ' [:lower:]' '|[:upper:]'))" \ + generated/newtoys.h > scripts/prereq/generated/newtoys.h +FORS="$(sed -n 's/#define FOR_//p' $(grep -o 'toys/[^/]*/[^.]*\.c' scripts/prereq/build.sh) | xargs | tr ' ' '|')" +sed -En '1,/^$/p;/\/\/ ('"$FORS"') /,/^$/p;/#ifdef FOR_('"$FORS"')$/,/^$/p' generated/flags.h > scripts/prereq/generated/flags.h +egrep "OPTSTR_($(egrep -v "($FORS)" <<<"$CMDLIST" | xargs | tr ' ' '|'))" \ + generated/flags.h >> scripts/prereq/generated/flags.h +# TODO: slim down config.h +cp generated/{globals,config}.h scripts/prereq/generated/ diff --git a/toys/other/inotifyd.c b/toys/other/inotifyd.c index 3dc66025..4e886bc5 100644 --- a/toys/other/inotifyd.c +++ b/toys/other/inotifyd.c @@ -5,7 +5,7 @@ * * No Standard. -USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN)) +USE_INOTIFYD(NEWTOY(inotifyd, "<2", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LINEBUF)) config INOTIFYD bool "inotifyd" @@ -55,7 +55,6 @@ void inotifyd_main(void) if (!masks) mask = 0xfff; // default to all else{ - *masks++ = 0; for (*masks++ = 0; *masks; masks++) { i = stridx(masklist, *masks);; if (i == -1) error_exit("bad mask '%c'", *masks); diff --git a/www/faq.html b/www/faq.html index 84cf3107..c39ae274 100644 --- a/www/faq.html +++ b/www/faq.html @@ -826,7 +826,7 @@ should list all the available cross compilers it recognizes under ccc, something like:</p> <blockquote><b><p> -aarch64 armv4l armv5l armv7l armv7m armv7r i486 i686 m68k microblaze mips mips64 mipsel or1k powerpc powerpc64 powerpc64le s390x sh2eb sh4 x32 x86_64 +aarch64 armv4l armv5l armv7l armv7m armv7r i486 i686 m68k microblaze mips mips64 mipsel or1k powerpc powerpc64 powerpc64le riscv32 riscv64 s390x sh2eb sh4 sh4eb x32 x86_64 </p></b></blockquote> <p>(A long time ago I |