code:
#
# Automatically generated make config: don't edit
# Busybox version: 1.27.1
# Wed Sep 27 13:22:17 2017
#
CONFIG_HAVE_DOT_CONFIG=y

#
# Busybox Settings
#
CONFIG_DESKTOP=y
# CONFIG_EXTRA_COMPAT is not set
CONFIG_INCLUDE_SUSv2=y
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
# CONFIG_FEATURE_COMPRESS_USAGE is not set
CONFIG_BUSYBOX=y
# CONFIG_FEATURE_INSTALLER is not set
CONFIG_INSTALL_NO_USR=y
# CONFIG_PAM is not set
CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
# CONFIG_FEATURE_CLEAN_UP is not set
# CONFIG_FEATURE_UTMP is not set
# CONFIG_FEATURE_WTMP is not set
# CONFIG_FEATURE_PIDFILE is not set
CONFIG_PID_FILE_PATH=""
# CONFIG_FEATURE_SUID is not set
# CONFIG_FEATURE_SUID_CONFIG is not set
# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_PREFER_APPLETS is not set
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
# CONFIG_FEATURE_SYSLOG is not set
# CONFIG_FEATURE_HAVE_RPC is not set
CONFIG_PLATFORM_LINUX=y

#
# Build Options
#
# CONFIG_STATIC is not set
# CONFIG_PIE is not set
# CONFIG_NOMMU is not set
# CONFIG_BUILD_LIBBUSYBOX is not set
# CONFIG_FEATURE_INDIVIDUAL is not set
# CONFIG_FEATURE_SHARED_BUSYBOX is not set
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_SYSROOT=""
CONFIG_EXTRA_CFLAGS=""
CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""

#
# Installation Options ("make install" behavior)
#
CONFIG_INSTALL_APPLET_SYMLINKS=y
# CONFIG_INSTALL_APPLET_HARDLINKS is not set
# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
# CONFIG_INSTALL_APPLET_DONT is not set
# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
CONFIG_PREFIX="./_install"

#
# Debugging Options
#
# CONFIG_DEBUG is not set
# CONFIG_DEBUG_PESSIMIZE is not set
# CONFIG_DEBUG_SANITIZE is not set
# CONFIG_UNIT_TEST is not set
# CONFIG_WERROR is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set

#
# Busybox Library Tuning
#
# CONFIG_FEATURE_USE_BSS_TAIL is not set
CONFIG_FEATURE_RTMINMAX=y
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1
CONFIG_FEATURE_FAST_TOP=y
# CONFIG_FEATURE_ETC_NETWORKS is not set
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
CONFIG_FEATURE_EDITING_VI=y
CONFIG_FEATURE_EDITING_HISTORY=999
CONFIG_FEATURE_EDITING_SAVEHISTORY=y
# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
CONFIG_FEATURE_REVERSE_SEARCH=y
CONFIG_FEATURE_TAB_COMPLETION=y
# CONFIG_FEATURE_USERNAME_COMPLETION is not set
CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
# CONFIG_LOCALE_SUPPORT is not set
# CONFIG_UNICODE_SUPPORT is not set
# CONFIG_UNICODE_USING_LOCALE is not set
# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
CONFIG_SUBST_WCHAR=0
CONFIG_LAST_SUPPORTED_WCHAR=0
# CONFIG_UNICODE_COMBINING_WCHARS is not set
# CONFIG_UNICODE_WIDE_WCHARS is not set
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
CONFIG_FEATURE_NON_POSIX_CP=y
# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
CONFIG_FEATURE_USE_SENDFILE=y
CONFIG_FEATURE_COPYBUF_KB=4
CONFIG_FEATURE_SKIP_ROOTFS=y
CONFIG_MONOTONIC_SYSCALL=y
CONFIG_IOCTL_HEX2STR_ERROR=y
# CONFIG_FEATURE_HWIB is not set

#
# Applets
#

#
# Archival Utilities
#
# CONFIG_FEATURE_SEAMLESS_XZ is not set
# CONFIG_FEATURE_SEAMLESS_LZMA is not set
# CONFIG_FEATURE_SEAMLESS_BZ2 is not set
# CONFIG_FEATURE_SEAMLESS_GZ is not set
# CONFIG_FEATURE_SEAMLESS_Z is not set
# CONFIG_AR is not set
# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
# CONFIG_FEATURE_AR_CREATE is not set
# CONFIG_UNCOMPRESS is not set
CONFIG_GUNZIP=y
CONFIG_ZCAT=y
CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
CONFIG_BUNZIP2=y
CONFIG_BZCAT=y
# CONFIG_UNLZMA is not set
# CONFIG_LZCAT is not set
# CONFIG_LZMA is not set
# CONFIG_FEATURE_LZMA_FAST is not set
CONFIG_UNXZ=y
CONFIG_XZCAT=y
CONFIG_XZ=y
CONFIG_BZIP2=y
CONFIG_FEATURE_BZIP2_DECOMPRESS=y
# CONFIG_CPIO is not set
# CONFIG_FEATURE_CPIO_O is not set
# CONFIG_FEATURE_CPIO_P is not set
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
CONFIG_GZIP=y
# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
CONFIG_GZIP_FAST=0
# CONFIG_FEATURE_GZIP_LEVELS is not set
CONFIG_FEATURE_GZIP_DECOMPRESS=y
# CONFIG_LZOP is not set
CONFIG_UNLZOP=y
CONFIG_LZOPCAT=y
# CONFIG_LZOP_COMPR_HIGH is not set
# CONFIG_RPM is not set
# CONFIG_RPM2CPIO is not set
CONFIG_TAR=y
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
CONFIG_FEATURE_TAR_CREATE=y
# CONFIG_FEATURE_TAR_AUTODETECT is not set
CONFIG_FEATURE_TAR_FROM=y
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_TO_COMMAND=y
# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
# CONFIG_FEATURE_TAR_SELINUX is not set
CONFIG_UNZIP=y
CONFIG_FEATURE_UNZIP_CDF=y
CONFIG_FEATURE_UNZIP_BZIP2=y
CONFIG_FEATURE_UNZIP_LZMA=y
CONFIG_FEATURE_UNZIP_XZ=y

#
# Coreutils
#
CONFIG_BASENAME=y
CONFIG_CAT=y
CONFIG_FEATURE_CATV=y
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
CONFIG_CHROOT=y
CONFIG_CKSUM=y
# CONFIG_COMM is not set
CONFIG_CP=y
# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
CONFIG_CUT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
# CONFIG_FEATURE_DATE_NANO is not set
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_FEATURE_DD_STATUS=y
CONFIG_DF=y
# CONFIG_FEATURE_DF_FANCY is not set
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
# CONFIG_EXPAND is not set
# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
# CONFIG_UNEXPAND is not set
# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FACTOR=y
CONFIG_FALSE=y
CONFIG_FOLD=y
# CONFIG_FSYNC is not set
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_HOSTID=y
CONFIG_ID=y
# CONFIG_GROUPS is not set
CONFIG_INSTALL=y
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
CONFIG_LINK=y
CONFIG_LN=y
CONFIG_LOGNAME=y
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_WIDTH=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
CONFIG_MD5SUM=y
CONFIG_SHA1SUM=y
CONFIG_SHA256SUM=y
CONFIG_SHA512SUM=y
CONFIG_SHA3SUM=y

#
# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
#
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
CONFIG_MKDIR=y
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
CONFIG_MKFIFO=y
CONFIG_MKNOD=y
CONFIG_MKTEMP=y
CONFIG_MV=y
CONFIG_FEATURE_MV_LONG_OPTIONS=y
CONFIG_NICE=y
CONFIG_NL=y
CONFIG_NOHUP=y
CONFIG_NPROC=y
CONFIG_OD=y
CONFIG_PASTE=y
CONFIG_PRINTENV=y
CONFIG_PRINTF=y
CONFIG_PWD=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_REALPATH=y
CONFIG_RM=y
CONFIG_RMDIR=y
# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
CONFIG_SEQ=y
CONFIG_SHRED=y
# CONFIG_SHUF is not set
CONFIG_SLEEP=y
CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_FEATURE_FLOAT_SLEEP=y
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
# CONFIG_SPLIT is not set
# CONFIG_FEATURE_SPLIT_FANCY is not set
# CONFIG_STAT is not set
# CONFIG_FEATURE_STAT_FORMAT is not set
# CONFIG_FEATURE_STAT_FILESYSTEM is not set
CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
# CONFIG_FEATURE_SYNC_FANCY is not set
# CONFIG_TAC is not set
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TEST=y
CONFIG_TEST1=y
CONFIG_TEST2=y
CONFIG_FEATURE_TEST_64=y
# CONFIG_TIMEOUT is not set
CONFIG_TOUCH=y
# CONFIG_FEATURE_TOUCH_NODEREF is not set
CONFIG_FEATURE_TOUCH_SUSV3=y
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
CONFIG_FEATURE_TR_EQUIV=y
CONFIG_TRUE=y
CONFIG_TRUNCATE=y
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNAME_OSNAME="GNU/Linux"
CONFIG_UNIQ=y
CONFIG_UNLINK=y
CONFIG_USLEEP=y
CONFIG_UUDECODE=y
# CONFIG_BASE64 is not set
CONFIG_UUENCODE=y
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
# CONFIG_WHO is not set
# CONFIG_W is not set
# CONFIG_USERS is not set
CONFIG_WHOAMI=y
CONFIG_YES=y

#
# Common options
#
CONFIG_FEATURE_VERBOSE=y

#
# Common options for cp and mv
#
CONFIG_FEATURE_PRESERVE_HARDLINKS=y

#
# Common options for df, du, ls
#
CONFIG_FEATURE_HUMAN_READABLE=y

#
# Console Utilities
#
# CONFIG_CHVT is not set
# CONFIG_CLEAR is not set
# CONFIG_DEALLOCVT is not set
# CONFIG_DUMPKMAP is not set
# CONFIG_FGCONSOLE is not set
# CONFIG_KBD_MODE is not set
# CONFIG_LOADFONT is not set
# CONFIG_SETFONT is not set
# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
CONFIG_DEFAULT_SETFONT_DIR=""
# CONFIG_FEATURE_LOADFONT_PSF2 is not set
# CONFIG_FEATURE_LOADFONT_RAW is not set
# CONFIG_LOADKMAP is not set
# CONFIG_OPENVT is not set
# CONFIG_RESET is not set
# CONFIG_RESIZE is not set
# CONFIG_FEATURE_RESIZE_PRINT is not set
# CONFIG_SETCONSOLE is not set
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
# CONFIG_SETKEYCODES is not set
# CONFIG_SETLOGCONS is not set
# CONFIG_SHOWKEY is not set

#
# Debian Utilities
#
CONFIG_PIPE_PROGRESS=y
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_WHICH=y

#
# Editors
#
CONFIG_AWK=y
# CONFIG_FEATURE_AWK_LIBM is not set
CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
CONFIG_CMP=y
CONFIG_DIFF=y
# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
CONFIG_FEATURE_DIFF_DIR=y
# CONFIG_ED is not set
CONFIG_PATCH=y
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_MAX_LEN=4096
CONFIG_FEATURE_VI_8BIT=y
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_ASK_TERMINAL=y
CONFIG_FEATURE_VI_UNDO=y
CONFIG_FEATURE_VI_UNDO_QUEUE=y
CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
CONFIG_FEATURE_ALLOW_EXEC=y

#
# Finding Utilities
#
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_MAXDEPTH=y
CONFIG_FEATURE_FIND_NEWER=y
# CONFIG_FEATURE_FIND_INUM is not set
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_EXEC_PLUS=y
CONFIG_FEATURE_FIND_USER=y
CONFIG_FEATURE_FIND_GROUP=y
CONFIG_FEATURE_FIND_NOT=y
CONFIG_FEATURE_FIND_DEPTH=y
CONFIG_FEATURE_FIND_PAREN=y
CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
# CONFIG_FEATURE_FIND_DELETE is not set
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
# CONFIG_FEATURE_FIND_LINKS is not set
CONFIG_GREP=y
CONFIG_EGREP=y
CONFIG_FGREP=y
CONFIG_FEATURE_GREP_CONTEXT=y
CONFIG_XARGS=y
# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y

#
# Init Utilities
#
# CONFIG_BOOTCHARTD is not set
# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
# CONFIG_HALT is not set
# CONFIG_POWEROFF is not set
# CONFIG_REBOOT is not set
# CONFIG_FEATURE_CALL_TELINIT is not set
CONFIG_TELINIT_PATH=""
# CONFIG_INIT is not set
# CONFIG_LINUXRC is not set
# CONFIG_FEATURE_USE_INITTAB is not set
# CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=0
# CONFIG_FEATURE_INIT_SCTTY is not set
# CONFIG_FEATURE_INIT_SYSLOG is not set
# CONFIG_FEATURE_INIT_QUIET is not set
# CONFIG_FEATURE_INIT_COREDUMPS is not set
CONFIG_INIT_TERMINAL_TYPE=""
# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set

#
# Login/Password Management Utilities
#
# CONFIG_FEATURE_SHADOWPASSWDS is not set
CONFIG_USE_BB_PWD_GRP=y
# CONFIG_USE_BB_SHADOW is not set
# CONFIG_USE_BB_CRYPT is not set
# CONFIG_USE_BB_CRYPT_SHA is not set
# CONFIG_ADD_SHELL is not set
# CONFIG_REMOVE_SHELL is not set
# CONFIG_ADDGROUP is not set
# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_ADDUSER is not set
# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_LAST_ID=0
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
# CONFIG_CHPASSWD is not set
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
# CONFIG_CRYPTPW is not set
# CONFIG_MKPASSWD is not set
# CONFIG_DELUSER is not set
# CONFIG_DELGROUP is not set
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
# CONFIG_GETTY is not set
# CONFIG_LOGIN is not set
# CONFIG_LOGIN_SESSION_AS_CHILD is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_NOLOGIN is not set
# CONFIG_FEATURE_SECURETTY is not set
# CONFIG_PASSWD is not set
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
# CONFIG_SU is not set
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
# CONFIG_SULOGIN is not set
# CONFIG_VLOCK is not set

#
# Linux Ext2 FS Progs
#
# CONFIG_CHATTR is not set
# CONFIG_FSCK is not set
# CONFIG_LSATTR is not set
# CONFIG_TUNE2FS is not set

#
# Linux Module Utilities
#
# CONFIG_MODPROBE_SMALL is not set
# CONFIG_DEPMOD is not set
# CONFIG_INSMOD is not set
# CONFIG_LSMOD is not set
# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
# CONFIG_MODINFO is not set
# CONFIG_MODPROBE is not set
# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
# CONFIG_RMMOD is not set

#
# Options common to multiple modutils
#
# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set
# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
# CONFIG_FEATURE_2_4_MODULES is not set
# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
# CONFIG_FEATURE_MODUTILS_ALIAS is not set
# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
CONFIG_DEFAULT_MODULES_DIR=""
CONFIG_DEFAULT_DEPMOD_FILE=""

#
# Linux System Utilities
#
# CONFIG_ACPID is not set
# CONFIG_FEATURE_ACPID_COMPAT is not set
# CONFIG_BLKDISCARD is not set
# CONFIG_BLKID is not set
# CONFIG_FEATURE_BLKID_TYPE is not set
# CONFIG_BLOCKDEV is not set
# CONFIG_CAL is not set
# CONFIG_CHRT is not set
# CONFIG_DMESG is not set
# CONFIG_FEATURE_DMESG_PRETTY is not set
# CONFIG_EJECT is not set
# CONFIG_FEATURE_EJECT_SCSI is not set
# CONFIG_FALLOCATE is not set
# CONFIG_FATATTR is not set
# CONFIG_FBSET is not set
# CONFIG_FEATURE_FBSET_FANCY is not set
# CONFIG_FEATURE_FBSET_READMODE is not set
# CONFIG_FDFORMAT is not set
# CONFIG_FDISK is not set
# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
# CONFIG_FEATURE_FDISK_WRITABLE is not set
# CONFIG_FEATURE_AIX_LABEL is not set
# CONFIG_FEATURE_SGI_LABEL is not set
# CONFIG_FEATURE_SUN_LABEL is not set
# CONFIG_FEATURE_OSF_LABEL is not set
# CONFIG_FEATURE_GPT_LABEL is not set
# CONFIG_FEATURE_FDISK_ADVANCED is not set
# CONFIG_FINDFS is not set
# CONFIG_FLOCK is not set
# CONFIG_FDFLUSH is not set
# CONFIG_FREERAMDISK is not set
# CONFIG_FSCK_MINIX is not set
# CONFIG_FSFREEZE is not set
# CONFIG_FSTRIM is not set
# CONFIG_GETOPT is not set
# CONFIG_FEATURE_GETOPT_LONG is not set
# CONFIG_HEXDUMP is not set
# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
# CONFIG_XXD is not set
# CONFIG_HWCLOCK is not set
# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
# CONFIG_IONICE is not set
# CONFIG_IPCRM is not set
# CONFIG_IPCS is not set
# CONFIG_LAST is not set
# CONFIG_FEATURE_LAST_FANCY is not set
# CONFIG_LOSETUP is not set
# CONFIG_LSPCI is not set
# CONFIG_LSUSB is not set
# CONFIG_MDEV is not set
# CONFIG_FEATURE_MDEV_CONF is not set
# CONFIG_FEATURE_MDEV_RENAME is not set
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
# CONFIG_MESG is not set
# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
# CONFIG_MKE2FS is not set
# CONFIG_MKFS_EXT2 is not set
# CONFIG_MKFS_MINIX is not set
# CONFIG_FEATURE_MINIX2 is not set
# CONFIG_MKFS_REISER is not set
# CONFIG_MKDOSFS is not set
# CONFIG_MKFS_VFAT is not set
# CONFIG_MKSWAP is not set
# CONFIG_FEATURE_MKSWAP_UUID is not set
# CONFIG_MORE is not set
# CONFIG_MOUNT is not set
# CONFIG_FEATURE_MOUNT_FAKE is not set
# CONFIG_FEATURE_MOUNT_VERBOSE is not set
# CONFIG_FEATURE_MOUNT_HELPERS is not set
# CONFIG_FEATURE_MOUNT_LABEL is not set
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
# CONFIG_FEATURE_MOUNT_FLAGS is not set
# CONFIG_FEATURE_MOUNT_FSTAB is not set
# CONFIG_FEATURE_MOUNT_OTHERTAB is not set
# CONFIG_MOUNTPOINT is not set
# CONFIG_NSENTER is not set
# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set
# CONFIG_PIVOT_ROOT is not set
# CONFIG_RDATE is not set
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
# CONFIG_RENICE is not set
# CONFIG_REV is not set
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
# CONFIG_SETARCH is not set
# CONFIG_LINUX32 is not set
# CONFIG_LINUX64 is not set
# CONFIG_SETPRIV is not set
# CONFIG_SETSID is not set
# CONFIG_SWAPON is not set
# CONFIG_FEATURE_SWAPON_DISCARD is not set
# CONFIG_FEATURE_SWAPON_PRI is not set
# CONFIG_SWAPOFF is not set
# CONFIG_SWITCH_ROOT is not set
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
# CONFIG_UEVENT is not set
# CONFIG_UMOUNT is not set
# CONFIG_FEATURE_UMOUNT_ALL is not set
# CONFIG_UNSHARE is not set
# CONFIG_WALL is not set
# CONFIG_FEATURE_MOUNT_LOOP is not set
# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
# CONFIG_FEATURE_MTAB_SUPPORT is not set
# CONFIG_VOLUMEID is not set
# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
# CONFIG_FEATURE_VOLUMEID_EXT is not set
# CONFIG_FEATURE_VOLUMEID_F2FS is not set
# CONFIG_FEATURE_VOLUMEID_FAT is not set
# CONFIG_FEATURE_VOLUMEID_HFS is not set
# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
# CONFIG_FEATURE_VOLUMEID_JFS is not set
# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
# CONFIG_FEATURE_VOLUMEID_LUKS is not set
# CONFIG_FEATURE_VOLUMEID_NILFS is not set
# CONFIG_FEATURE_VOLUMEID_NTFS is not set
# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
# CONFIG_FEATURE_VOLUMEID_SYSV is not set
# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
# CONFIG_FEATURE_VOLUMEID_UDF is not set
# CONFIG_FEATURE_VOLUMEID_XFS is not set

#
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
# CONFIG_BEEP is not set
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
# CONFIG_CHAT is not set
# CONFIG_FEATURE_CHAT_NOFAIL is not set
# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
# CONFIG_CONSPY is not set
# CONFIG_CROND is not set
# CONFIG_FEATURE_CROND_D is not set
# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
CONFIG_FEATURE_CROND_DIR=""
# CONFIG_CRONTAB is not set
# CONFIG_DC is not set
# CONFIG_FEATURE_DC_LIBM is not set
# CONFIG_DEVFSD is not set
# CONFIG_DEVFSD_MODLOAD is not set
# CONFIG_DEVFSD_FG_NP is not set
# CONFIG_DEVFSD_VERBOSE is not set
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_DEVMEM is not set
# CONFIG_FBSPLASH is not set
# CONFIG_FLASH_ERASEALL is not set
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
# CONFIG_FLASHCP is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
# CONFIG_I2CGET is not set
# CONFIG_I2CSET is not set
# CONFIG_I2CDUMP is not set
# CONFIG_I2CDETECT is not set
# CONFIG_INOTIFYD is not set
CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
CONFIG_FEATURE_LESS_TRUNCATE=y
# CONFIG_FEATURE_LESS_MARKS is not set
CONFIG_FEATURE_LESS_REGEXP=y
# CONFIG_FEATURE_LESS_WINCH is not set
# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
# CONFIG_FEATURE_LESS_DASHCMD is not set
# CONFIG_FEATURE_LESS_LINENUMS is not set
# CONFIG_LSSCSI is not set
# CONFIG_MAKEDEVS is not set
# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MAN is not set
# CONFIG_MICROCOM is not set
# CONFIG_MT is not set
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
# CONFIG_PARTPROBE is not set
# CONFIG_RAIDAUTORUN is not set
# CONFIG_READAHEAD is not set
# CONFIG_RFKILL is not set
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
# CONFIG_SETSERIAL is not set
# CONFIG_STRINGS is not set
# CONFIG_TIME is not set
# CONFIG_TTYSIZE is not set
# CONFIG_UBIATTACH is not set
# CONFIG_UBIDETACH is not set
# CONFIG_UBIMKVOL is not set
# CONFIG_UBIRMVOL is not set
# CONFIG_UBIRSVOL is not set
# CONFIG_UBIUPDATEVOL is not set
# CONFIG_UBIRENAME is not set
# CONFIG_VOLNAME is not set
# CONFIG_WATCHDOG is not set

#
# Networking Utilities
#
CONFIG_FEATURE_IPV6=y
# CONFIG_FEATURE_UNIX_LOCAL is not set
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
CONFIG_ARP=y
CONFIG_ARPING=y
# CONFIG_BRCTL is not set
# CONFIG_FEATURE_BRCTL_FANCY is not set
# CONFIG_FEATURE_BRCTL_SHOW is not set
CONFIG_DNSD=y
CONFIG_ETHER_WAKE=y
# CONFIG_FTPD is not set
# CONFIG_FEATURE_FTPD_WRITE is not set
# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set
# CONFIG_FTPGET is not set
# CONFIG_FTPPUT is not set
# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
CONFIG_HOSTNAME=y
CONFIG_DNSDOMAINNAME=y
# CONFIG_HTTPD is not set
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
# CONFIG_FEATURE_HTTPD_CGI is not set
# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_SLIP=y
CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
# CONFIG_IFENSLAVE is not set
# CONFIG_IFPLUGD is not set
# CONFIG_IFUP is not set
# CONFIG_IFDOWN is not set
CONFIG_IFUPDOWN_IFSTATE_PATH=""
# CONFIG_FEATURE_IFUPDOWN_IP is not set
# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
# CONFIG_FEATURE_INETD_RPC is not set
# CONFIG_IP is not set
# CONFIG_IPADDR is not set
# CONFIG_IPLINK is not set
# CONFIG_IPROUTE is not set
# CONFIG_IPTUNNEL is not set
# CONFIG_IPRULE is not set
# CONFIG_IPNEIGH is not set
# CONFIG_FEATURE_IP_ADDRESS is not set
# CONFIG_FEATURE_IP_LINK is not set
# CONFIG_FEATURE_IP_ROUTE is not set
CONFIG_FEATURE_IP_ROUTE_DIR=""
# CONFIG_FEATURE_IP_TUNNEL is not set
# CONFIG_FEATURE_IP_RULE is not set
# CONFIG_FEATURE_IP_NEIGH is not set
# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
# CONFIG_IPCALC is not set
# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
# CONFIG_FEATURE_IPCALC_FANCY is not set
# CONFIG_FAKEIDENTD is not set
# CONFIG_NAMEIF is not set
# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
# CONFIG_NBDCLIENT is not set
# CONFIG_NC is not set
# CONFIG_NC_SERVER is not set
# CONFIG_NC_EXTRA is not set
# CONFIG_NC_110_COMPAT is not set
# CONFIG_NETSTAT is not set
# CONFIG_FEATURE_NETSTAT_WIDE is not set
# CONFIG_FEATURE_NETSTAT_PRG is not set
# CONFIG_NSLOOKUP is not set
# CONFIG_NTPD is not set
# CONFIG_FEATURE_NTPD_SERVER is not set
# CONFIG_FEATURE_NTPD_CONF is not set
CONFIG_PING=y
# CONFIG_PING6 is not set
CONFIG_FEATURE_FANCY_PING=y
# CONFIG_PSCAN is not set
# CONFIG_ROUTE is not set
# CONFIG_SLATTACH is not set
# CONFIG_SSL_CLIENT is not set
# CONFIG_TCPSVD is not set
# CONFIG_UDPSVD is not set
# CONFIG_TELNET is not set
# CONFIG_FEATURE_TELNET_TTYPE is not set
# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
# CONFIG_FEATURE_TELNET_WIDTH is not set
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
# CONFIG_TFTP is not set
# CONFIG_TFTPD is not set
# CONFIG_FEATURE_TFTP_GET is not set
# CONFIG_FEATURE_TFTP_PUT is not set
# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
# CONFIG_TFTP_DEBUG is not set
# CONFIG_TLS is not set
# CONFIG_TRACEROUTE is not set
# CONFIG_TRACEROUTE6 is not set
# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
# CONFIG_TUNCTL is not set
# CONFIG_FEATURE_TUNCTL_UG is not set
# CONFIG_VCONFIG is not set
CONFIG_WGET=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_STATUSBAR=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_TIMEOUT=y
# CONFIG_FEATURE_WGET_HTTPS is not set
# CONFIG_FEATURE_WGET_OPENSSL is not set
# CONFIG_WHOIS is not set
# CONFIG_ZCIP is not set
# CONFIG_UDHCPC6 is not set
# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
# CONFIG_UDHCPD is not set
# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_DUMPLEASES is not set
# CONFIG_DHCPRELAY is not set
# CONFIG_UDHCPC is not set
# CONFIG_FEATURE_UDHCPC_ARPING is not set
# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
# CONFIG_FEATURE_UDHCP_RFC3397 is not set
# CONFIG_FEATURE_UDHCP_8021Q is not set
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""

#
# Print Utilities
#
# CONFIG_LPD is not set
# CONFIG_LPR is not set
# CONFIG_LPQ is not set

#
# Mail Utilities
#
# CONFIG_MAKEMIME is not set
# CONFIG_POPMAILDIR is not set
# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
# CONFIG_REFORMIME is not set
# CONFIG_FEATURE_REFORMIME_COMPAT is not set
# CONFIG_SENDMAIL is not set
CONFIG_FEATURE_MIME_CHARSET=""

#
# Process Utilities
#
# CONFIG_FREE is not set
CONFIG_FUSER=y
# CONFIG_IOSTAT is not set
CONFIG_KILL=y
CONFIG_KILLALL=y
CONFIG_KILLALL5=y
CONFIG_LSOF=y
# CONFIG_MPSTAT is not set
# CONFIG_NMETER is not set
# CONFIG_PGREP is not set
# CONFIG_PKILL is not set
CONFIG_PIDOF=y
CONFIG_FEATURE_PIDOF_SINGLE=y
CONFIG_FEATURE_PIDOF_OMIT=y
# CONFIG_PMAP is not set
# CONFIG_POWERTOP is not set
# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set
CONFIG_PS=y
# CONFIG_FEATURE_PS_WIDE is not set
# CONFIG_FEATURE_PS_LONG is not set
# CONFIG_FEATURE_PS_TIME is not set
# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
# CONFIG_PSTREE is not set
# CONFIG_PWDX is not set
# CONFIG_SMEMCAP is not set
CONFIG_BB_SYSCTL=y
CONFIG_TOP=y
CONFIG_FEATURE_TOP_INTERACTIVE=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
# CONFIG_FEATURE_TOP_SMP_CPU is not set
# CONFIG_FEATURE_TOP_DECIMALS is not set
# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
# CONFIG_FEATURE_TOPMEM is not set
CONFIG_UPTIME=y
# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
CONFIG_WATCH=y
# CONFIG_FEATURE_SHOW_THREADS is not set

#
# Runit Utilities
#
# CONFIG_CHPST is not set
# CONFIG_SETUIDGID is not set
# CONFIG_ENVUIDGID is not set
# CONFIG_ENVDIR is not set
# CONFIG_SOFTLIMIT is not set
# CONFIG_RUNSV is not set
# CONFIG_RUNSVDIR is not set
# CONFIG_FEATURE_RUNSVDIR_LOG is not set
# CONFIG_SV is not set
CONFIG_SV_DEFAULT_SERVICE_DIR=""
# CONFIG_SVC is not set
# CONFIG_SVLOGD is not set
# CONFIG_CHCON is not set
# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
# CONFIG_GETENFORCE is not set
# CONFIG_GETSEBOOL is not set
# CONFIG_LOAD_POLICY is not set
# CONFIG_MATCHPATHCON is not set
# CONFIG_RUNCON is not set
# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
# CONFIG_SELINUXENABLED is not set
# CONFIG_SESTATUS is not set
# CONFIG_SETENFORCE is not set
# CONFIG_SETFILES is not set
# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
# CONFIG_RESTORECON is not set
# CONFIG_SETSEBOOL is not set

#
# Shells
#
CONFIG_SH_IS_ASH=y
# CONFIG_SH_IS_HUSH is not set
# CONFIG_SH_IS_NONE is not set
# CONFIG_BASH_IS_ASH is not set
# CONFIG_BASH_IS_HUSH is not set
CONFIG_BASH_IS_NONE=y
CONFIG_ASH=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_INTERNAL_GLOB=y
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_ASH_EXPAND_PRMT=y
CONFIG_ASH_IDLE_TIMEOUT=y
# CONFIG_ASH_MAIL is not set
CONFIG_ASH_ECHO=y
CONFIG_ASH_PRINTF=y
CONFIG_ASH_TEST=y
CONFIG_ASH_HELP=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
# CONFIG_CTTYHACK is not set
# CONFIG_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_INTERACTIVE is not set
# CONFIG_HUSH_SAVEHISTORY is not set
# CONFIG_HUSH_JOB is not set
# CONFIG_HUSH_TICK is not set
# CONFIG_HUSH_IF is not set
# CONFIG_HUSH_LOOPS is not set
# CONFIG_HUSH_CASE is not set
# CONFIG_HUSH_FUNCTIONS is not set
# CONFIG_HUSH_LOCAL is not set
# CONFIG_HUSH_RANDOM_SUPPORT is not set
# CONFIG_HUSH_MODE_X is not set
# CONFIG_HUSH_ECHO is not set
# CONFIG_HUSH_PRINTF is not set
# CONFIG_HUSH_TEST is not set
# CONFIG_HUSH_HELP is not set
# CONFIG_HUSH_EXPORT is not set
# CONFIG_HUSH_EXPORT_N is not set
# CONFIG_HUSH_KILL is not set
# CONFIG_HUSH_WAIT is not set
# CONFIG_HUSH_TRAP is not set
# CONFIG_HUSH_TYPE is not set
# CONFIG_HUSH_READ is not set
# CONFIG_HUSH_SET is not set
# CONFIG_HUSH_UNSET is not set
# CONFIG_HUSH_ULIMIT is not set
# CONFIG_HUSH_UMASK is not set
# CONFIG_HUSH_MEMLEAK is not set
# CONFIG_MSH is not set

#
# Options common to all shells
#
CONFIG_FEATURE_SH_MATH=y
CONFIG_FEATURE_SH_MATH_64=y
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set
# CONFIG_FEATURE_SH_HISTFILESIZE is not set

#
# System Logging Utilities
#
# CONFIG_KLOGD is not set
# CONFIG_FEATURE_KLOGD_KLOGCTL is not set
# CONFIG_LOGGER is not set
# CONFIG_LOGREAD is not set
# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
# CONFIG_SYSLOGD is not set
# CONFIG_FEATURE_ROTATE_LOGFILE is not set
# CONFIG_FEATURE_REMOTE_LOG is not set
# CONFIG_FEATURE_SYSLOGD_DUP is not set
# CONFIG_FEATURE_SYSLOGD_CFG is not set
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
# CONFIG_FEATURE_KMSG_SYSLOG is not set


code:
CONFIG_SYSVIPC=y
CONFIG_BLK_DEV_INITRD=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_IOSCHED_CFQ is not set
CONFIG_DEFAULT_NOOP=y
# CONFIG_MQ_IOSCHED_DEADLINE is not set
CONFIG_SMP=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="quiet"
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_CFG80211=m
CONFIG_MAC80211=m
CONFIG_RFKILL=m
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_VIRTIO_BLK=m
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_VIRTIO=y
CONFIG_ATA=m
CONFIG_ATA_PIIX=m
CONFIG_MD=y
CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m
CONFIG_NETDEVICES=y
CONFIG_VIRTIO_NET=m
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_AGERE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
# CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_VENDOR_AQUANTIA is not set
# CONFIG_NET_VENDOR_ARC is not set
# CONFIG_NET_VENDOR_ATHEROS is not set
# CONFIG_NET_CADENCE is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_BROCADE is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_CISCO is not set
# CONFIG_NET_VENDOR_DEC is not set
# CONFIG_NET_VENDOR_DLINK is not set
# CONFIG_NET_VENDOR_EMULEX is not set
# CONFIG_NET_VENDOR_EZCHIP is not set
# CONFIG_NET_VENDOR_EXAR is not set
# CONFIG_NET_VENDOR_HP is not set
CONFIG_E1000E=m
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MYRI is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
# CONFIG_NET_VENDOR_NVIDIA is not set
# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_NET_PACKET_ENGINE is not set
# CONFIG_NET_VENDOR_QLOGIC is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
# CONFIG_NET_VENDOR_REALTEK is not set
# CONFIG_NET_VENDOR_RENESAS is not set
# CONFIG_NET_VENDOR_RDC is not set
# CONFIG_NET_VENDOR_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_SILAN is not set
# CONFIG_NET_VENDOR_SIS is not set
# CONFIG_NET_VENDOR_SOLARFLARE is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set
# CONFIG_NET_VENDOR_TEHUTI is not set
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_WLAN_VENDOR_ADMTEK is not set
# CONFIG_WLAN_VENDOR_ATH is not set
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_CISCO is not set
CONFIG_IWLWIFI=m
CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
# CONFIG_WLAN_VENDOR_INTERSIL is not set
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
# CONFIG_WLAN_VENDOR_RALINK is not set
# CONFIG_WLAN_VENDOR_REALTEK is not set
# CONFIG_WLAN_VENDOR_RSI is not set
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=m
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_DRM=y
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG_DEFAULT=1
CONFIG_DRM_I915=m
CONFIG_DRM_VGEM=m
CONFIG_DRM_BOCHS=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_FB_EFI=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_SOUND=y
CONFIG_SND=m
CONFIG_SND_HDA_INTEL=m
CONFIG_SND_HDA_CODEC_REALTEK=m
CONFIG_SND_HDA_CODEC_ANALOG=m
CONFIG_SND_HDA_CODEC_HDMI=m
# CONFIG_SND_USB is not set
# CONFIG_SND_X86 is not set
CONFIG_USB=m
CONFIG_USB_XHCI_HCD=m
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_UHCI_HCD=m
CONFIG_USB_STORAGE=m
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_EXT4_FS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_XTS=m
# CONFIG_VIRTUALIZATION is not set

repo_name: arsv/minibase

license: unknown


code:
BR2_x86_64=y
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_EXTRA_GCC_CONFIG_OPTIONS="--disable-gnu-indirect-function"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_INIT_NONE=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
# BR2_TARGET_ENABLE_ROOT_LOGIN is not set
# BR2_TARGET_GENERIC_GETTY is not set
# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_MINIBASE_PATH)/board/minibase/linux.config"
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_INCONSOLATA=y
BR2_PACKAGE_LIBERATION=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y
BR2_PACKAGE_MESA3D_DRI_DRIVER_I915=y
BR2_PACKAGE_MESA3D_DRI_DRIVER_I965=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_WESTON=y
BR2_PACKAGE_WESTON_DRM=y
BR2_PACKAGE_WESTON_DEMO_CLIENTS=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XAPP_XBACKLIGHT=y
BR2_PACKAGE_XAPP_XDPYINFO=y
BR2_PACKAGE_XAPP_XDRIINFO=y
BR2_PACKAGE_XAPP_XINPUT=y
BR2_PACKAGE_XAPP_XRDB=y
BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
# BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set
BR2_PACKAGE_LIBEV=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS=y
# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set
BR2_PACKAGE_UTIL_LINUX_LIBMOUNT=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_KILO=y
BR2_PACKAGE_XORG_SERVER_WL=y
BR2_PACKAGE_XF86_INPUT_EVDEV=y
BR2_PACKAGE_XF86_INPUT_SYNAPTICS=y
BR2_PACKAGE_XF86_VIDEO_INTEL=y
BR2_PACKAGE_FLUXBOX_PATCHED=y
BR2_PACKAGE_RXVT_UNICODE=y


code: include $(sort $(wildcard $(BR2_EXTERNAL_MINIBASE_PATH)/package/*/*.mk))


code:
$SHELL is user's interactive shell. That code needs /bin/sh.

X relies on /bin/sh in the same way, so this does not add any
dependencies to the whole system.

--- a/src/main.cc
+++ b/src/main.cc
@@ -267,10 +267,7 @@

     if (restarting) {
         if (!restart_argument.empty()) {
-            const char *shell = getenv("SHELL");
-            if (!shell)
-                shell = "/bin/sh";
-
+            const char *shell = "/bin/sh";
             execlp(shell, shell, "-c", restart_argument.c_str(), (const char *) NULL);
             perror(restart_argument.c_str());
         }
--- a/src/FbCommands.cc
+++ b/src/FbCommands.cc
@@ -154,12 +154,8 @@

     FbTk::App::setenv("DISPLAY", display.c_str());

-    // get shell path from the environment
     // this process exits immediately, so we don't have to worry about memleaks
-    const char *shell = getenv("SHELL");
-    if (!shell)
-        shell = "/bin/sh";
-
+    const char *shell = "/bin/sh";
     setsid();
     execl(shell, shell, "-c", m_cmd.c_str(), static_cast<void*>(NULL));
     exit(EXIT_SUCCESS);


code:
No point in spamming these, we're perfectly ok with the defaults.

--- a/src/FbTk/Resource.cc
+++ b/src/FbTk/Resource.cc
@@ -86,9 +86,6 @@
                            resource->altName().c_str(), &value_type, &value))
             resource->setFromString(value.addr);
         else {
-            _FB_USES_NLS;
-            cerr<<_FBTK_CONSOLETEXT(Error, FailedRead, "Failed to read", "Couldn't load a resource (following)")<<": "<<resource->name()<<endl;
-            cerr<<_FBTK_CONSOLETEXT(Error, UsingDefault, "Setting default value", "Falling back to default value for resource")<<endl;
             resource->setDefaultValue();
         }
     }
--- a/src/FbTk/Resource.hh
+++ b/src/FbTk/Resource.hh
@@ -215,8 +215,6 @@
                        r.altName().c_str(), &value_type, &value)) {
         r.setFromString(value.addr);
     } else {
-        std::cerr<<"Failed to read: "<<r.name()<<std::endl;
-        std::cerr<<"Setting default value"<<std::endl;
         r.setDefaultValue();
     }


code:
config BR2_PACKAGE_FLUXBOX_PATCHED
	bool "fluxbox-patched"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_MMU # fork()
	select BR2_PACKAGE_XLIB_LIBX11
	# Runtime dependency, needed by startup script
	select BR2_PACKAGE_XAPP_XMODMAP
	help
	  The Fluxbox lightweight window manager for X
	  (patched to work with minibase)

	  http://fluxbox.org

comment "fluxbox needs a toolchain w/ C++"
	depends on BR2_USE_MMU
	depends on BR2_PACKAGE_XORG7 && !BR2_INSTALL_LIBSTDCPP


code:
################################################################################
#
# fluxbox-patched
#
################################################################################

FLUXBOX_PATCHED_VERSION = 1.3.7
FLUXBOX_PATCHED_SOURCE = fluxbox-$(FLUXBOX_PATCHED_VERSION).tar.xz
FLUXBOX_PATCHED_SITE = http://downloads.sourceforge.net/project/fluxbox/fluxbox/$(FLUXBOX_PATCHED_VERSION)
FLUXBOX_PATCHED_LICENSE = MIT
FLUXBOX_PATCHED_LICENSE_FILES = COPYING

FLUXBOX_PATCHED_CONF_OPTS = \
	--x-includes=$(STAGING_DIR)/usr/include/X11 \
	--x-libraries=$(STAGING_DIR)/usr/lib
FLUXBOX_PATCHED_DEPENDENCIES = xlib_libX11 $(if $(BR2_PACKAGE_LIBICONV),libiconv)

ifeq ($(BR2_PACKAGE_FREETYPE),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-freetype2
FLUXBOX_PATCHED_DEPENDENCIES += freetype
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-freetype2
endif

ifeq ($(BR2_PACKAGE_IMLIB2_X),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-imlib2
FLUXBOX_PATCHED_DEPENDENCIES += imlib2
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-imlib2
endif

ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-fribidi
FLUXBOX_PATCHED_DEPENDENCIES += libfribidi
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-fribidi
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xft
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXft
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xft
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xrender
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXrender
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xrender
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xpm
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXpm
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xpm
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xinerama
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXinerama
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xinerama
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xext
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXext
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xext
endif

ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)
FLUXBOX_PATCHED_CONF_OPTS += --enable-xrandr
FLUXBOX_PATCHED_DEPENDENCIES += xlib_libXrandr
else
FLUXBOX_PATCHED_CONF_OPTS += --disable-xrandr
endif

define FLUXBOX_PATCHED_INSTALL_FBSETBG
	$(INSTALL) -m 0755 -D \
		$(BR2_EXTERNAL_MINIBASE_PATH)/package/fluxbox-patched/fbsetbg \
		$(TARGET_DIR)/usr/bin/fbsetbg
endef

FLUXBOX_PATCHED_POST_INSTALL_TARGET_HOOKS += FLUXBOX_PATCHED_INSTALL_FBSETBG

$(eval $(autotools-package))


code:
config BR2_PACKAGE_KILO
	bool "kilo"
	help
	  Small text editor

	  https://github.com/antirez/kilo


code:
config BR2_PACKAGE_RXVT_UNICODE
	bool "rxvt-unicode"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_USE_MMU # fork()
	help
	  Terminal emulator with unicode support.

	  http://software.schmorp.de/pkg/rxvt-unicode.html


code:
################################################################################
#
# rxvt-unicode
#
################################################################################

RXVT_UNICODE_VERSION = 9.22
RXVT_UNICODE_SOURCE = rxvt-unicode-$(RXVT_UNICODE_VERSION).tar.bz2
RXVT_UNICODE_SITE = http://dist.schmorp.de/rxvt-unicode
RXVT_UNICODE_DEPENDENCIES =
RXVT_UNICODE_LICENSE = GPL
RXVT_UNICODE_LICENSE_FILES = COPYING
RXVT_UNICODE_CONF_OPTS = \
	--enable-256-color \
	--enable-xft \
	--disable-xim \
	--disable-unicode3 \
	--disable-fallback \
	--disable-utmp \
	--disable-wtmp \
	--disable-lastlog \
	--disable-pixbuf \
	--disable-startup-notification \
	--disable-transparency \
	--disable-fading \
	--disable-rxvt-scroll \
	--disable-next-scroll \
	--disable-xterm-scroll \
	--disable-backspace-key \
	--disable-delete-key \
	--disable-swapscreen \
	--disable-iso14755 \
	--enable-text-blink \
	--disable-perl

ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y)
RXVT_UNICODE_DEPENDENCIES += xlib_libXft
RXVT_UNICODE_CONF_OPTS += --enable-xft
else
RXVT_UNICODE_CONF_OPTS += --disable-xft
endif

$(eval $(autotools-package))


code:
From 1ad5e1593556f767150c2ca75176453bee4771e6 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sun, 23 Oct 2016 22:00:10 +0200
Subject: [PATCH] build: get rid of sdkdir

Use of sdkdir causes problems during cross-compilation, where the full
path is then appended to the DESTDIR, leading to host paths being
appended in the target:
    https://bugs.busybox.net/show_bug.cgi?id=8696

Other drivers (e.g. keyboard) got rid of sdkdir. Do the same.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 Makefile.am         |  4 ----
 configure.ac        |  9 ---------
 include/Makefile.am |  5 ++++-
 xorg-evdev.pc.in    | 10 ++++++++--
 4 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 1cc3ea6..1ae042a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,10 +18,6 @@
 #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
-# Provide an sdk location that is writable by the evdev module
-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg'
-
 SUBDIRS = src man include
 MAINTAINERCLEANFILES = ChangeLog INSTALL

diff --git a/configure.ac b/configure.ac
index e4887a3..4adfa43 100644
--- a/configure.ac
+++ b/configure.ac
@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-conf-dir,
             [xorgconfdir="$prefix/share/X11/xorg.conf.d"])
 AC_SUBST(xorgconfdir)

-# X Server SDK location is required to install evdev header files
-# This location is also relayed in the xorg-evdev.pc file
-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
-
-# Workaround overriding sdkdir to be able to create a tarball when user has no
-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am
-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"])
-AC_SUBST([sdkdir])
-
 DRIVER_NAME=evdev
 AC_SUBST([DRIVER_NAME])

diff --git a/include/Makefile.am b/include/Makefile.am
index 0e3fc1b..afc96ed 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1 +1,4 @@
-sdk_HEADERS = evdev-properties.h
+# location formerly known as 'sdkdir':
+xorgincludedir = $(includedir)/xorg
+
+xorginclude_HEADERS = evdev-properties.h
diff --git a/xorg-evdev.pc.in b/xorg-evdev.pc.in
index 20710a6..fcbf511 100644
--- a/xorg-evdev.pc.in
+++ b/xorg-evdev.pc.in
@@ -1,6 +1,12 @@
-sdkdir=@sdkdir@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+datarootdir=@datarootdir@
+moduledir=@moduledir@
+sysconfigdir=@sysconfigdir@

 Name: xorg-evdev
 Description: X.Org evdev input driver.
 Version: @PACKAGE_VERSION@
-Cflags: -I${sdkdir}
+Cflags: -I${includedir}/xorg
--
2.7.4


code:
config BR2_PACKAGE_XF86_INPUT_EVDEV
	bool "xf86-input-evdev"
	depends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency
	depends on BR2_PACKAGE_XORG_SERVER_WL
	select BR2_PACKAGE_LIBEVDEV
	select BR2_PACKAGE_MTDEV
	select BR2_PACKAGE_XPROTO_INPUTPROTO
	select BR2_PACKAGE_XPROTO_RANDRPROTO
	select BR2_PACKAGE_XPROTO_XPROTO
	help
	  Generic Linux input driver

comment "xf86-input-evdev requires udev to be enabled"
	depends on !BR2_PACKAGE_HAS_UDEV


code:
# From https://lists.x.org/archives/xorg-announce/2017-January/002767.html
sha256 9edaa6205baf6d2922cc4db3d8e54a7e7773b5f733b0ae90f6be7725f983b70d  xf86-input-evdev-2.10.5.tar.bz2


code:
################################################################################
#
# xf86-input-evdev
#
################################################################################

XF86_INPUT_EVDEV_VERSION = 2.10.5
XF86_INPUT_EVDEV_SOURCE = xf86-input-evdev-$(XF86_INPUT_EVDEV_VERSION).tar.bz2
XF86_INPUT_EVDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver
XF86_INPUT_EVDEV_LICENSE = MIT
XF86_INPUT_EVDEV_LICENSE_FILES = COPYING
XF86_INPUT_EVDEV_AUTORECONF = YES

XF86_INPUT_EVDEV_DEPENDENCIES = \
	host-pkgconf \
	libevdev \
	mtdev \
	xproto_inputproto \
	xorg-server-wl \
	xproto_randrproto \
	xproto_xproto \
	udev

$(eval $(autotools-package))


code:
From 1b2cf6e6c2640e08166af36eee775542a45325af Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sun, 23 Oct 2016 22:36:40 +0200
Subject: [PATCH] build: get rid of sdkdir

Use of sdkdir causes problems during cross-compilation, where the full
path is then appended to the DESTDIR, leading to host paths being
appended in the target:
    https://bugs.busybox.net/show_bug.cgi?id=8696

Other drivers (e.g. keyboard) got rid of sdkdir. Do the same.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 Makefile.am         | 2 --
 configure.ac        | 8 --------
 include/Makefile.am | 4 +++-
 xorg-libinput.pc.in | 5 +++--
 4 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index a447d61..7aa5523 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,8 +19,6 @@
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg'
-
 SUBDIRS = src include man test
 MAINTAINERCLEANFILES = ChangeLog INSTALL

diff --git a/configure.ac b/configure.ac
index 9894817..fe198cb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -63,14 +63,6 @@ AC_ARG_WITH(xorg-conf-dir,
             [xorgconfdir='${prefix}/share/X11/xorg.conf.d'])
 AC_SUBST(xorgconfdir)

-# X Server SDK location is required to install header files
-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
-
-# Workaround overriding sdkdir to be able to create a tarball when user has no
-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am
-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"])
-AC_SUBST([sdkdir])
-
 DRIVER_NAME=libinput
 AC_SUBST([DRIVER_NAME])

diff --git a/include/Makefile.am b/include/Makefile.am
index 0d52b9b..271ffac 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1 +1,3 @@
-sdk_HEADERS = libinput-properties.h
+# Location formerly known as 'sdkdir'
+xorgincludedir = $(includedir)/xorg
+xorginclude_HEADERS = libinput-properties.h
diff --git a/xorg-libinput.pc.in b/xorg-libinput.pc.in
index ff98189..9c0f506 100644
--- a/xorg-libinput.pc.in
+++ b/xorg-libinput.pc.in
@@ -1,6 +1,7 @@
-sdkdir=@sdkdir@
+prefix=@prefix@
+includedir=@includedir@

 Name: xorg-libinput
 Description: X.Org libinput input driver.
 Version: @PACKAGE_VERSION@
-Cflags: -I${sdkdir}
+Cflags: -I${includedir}/xorg
--
2.7.4


code:
config BR2_PACKAGE_XF86_INPUT_LIBINPUT
	bool "xf86-input-libinput"
	depends on BR2_ENABLE_LOCALE # libinput
	depends on BR2_PACKAGE_HAS_UDEV # libinput
	depends on BR2_PACKAGE_XORG_SERVER_WL
	select BR2_PACKAGE_LIBINPUT
	select BR2_PACKAGE_XPROTO_INPUTPROTO
	select BR2_PACKAGE_XPROTO_XPROTO
	help
	  This is an X driver based on libinput. It is a thin wrapper around
	  libinput, so while it does provide all features that libinput supports
	  it does little beyond.

comment "xf86-input-libinput needs udev /dev management and a toolchain w/ locale"
	depends on !BR2_PACKAGE_HAS_UDEV || !BR2_ENABLE_LOCALE


code:
################################################################################
#
# xf86-input-libinput
#
################################################################################

XF86_INPUT_LIBINPUT_VERSION = 0.25.1
XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XF86_INPUT_LIBINPUT_VERSION).tar.bz2
XF86_INPUT_LIBINPUT_SITE = http://xorg.freedesktop.org/releases/individual/driver
XF86_INPUT_LIBINPUT_LICENSE = MIT
XF86_INPUT_LIBINPUT_LICENSE_FILES = COPYING
XF86_INPUT_LIBINPUT_DEPENDENCIES = libinput xorg-server-wl xproto_inputproto xproto_xproto
XF86_INPUT_LIBINPUT_AUTORECONF = YES

$(eval $(autotools-package))


code:
From 231a35e99fee8aba23f18cce21dfb5fa8bef0c36 Mon Sep 17 00:00:00 2001
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
Date: Sun, 23 Oct 2016 23:07:33 +0200
Subject: [PATCH] build: get rid of sdkdir

Use of sdkdir causes problems during cross-compilation, where the full
path is then appended to the DESTDIR, leading to host paths being
appended in the target:
    https://bugs.busybox.net/show_bug.cgi?id=8696

Other drivers (e.g. keyboard) got rid of sdkdir. Do the same.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 Makefile.am          | 1 -
 configure.ac         | 9 ---------
 include/Makefile.am  | 4 +++-
 xorg-synaptics.pc.in | 5 +++--
 4 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 678124c..c48c5c8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,7 +21,6 @@
 # During distcheck, system locations (as provided by pkg-config) may
 # not be writable; provide instead relative locations.
 DISTCHECK_CONFIGURE_FLAGS = \
-	--with-sdkdir='$${includedir}/xorg' \
 	--with-xorg-conf-dir='$${datadir}/X11/xorg.conf.d'

 SUBDIRS = include src man tools conf
diff --git a/configure.ac b/configure.ac
index 970dd5f..574353b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,11 +55,6 @@ XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
 # Obtain compiler/linker options for the Synaptics driver dependencies
 PKG_CHECK_MODULES(XORG, [inputproto >= 2.1.99.3] [xorg-server >= 1.12] xproto inputproto $REQUIRED_MODULES)

-# X Server SDK location is required to install Synaptics header files
-# This location is also relayed in the xorg-synaptics.pc file
-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
-AC_SUBST([sdkdir])
-
 # -----------------------------------------------------------------------------
 #			Configuration options
 # -----------------------------------------------------------------------------
@@ -154,10 +149,6 @@ if test "x$have_libxtst" = "xyes" ; then
 fi
 # -----------------------------------------------------------------------------

-# Workaround overriding sdkdir to be able to create a tarball when user has no
-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am
-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"])
-
 AC_CONFIG_FILES([Makefile
                 src/Makefile
                 man/Makefile
diff --git a/include/Makefile.am b/include/Makefile.am
index 8234020..565868b 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -18,4 +18,6 @@
 #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-sdk_HEADERS = synaptics-properties.h
+# Location formerly known as 'sdkdir'
+xorgincludedir = $(includedir)/xorg
+xorginclude_HEADERS = synaptics-properties.h
diff --git a/xorg-synaptics.pc.in b/xorg-synaptics.pc.in
index 159cfbf..68e0fbe 100644
--- a/xorg-synaptics.pc.in
+++ b/xorg-synaptics.pc.in
@@ -1,6 +1,7 @@
-sdkdir=@sdkdir@
+prefix=@prefix@
+includedir=@includedir@

 Name: synaptics
 Description: X.Org synaptics input driver.
 Version: @PACKAGE_VERSION@
-Cflags: -I${sdkdir}
+Cflags: -I${includedir}/xorg
--
2.7.4


code:
config BR2_PACKAGE_XF86_INPUT_SYNAPTICS
	bool "xf86-input-synaptics"
	select BR2_PACKAGE_LIBEVDEV
	select BR2_PACKAGE_XPROTO_INPUTPROTO
	select BR2_PACKAGE_XPROTO_RANDRPROTO
	select BR2_PACKAGE_XPROTO_XPROTO
	select BR2_PACKAGE_MTDEV
	help
	  X.Org driver for synaptics input devices


code:
################################################################################
#
# xf86-input-synaptics
#
################################################################################

XF86_INPUT_SYNAPTICS_VERSION = 1.9.0
XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XF86_INPUT_SYNAPTICS_VERSION).tar.bz2
XF86_INPUT_SYNAPTICS_SITE = http://xorg.freedesktop.org/releases/individual/driver
XF86_INPUT_SYNAPTICS_LICENSE = MIT
XF86_INPUT_SYNAPTICS_LICENSE_FILES = COPYING
XF86_INPUT_SYNAPTICS_DEPENDENCIES = libevdev xproto_inputproto xproto_randrproto xproto_xproto mtdev
XF86_INPUT_SYNAPTICS_AUTORECONF = YES

$(eval $(autotools-package))


code:
config BR2_PACKAGE_XF86_VIDEO_INTEL
	bool "xf86-video-intel"
	depends on (BR2_i386 || BR2_x86_64)
	depends on BR2_PACKAGE_XORG_SERVER_WL
	select BR2_PACKAGE_XPROTO_FONTSPROTO
	select BR2_PACKAGE_XPROTO_XPROTO
	select BR2_PACKAGE_LIBPCIACCESS
	select BR2_PACKAGE_LIBDRM
	select BR2_PACKAGE_LIBDRM_INTEL
	select BR2_PACKAGE_XLIB_LIBXRANDR
	help
	  Intel video driver


code:
################################################################################
#
# xf86-video-intel
#
################################################################################

XF86_VIDEO_INTEL_VERSION = b57abe20e81f4b8e4dd203b6a9eda7ff441bc8ce
XF86_VIDEO_INTEL_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-intel
XF86_VIDEO_INTEL_LICENSE = MIT
XF86_VIDEO_INTEL_LICENSE_FILES = COPYING
XF86_VIDEO_INTEL_AUTORECONF = YES

# -D_GNU_SOURCE fixes a getline-related compile error in src/sna/kgem.c
# We force -O2 regardless of the optimization level chosen by the user,
# as compiling this package is known to be broken with -Os.
XF86_VIDEO_INTEL_CONF_ENV = \
	CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -O2"

XF86_VIDEO_INTEL_CONF_OPTS = \
	--disable-xvmc \
	--enable-sna \
	--disable-xaa \
	--disable-dga \
	--disable-async-swap

XF86_VIDEO_INTEL_DEPENDENCIES = \
	libdrm \
	libpciaccess \
	xlib_libXrandr \
	xproto_fontsproto \
	xproto_xproto \
	xorg-server-wl

# X.org server support for DRI depends on a Mesa3D DRI driver
ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y)
XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri --enable-dri1
# quote from configure.ac: "UXA doesn't build without DRI2 headers"
ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y)
XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri2 --enable-uxa
else
XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri2 --disable-uxa
endif
ifeq ($(BR2_PACKAGE_XPROTO_DRI3PROTO),y)
XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri3
else
XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri3
endif
else
XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri
endif

$(eval $(autotools-package))


code:
From d201e5f2cc755dc29215843f79873e95b5135940 Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Sat, 20 Jan 2018 23:03:01 +0200
Subject: [PATCH xserver 1/8] modesettings needs dri2

Kernel modesettings support also depends on dri2, see
http://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting/Makefile.am#n46

Patch sent upstream: https://bugs.freedesktop.org/show_bug.cgi?id=91584

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 2bfafb140..88d687d56 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2064,7 +2064,7 @@ if test "x$XORG" = xyes; then
 	        XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS"
 	fi

-	if test "x$DRM" = xyes; then
+	if test "x$DRM" = xyes -a "x$DRI2" = xyes; then
 		dnl 2.4.46 is required for cursor hotspot support.
 		PKG_CHECK_EXISTS(libdrm >= 2.4.46, XORG_DRIVER_MODESETTING=yes, XORG_DRIVER_MODESETTING=no)
 	fi
--
2.16.1


code:
From f9b34a13becc090b5db8584973b7e2860497843c Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Sat, 20 Jan 2018 23:07:09 +0200
Subject: [PATCH xserver 2/8] configure.ac: Fix check for CLOCK_MONOTONIC

Discover monotonic clock using compile-time check

monotonic clock check does not work when cross-compiling.

Upstream-Status: Denied [Does not work on OpenBSD]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>

Original patch follows:

When xorg-xserver is being cross-compiled, there is currently no way
for us to detect whether the monotonic clock is available on the
target system, because we aren't able to run a test program on the host
system. Currently, in this situation, we default to not use the
monotonic clock. One problem with this situation is that the user will
be treated as idle when the date is updated.

To fix this situation, we now use a compile-time check to detect whether the
monotonic clock is available. This check can run just fine when we are
cross-compiling.

Signed-off-by: David James <davidjames at google.com>

Downloaded from
https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 configure.ac | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
index 88d687d56..76c8baa6f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1052,19 +1052,16 @@ if ! test "x$have_clock_gettime" = xno; then
         CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
     fi

-    AC_RUN_IFELSE([AC_LANG_SOURCE([
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 #include <time.h>
-
-int main(int argc, char *argv[[]]) {
-    struct timespec tp;
-
-    if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+#include <unistd.h>
+int main() {
+#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC))
+        #error No monotonic clock
+#endif
         return 0;
-    else
-        return 1;
 }
-    ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no],
-       [MONOTONIC_CLOCK="cross compiling"])
+]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no])

     LIBS="$LIBS_SAVE"
     CPPFLAGS="$CPPFLAGS_SAVE"
--
2.16.1


code:
From b1ddc629389c584c471e8dd4a5272ecafee45d3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Myl=C3=A8ne=20Josserand?=
 <mylene.josserand@free-electrons.com>
Date: Sat, 20 Jan 2018 23:08:42 +0200
Subject: [PATCH xserver 3/8] Remove check for useSIGIO option
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Original patch follows:
Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO
option.

As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO
and OsReleaseSIGIO.

No longer the check for useSIGIO is needed

Upstream-Status: Pending

Signed-off-by: Prabhu Sundararaj <prabhu.sundararaj@nxp.com>

Downloaded from
https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch

Signed-off-by: Mylène Josserand <mylene.josserand@free-electrons.com>
---
 hw/xfree86/os-support/shared/sigio.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
index 884a71c61..be7649841 100644
--- a/hw/xfree86/os-support/shared/sigio.c
+++ b/hw/xfree86/os-support/shared/sigio.c
@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure)
     int i;
     int installed = FALSE;

-    if (!xf86Info.useSIGIO)
-        return 0;
-
     for (i = 0; i < MAX_FUNCS; i++) {
         if (!xf86SigIOFuncs[i].f) {
             if (xf86IsPipe(fd))
@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd)
     int max;
     int ret;

-    if (!xf86Info.useSIGIO)
-        return 0;
-
     max = 0;
     ret = 0;
     for (i = 0; i < MAX_FUNCS; i++) {
--
2.16.1


code:
From 4c039db50c68066f7f6298e634e12b4a9cadd6c2 Mon Sep 17 00:00:00 2001
From: Alex Suykov <alex.suykov@gmail.com>
Date: Sat, 20 Jan 2018 23:11:02 +0200
Subject: [PATCH xserver 4/8] config/udev: skip tty inputs

Attempts to probe every single TTY device in /dev clutter the logs.
The code was apparently meant for serial Wacom tables, and makes
little sense in modern Linux systems.

Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
---
 config/udev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/config/udev.c b/config/udev.c
index e198e8609..c450ac39a 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -384,8 +384,6 @@ config_udev_pre_init(void)

     udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "input",
                                                     NULL);
-    /* For Wacom serial devices */
-    udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "tty", NULL);
 #ifdef CONFIG_UDEV_KMS
     /* For output GPU devices */
     udev_monitor_filter_add_match_subsystem_devtype(udev_monitor, "drm", NULL);
@@ -415,7 +413,6 @@ config_udev_init(void)
         return 0;

     udev_enumerate_add_match_subsystem(enumerate, "input");
-    udev_enumerate_add_match_subsystem(enumerate, "tty");
 #ifdef CONFIG_UDEV_KMS
     udev_enumerate_add_match_subsystem(enumerate, "drm");
 #endif
--
2.16.1


code:
From 13adad70608f0936a49f640904698386d5f6580f Mon Sep 17 00:00:00 2001
From: Alex Suykov <alex.suykov@gmail.com>
Date: Sun, 21 Jan 2018 03:38:02 +0200
Subject: [PATCH xserver 5/8] config/udev: split device_added for further work

---
 config/udev.c | 173 ++++++++++++++++++++++++++++++----------------------------
 1 file changed, 91 insertions(+), 82 deletions(-)

diff --git a/config/udev.c b/config/udev.c
index c450ac39a..1a6021262 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -88,57 +88,83 @@ check_seat(struct udev_device *udev_device)
 }

 static void
-device_added(struct udev_device *udev_device)
+device_added_drm(struct udev_device *udev_device,
+                 const char* path, const char* syspath)
 {
-    const char *path, *name = NULL;
-    char *config_info = NULL;
-    const char *syspath;
-    const char *tags_prop;
-    const char *key, *value, *tmp;
-    InputOption *input_options;
-    InputAttributes attrs = { };
-    DeviceIntPtr dev = NULL;
-    struct udev_list_entry *set, *entry;
-    struct udev_device *parent;
-    int rc;
-    dev_t devnum;
+    const char *sysname = udev_device_get_sysname(udev_device);
+    dev_t devnum = udev_device_get_devnum(udev_device);

-    path = udev_device_get_devnode(udev_device);
-
-    syspath = udev_device_get_syspath(udev_device);
-
-    if (!path || !syspath)
+    if (strncmp(sysname, "card", 4) != 0)
         return;

-    if (!check_seat(udev_device))
+    /* Check for devices already added through xf86platformProbe() */
+    if (xf86_find_platform_device_by_devnum(major(devnum), minor(devnum)))
         return;

-    devnum = udev_device_get_devnum(udev_device);
+    LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path);

-#ifdef CONFIG_UDEV_KMS
-    if (!strcmp(udev_device_get_subsystem(udev_device), "drm")) {
-        const char *sysname = udev_device_get_sysname(udev_device);
-
-        if (strncmp(sysname, "card", 4) != 0)
-            return;
+    config_udev_odev_setup_attribs(path, syspath, major(devnum),
+                                   minor(devnum), NewGPUDeviceRequest);
+}

-        /* Check for devices already added through xf86platformProbe() */
-        if (xf86_find_platform_device_by_devnum(major(devnum), minor(devnum)))
-            return;
+static const char*
+query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
+{
+    const char *ppath = udev_device_get_devnode(parent);
+    const char *product = udev_device_get_property_value(parent, "PRODUCT");
+    const char *pnp_id = udev_device_get_sysattr_value(parent, "id");
+    unsigned int vendor, model;
+    const char* name = NULL;

-        LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path);
+    if ((name = udev_device_get_sysattr_value(parent, "name")))
+        LOG_SYSATTR(ppath, "name", name);
+    else if((name = udev_device_get_property_value(parent, "NAME")))
+        LOG_PROPERTY(ppath, "NAME", name);
+    if (name)
+        attrs->product = strdup(name);
+
+    /* construct USB ID in lowercase hex - "0000:ffff" */
+    if (product && sscanf(product, "%*x/%4x/%4x/%*x", &vendor, &model) == 2) {
+        char *usb_id;
+        if (asprintf(&usb_id, "%04x:%04x", vendor, model) == -1)
+            usb_id = NULL;
+        else
+            LOG_PROPERTY(ppath, "PRODUCT", product);
+        attrs->usb_id = usb_id;
+    }

-        config_udev_odev_setup_attribs(path, syspath, major(devnum),
-                                       minor(devnum), NewGPUDeviceRequest);
-        return;
+    while ((parent = udev_device_get_parent(parent))) {
+        if ((pnp_id = udev_device_get_sysattr_value(parent, "id"))) {
+            attrs->pnp_id = strdup(pnp_id);
+            ppath = udev_device_get_devnode(parent);
+            LOG_SYSATTR(ppath, "id", pnp_id);
+            break;
+        }
     }
-#endif
+
+    return name;
+}
+
+static void
+device_added_input(struct udev_device *udev_device,
+                   const char* path, const char* syspath)
+{
+    const char *name = NULL;
+    char *config_info = NULL;
+    const char *tags_prop;
+    const char *key, *value, *tmp;
+    InputOption *input_options;
+    InputAttributes attrs = { };
+    DeviceIntPtr dev = NULL;
+    struct udev_list_entry *set, *entry;
+    int rc;
+
+    struct udev_device *parent = udev_device_get_parent(udev_device);
+    dev_t devnum = udev_device_get_devnum(udev_device);

     value = udev_device_get_property_value(udev_device, "ID_INPUT");
     if (value && !strcmp(value, "0")) {
-        LogMessageVerb(X_INFO, 10,
-                       "config/udev: ignoring device %s without "
-                       "property ID_INPUT set\n", path);
+        LogMessageVerb(X_INFO, 10, "config/udev: ignoring device %s", path);
         return;
     }

@@ -146,47 +172,11 @@ device_added(struct udev_device *udev_device)
     if (!input_options)
         return;

-    parent = udev_device_get_parent(udev_device);
-    if (parent) {
-        const char *ppath = udev_device_get_devnode(parent);
-        const char *product = udev_device_get_property_value(parent, "PRODUCT");
-        const char *pnp_id = udev_device_get_sysattr_value(parent, "id");
-        unsigned int usb_vendor, usb_model;
-
-        name = udev_device_get_sysattr_value(parent, "name");
-        LOG_SYSATTR(ppath, "name", name);
-        if (!name) {
-            name = udev_device_get_property_value(parent, "NAME");
-            LOG_PROPERTY(ppath, "NAME", name);
-        }
-
-        /* construct USB ID in lowercase hex - "0000:ffff" */
-        if (product &&
-            sscanf(product, "%*x/%4x/%4x/%*x", &usb_vendor, &usb_model) == 2) {
-            char *usb_id;
-            if (asprintf(&usb_id, "%04x:%04x", usb_vendor, usb_model)
-                == -1)
-                usb_id = NULL;
-            else
-                LOG_PROPERTY(ppath, "PRODUCT", product);
-            attrs.usb_id = usb_id;
-        }
-
-        while (!pnp_id && (parent = udev_device_get_parent(parent))) {
-            pnp_id = udev_device_get_sysattr_value(parent, "id");
-            if (!pnp_id)
-                continue;
-
-            attrs.pnp_id = strdup(pnp_id);
-            ppath = udev_device_get_devnode(parent);
-            LOG_SYSATTR(ppath, "id", pnp_id);
-        }
-
-    }
+    if (parent)
+        name = query_input_name_ids(parent, &attrs);
     if (!name)
         name = "(unnamed)";
-    else
-        attrs.product = strdup(name);
+
     input_options = input_option_new(input_options, "name", name);
     input_options = input_option_new(input_options, "path", path);
     input_options = input_option_new(input_options, "device", path);
@@ -205,8 +195,7 @@ device_added(struct udev_device *udev_device)
     }

     if (device_is_duplicate(config_info)) {
-        LogMessage(X_WARNING, "config/udev: device %s already added. "
-                   "Ignoring.\n", name);
+        LogMessage(X_WARNING, "config/udev: device %s already added. ", name);
         goto unwind;
     }

@@ -277,11 +266,12 @@ device_added(struct udev_device *udev_device)
     if (ServerIsNotSeat0())
         input_options = input_option_new(input_options, "GrabDevice", "on");

-    LogMessage(X_INFO, "config/udev: Adding input device %s (%s)\n",
-               name, path);
     rc = NewInputDeviceRequest(input_options, &attrs, &dev);
+
     if (rc != Success)
-        goto unwind;
+        LogMessage(X_INFO, "config/udev: cannot add %s (%s)\n", name, path);
+    else
+        LogMessage(X_INFO, "config/udev: adding %s (%s)\n", name, path);

  unwind:
     free(config_info);
@@ -301,8 +291,27 @@ device_added(struct udev_device *udev_device)
         }
         free(attrs.tags);
     }
+}

-    return;
+static void
+device_added(struct udev_device *udev_device)
+{
+    const char* path = udev_device_get_devnode(udev_device);
+    const char* syspath = udev_device_get_syspath(udev_device);
+    const char* subsystem = udev_device_get_subsystem(udev_device);
+
+    if (!subsystem || !path || !syspath)
+        return;
+
+    if (!check_seat(udev_device))
+        return;
+
+#ifdef CONFIG_UDEV_KMS
+    if (!strcmp(subsystem, "drm"))
+        return device_added_drm(udev_device, path, syspath);
+#endif
+    if (!strcmp(subsystem, "input"))
+        return device_added_input(udev_device, path, syspath);
 }

 static void
--
2.16.1


code:
From fefc980d1c009752df03dd018216eb1588d2f9e0 Mon Sep 17 00:00:00 2001
From: Alex Suykov <alex.suykov@gmail.com>
Date: Sun, 21 Jan 2018 04:05:14 +0200
Subject: [PATCH xserver 6/8] config/udev: drop ID_INPUT code

Query event bits directly instead.

XKB/udevd configuration code goes out as well, it is prone to the same
kind of race conditions and the whole idea of using udev to configure
X-specific properties is just dumb.

Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
---
 config/udev.c | 151 ++++++++++++++++++----------------------------------------
 1 file changed, 47 insertions(+), 104 deletions(-)

diff --git a/config/udev.c b/config/udev.c
index 1a6021262..1d4b4687a 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -39,19 +39,6 @@
 #include "globals.h"
 #include "systemd-logind.h"

-#define UDEV_XKB_PROP_KEY "xkb"
-
-#define LOG_PROPERTY(path, prop, val)                                   \
-    LogMessageVerb(X_INFO, 10,                                          \
-                   "config/udev: getting property %s on %s "            \
-                   "returned \"%s\"\n",                                 \
-                   (prop), (path), (val) ? (val) : "(null)")
-#define LOG_SYSATTR(path, attr, val)                                    \
-    LogMessageVerb(X_INFO, 10,                                          \
-                   "config/udev: getting attribute %s on %s "           \
-                   "returned \"%s\"\n",                                 \
-                   (attr), (path), (val) ? (val) : "(null)")
-
 static struct udev_monitor *udev_monitor;

 #ifdef CONFIG_UDEV_KMS
@@ -108,7 +95,8 @@ device_added_drm(struct udev_device *udev_device,
 }

 static const char*
-query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
+query_input_name_ids(struct udev_device* parent, InputAttributes* attrs,
+                     const char* path)
 {
     const char *ppath = udev_device_get_devnode(parent);
     const char *product = udev_device_get_property_value(parent, "PRODUCT");
@@ -116,10 +104,10 @@ query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
     unsigned int vendor, model;
     const char* name = NULL;

-    if ((name = udev_device_get_sysattr_value(parent, "name")))
-        LOG_SYSATTR(ppath, "name", name);
-    else if((name = udev_device_get_property_value(parent, "NAME")))
-        LOG_PROPERTY(ppath, "NAME", name);
+    name = udev_device_get_sysattr_value(parent, "name");
+
+    if (!name)
+        name = udev_device_get_property_value(parent, "NAME");
     if (name)
         attrs->product = strdup(name);

@@ -129,7 +117,8 @@ query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
         if (asprintf(&usb_id, "%04x:%04x", vendor, model) == -1)
             usb_id = NULL;
         else
-            LOG_PROPERTY(ppath, "PRODUCT", product);
+            LogMessage(X_INFO, "config/udev: %s usb-id \"%s\"\n",
+                    path, usb_id);
         attrs->usb_id = usb_id;
     }

@@ -137,7 +126,8 @@ query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
         if ((pnp_id = udev_device_get_sysattr_value(parent, "id"))) {
             attrs->pnp_id = strdup(pnp_id);
             ppath = udev_device_get_devnode(parent);
-            LOG_SYSATTR(ppath, "id", pnp_id);
+            LogMessage(X_INFO, "config/udev: %s pnp-id \"%s\" via %s\n",
+                    path, pnp_id, ppath);
             break;
         }
     }
@@ -145,26 +135,50 @@ query_input_name_ids(struct udev_device* parent, InputAttributes* attrs)
     return name;
 }

+static void
+query_input_event_bits(struct udev_device* parent, InputAttributes* attrs,
+                       const char* path)
+{
+    const char* key = udev_device_get_property_value(parent, "KEY");
+    const char* rel = udev_device_get_property_value(parent, "REL");
+    const char* abs = udev_device_get_property_value(parent, "ABS");
+    int flags = 0;
+
+    if (abs) {
+        LogMessage(X_INFO, "config/udev: %s is a touchpad\n", path);
+        flags |= ATTR_TOUCHPAD;
+    } else if (rel) {
+        LogMessage(X_INFO, "config/udev: %s is a pointer\n", path);
+        flags |= ATTR_POINTER;
+    } else if (key) {
+        LogMessage(X_INFO, "config/udev: %s is a keyboard\n", path);
+        flags |= ATTR_KEY | ATTR_KEYBOARD;
+    }
+
+    attrs->flags |= flags;
+}
+
 static void
 device_added_input(struct udev_device *udev_device,
                    const char* path, const char* syspath)
 {
     const char *name = NULL;
     char *config_info = NULL;
-    const char *tags_prop;
-    const char *key, *value, *tmp;
     InputOption *input_options;
     InputAttributes attrs = { };
     DeviceIntPtr dev = NULL;
-    struct udev_list_entry *set, *entry;
     int rc;

+    const char *sysname = udev_device_get_sysname(udev_device);
     struct udev_device *parent = udev_device_get_parent(udev_device);
     dev_t devnum = udev_device_get_devnum(udev_device);

-    value = udev_device_get_property_value(udev_device, "ID_INPUT");
-    if (value && !strcmp(value, "0")) {
-        LogMessageVerb(X_INFO, 10, "config/udev: ignoring device %s", path);
+    if (asprintf(&config_info, "udev:%s", syspath) == -1)
+        return;
+
+    if (device_is_duplicate(config_info)) {
+        free(config_info);
+        LogMessage(X_WARNING, "config/udev: %s already added\n", path);
         return;
     }

@@ -173,7 +187,9 @@ device_added_input(struct udev_device *udev_device,
         return;

     if (parent)
-        name = query_input_name_ids(parent, &attrs);
+        name = query_input_name_ids(parent, &attrs, path);
+    if (name)
+        LogMessage(X_INFO, "config/udev: %s name \"%s\"\n", path, name);
     if (!name)
         name = "(unnamed)";

@@ -185,80 +201,8 @@ device_added_input(struct udev_device *udev_device,
     if (path)
         attrs.device = strdup(path);

-    tags_prop = udev_device_get_property_value(udev_device, "ID_INPUT.tags");
-    LOG_PROPERTY(path, "ID_INPUT.tags", tags_prop);
-    attrs.tags = xstrtokenize(tags_prop, ",");
-
-    if (asprintf(&config_info, "udev:%s", syspath) == -1) {
-        config_info = NULL;
-        goto unwind;
-    }
-
-    if (device_is_duplicate(config_info)) {
-        LogMessage(X_WARNING, "config/udev: device %s already added. ", name);
-        goto unwind;
-    }
-
-    set = udev_device_get_properties_list_entry(udev_device);
-    udev_list_entry_foreach(entry, set) {
-        key = udev_list_entry_get_name(entry);
-        if (!key)
-            continue;
-        value = udev_list_entry_get_value(entry);
-        if (!strncasecmp(key, UDEV_XKB_PROP_KEY, sizeof(UDEV_XKB_PROP_KEY) - 1)) {
-            LOG_PROPERTY(path, key, value);
-            tmp = key + sizeof(UDEV_XKB_PROP_KEY) - 1;
-            if (!strcasecmp(tmp, "rules"))
-                input_options =
-                    input_option_new(input_options, "xkb_rules", value);
-            else if (!strcasecmp(tmp, "layout"))
-                input_options =
-                    input_option_new(input_options, "xkb_layout", value);
-            else if (!strcasecmp(tmp, "variant"))
-                input_options =
-                    input_option_new(input_options, "xkb_variant", value);
-            else if (!strcasecmp(tmp, "model"))
-                input_options =
-                    input_option_new(input_options, "xkb_model", value);
-            else if (!strcasecmp(tmp, "options"))
-                input_options =
-                    input_option_new(input_options, "xkb_options", value);
-        }
-        else if (!strcmp(key, "ID_VENDOR")) {
-            LOG_PROPERTY(path, key, value);
-            attrs.vendor = strdup(value);
-        } else if (!strncmp(key, "ID_INPUT_", 9)) {
-            const struct pfmap {
-                const char *property;
-                unsigned int flag;
-            } map[] = {
-                { "ID_INPUT_KEY", ATTR_KEY },
-                { "ID_INPUT_KEYBOARD", ATTR_KEYBOARD },
-                { "ID_INPUT_MOUSE", ATTR_POINTER },
-                { "ID_INPUT_JOYSTICK", ATTR_JOYSTICK },
-                { "ID_INPUT_TABLET", ATTR_TABLET },
-                { "ID_INPUT_TABLET_PAD", ATTR_TABLET_PAD },
-                { "ID_INPUT_TOUCHPAD", ATTR_TOUCHPAD },
-                { "ID_INPUT_TOUCHSCREEN", ATTR_TOUCHSCREEN },
-                { NULL, 0 },
-            };
-
-            /* Anything but the literal string "0" is considered a
-             * boolean true. The empty string isn't a thing with udev
-             * properties anyway */
-            if (value && strcmp(value, "0")) {
-                const struct pfmap *m = map;
-
-                while (m->property != NULL) {
-                    if (!strcmp(m->property, key)) {
-                        LOG_PROPERTY(path, key, value);
-                        attrs.flags |= m->flag;
-                    }
-                    m++;
-                }
-            }
-        }
-    }
+    if (sysname && !strncmp(sysname, "event", 5) && parent)
+        query_input_event_bits(parent, &attrs, path);

     input_options = input_option_new(input_options, "config_info", config_info);

@@ -269,11 +213,10 @@ device_added_input(struct udev_device *udev_device,
     rc = NewInputDeviceRequest(input_options, &attrs, &dev);

     if (rc != Success)
-        LogMessage(X_INFO, "config/udev: cannot add %s (%s)\n", name, path);
+        LogMessage(X_INFO, "config/udev: %s cannot be added (%i)\n", path, rc);
     else
-        LogMessage(X_INFO, "config/udev: adding %s (%s)\n", name, path);
+        LogMessage(X_INFO, "config/udev: %s added successfully\n", path);

- unwind:
     free(config_info);
     input_option_free_list(&input_options);

--
2.16.1


code:
From 81cb0cf611ccde805ae2678f6fad8f22fcf39576 Mon Sep 17 00:00:00 2001
From: Alex Suykov <alex.suykov@gmail.com>
Date: Mon, 29 Jan 2018 11:12:19 +0200
Subject: [PATCH xserver 7/8] move logind ifdefs to call sites

The original implementation had systemd_logind*() declared either
as prototypes or as inline stubs in the header. At the call sites,
there were no explicit #ifdefs.

This approach does not work well if there is any other option for
accessing devices beside logind, including direct open. This patch
moves #ifdefs to the call sites, leaving systemd_logind*() as just
unconditional prototypes.

Direct open becomes the second option for device access.
In the original code, there was a fallback to direct open, but only
for drm and not inputs, which makes no sense. Now it becomes a strict
configure time choice, a server configured for logind will not try
to open the devices directly.

Signed-off-by: Alex Suykov <alex.suykov@gmail.com>
---
 config/config.c                            |  5 ++++
 config/udev.c                              |  2 ++
 hw/xfree86/common/xf86Events.c             |  5 ++++
 hw/xfree86/common/xf86Init.c               |  4 +++
 hw/xfree86/common/xf86Xinput.c             | 23 +++++++++++----
 hw/xfree86/common/xf86platformBus.c        |  4 +++
 hw/xfree86/os-support/linux/lnx_platform.c | 47 ++++++++++++++----------------
 include/systemd-logind.h                   |  7 -----
 8 files changed, 60 insertions(+), 37 deletions(-)

diff --git a/config/config.c b/config/config.c
index fb60295ae..bfb0a450e 100644
--- a/config/config.c
+++ b/config/config.c
@@ -142,7 +142,12 @@ void
 config_odev_free_attributes(struct OdevAttributes *attribs)
 {
     if (attribs->fd != -1)
+#ifdef SYSTEMD_LOGIND
         systemd_logind_release_fd(attribs->major, attribs->minor, attribs->fd);
+#else
+        close(attribs->fd);
+#endif
+
     free(attribs->path);
     free(attribs->syspath);
     free(attribs->busid);
diff --git a/config/udev.c b/config/udev.c
index 1d4b4687a..451624915 100644
--- a/config/udev.c
+++ b/config/udev.c
@@ -276,8 +276,10 @@ device_removed(struct udev_device *device)
                    syspath, path);
         config_udev_odev_setup_attribs(path, syspath, major(devnum),
                                        minor(devnum), DeleteGPUDeviceRequest);
+#ifdef SYSTEMD_LOGIND
         /* Retry vtenter after a drm node removal */
         systemd_logind_vtenter();
+#endif
         return;
     }
 #endif
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 9a8f432a0..e5b5c63ad 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -582,8 +582,13 @@ xf86VTSwitch(void)
      */
     if (xf86VTOwner())
         xf86VTLeave();
+#ifdef SYSTEMD_LOGIND
     else if (!systemd_logind_controls_session())
         xf86VTEnter();
+#else
+    else
+        xf86VTEnter();
+#endif
 }

 /* Input handler registration */
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index d59c224d5..bad4cedde 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -442,7 +442,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
             DoShowOptions();

         dbus_core_init();
+#ifdef SYSTEMD_LOGIND
         systemd_logind_init();
+#endif

         /* Do a general bus probe.  This will be a PCI probe for x86 platforms */
         xf86BusProbe();
@@ -1001,7 +1003,9 @@ ddxGiveUp(enum ExitCode error)
     if (xorgHWOpenConsole)
         xf86CloseConsole();

+#ifdef SYSTEMD_LOGIND
     systemd_logind_fini();
+#endif
     dbus_core_fini();

     xf86CloseLog(error);
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 136bf50ff..4f0ab3661 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -84,6 +84,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <fcntl.h>
 #ifdef HAVE_SYS_SYSMACROS_H
 #include <sys/sysmacros.h>
 #endif
@@ -788,7 +789,11 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
     FreeInputAttributes(pInp->attrs);

     if (pInp->flags & XI86_SERVER_FD)
+#ifdef SYSTEMD_LOGIND
         systemd_logind_release_fd(pInp->major, pInp->minor, pInp->fd);
+#else
+        close(pInp->fd);
+#endif

     /* Remove the entry from the list. */
     if (pInp == xf86InputDevs)
@@ -874,9 +879,11 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
 {
     InputDriverPtr drv = NULL;
     DeviceIntPtr dev = NULL;
-    Bool paused;
-    int rval;
+    int fd, rval = 0;
     char *path = NULL;
+#ifdef SYSTEMD_LOGIND
+    Bool paused;
+#endif

     drv = xf86LoadInputDriver(pInfo->driver);
     if (!drv) {
@@ -909,13 +916,18 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
     }

     path = xf86CheckStrOption(pInfo->options, "Device", NULL);
+
     if (path && pInfo->major == 0 && pInfo->minor == 0)
         xf86stat(path, &pInfo->major, &pInfo->minor);

-    if (path && (drv->capabilities & XI86_DRV_CAP_SERVER_FD)){
-        int fd = systemd_logind_take_fd(pInfo->major, pInfo->minor,
-                                        path, &paused);
+    if (path && drv->capabilities & XI86_DRV_CAP_SERVER_FD){
+#ifdef SYSTEMD_LOGIND
+        fd = systemd_logind_take_fd(pInfo->major, pInfo->minor, path, &paused);
+#else
+        fd = open(path, O_RDONLY | O_CLOEXEC);
+#endif
         if (fd != -1) {
+#ifdef SYSTEMD_LOGIND
             if (paused) {
                 /* Put on new_input_devices list for delayed probe */
                 PausedInputDevicePtr new_device = xnfalloc(sizeof *new_device);
@@ -926,6 +938,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr *pdev, BOOL enable)
                 free(path);
                 return BadMatch;
             }
+#endif
             pInfo->fd = fd;
             pInfo->flags |= XI86_SERVER_FD;
             pInfo->options = xf86ReplaceIntOption(pInfo->options, "fd", fd);
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index 39fb1dd36..f358f4529 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -384,7 +384,11 @@ static Bool doPlatformProbe(struct xf86_platform_device *dev, DriverPtr drvp,
     if (entity != -1) {
         if ((dev->flags & XF86_PDEV_SERVER_FD) && (!drvp->driverFunc ||
                 !drvp->driverFunc(NULL, SUPPORTS_SERVER_FDS, NULL))) {
+#ifdef SYSTEMD_LOGIND
             systemd_logind_release_fd(dev->attribs->major, dev->attribs->minor, dev->attribs->fd);
+#else
+            close(dev->attribs->fd);
+#endif
             dev->attribs->fd = -1;
             dev->flags &= ~XF86_PDEV_SERVER_FD;
         }
diff --git a/hw/xfree86/os-support/linux/lnx_platform.c b/hw/xfree86/os-support/linux/lnx_platform.c
index 1d145b362..fe1af0049 100644
--- a/hw/xfree86/os-support/linux/lnx_platform.c
+++ b/hw/xfree86/os-support/linux/lnx_platform.c
@@ -26,30 +26,31 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
     drmSetVersion sv;
     drmVersionPtr v;
     char *buf;
-    int major, minor, fd;
-    int err = 0;
-    Bool paused, server_fd = FALSE;
+    int fd, err = 0;

-    major = attribs->major;
-    minor = attribs->minor;
+#ifdef SYSTEMD_LOGIND
+    Bool paused;
+    int major = attribs->major;
+    int minor = attribs->minor;

     fd = systemd_logind_take_fd(major, minor, path, &paused);
-    if (fd != -1) {
-        if (paused) {
-            LogMessage(X_ERROR,
-                    "Error systemd-logind returned paused fd for drm node\n");
-            systemd_logind_release_fd(major, minor, -1);
-            return FALSE;
-        }
-        attribs->fd = fd;
-        server_fd = TRUE;
-    }
+#else
+    fd = open(path, O_RDWR | O_CLOEXEC);
+#endif

     if (fd == -1)
-        fd = open(path, O_RDWR, O_CLOEXEC);
+        return FALSE;

-    if (fd == -1)
+#ifdef SYSTEMD_LOGIND
+    if (paused) {
+        LogMessage(X_ERROR,
+                "Error systemd-logind returned paused fd for drm node\n");
+        systemd_logind_release_fd(major, minor, fd);
         return FALSE;
+    }
+#endif
+
+    attribs->fd = fd; /* caller will close attribs->fd whenever necessary */

     sv.drm_di_major = 1;
     sv.drm_di_minor = 4;
@@ -60,7 +61,7 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
     if (err) {
         xf86Msg(X_ERROR, "%s: failed to set DRM interface version 1.4: %s\n",
                 path, strerror(-err));
-        goto out;
+        return FALSE;
     }

     /* for a delayed probe we've already added the device */
@@ -69,8 +70,7 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
             delayed_index = xf86_num_platform_devices - 1;
     }

-    if (server_fd)
-        xf86_platform_devices[delayed_index].flags |= XF86_PDEV_SERVER_FD;
+    xf86_platform_devices[delayed_index].flags |= XF86_PDEV_SERVER_FD;

     buf = drmGetBusid(fd);
     xf86_platform_odev_attributes(delayed_index)->busid = XNFstrdup(buf);
@@ -79,16 +79,13 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
     v = drmGetVersion(fd);
     if (!v) {
         xf86Msg(X_ERROR, "%s: failed to query DRM version\n", path);
-        goto out;
+        return FALSE;
     }

     xf86_platform_odev_attributes(delayed_index)->driver = XNFstrdup(v->name);
     drmFreeVersion(v);

-out:
-    if (!server_fd)
-        close(fd);
-    return (err == 0);
+    return TRUE;
 }

 Bool
diff --git a/include/systemd-logind.h b/include/systemd-logind.h
index a4067d097..f348f0a44 100644
--- a/include/systemd-logind.h
+++ b/include/systemd-logind.h
@@ -33,13 +33,6 @@ int systemd_logind_take_fd(int major, int minor, const char *path, Bool *paus);
 void systemd_logind_release_fd(int major, int minor, int fd);
 int systemd_logind_controls_session(void);
 void systemd_logind_vtenter(void);
-#else
-#define systemd_logind_init()
-#define systemd_logind_fini()
-#define systemd_logind_take_fd(major, minor, path, paus) -1
-#define systemd_logind_release_fd(major, minor, fd) close(fd)
-#define systemd_logind_controls_session() 0
-#define systemd_logind_vtenter()
 #endif

 #endif
--
2.16.1