diff -u -r ../apt-1.4.8/apt-pkg/deb/dpkgpm.cc ./apt-pkg/deb/dpkgpm.cc --- ../apt-1.4.8/apt-pkg/deb/dpkgpm.cc 2017-09-13 18:47:33.000000000 +0200 +++ ./apt-pkg/deb/dpkgpm.cc 2017-12-29 01:29:53.178628587 +0100 @@ -1281,8 +1281,13 @@ sigemptyset(&d->sigmask); sigaddset(&d->sigmask, SIGTTOU); sigprocmask(SIG_BLOCK,&d->sigmask, &d->original_sigmask); +#ifndef __ANDROID__ + // This fails on Android 8.0 - see + // https://github.com/termux/termux-packages/issues/1359 + // We silence the warning here to avoid it being shown for every apt operation. if (tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw_tt) == -1) _error->Errno("tcsetattr", "Setting in Start via TCSAFLUSH for stdin failed!"); +#endif sigprocmask(SIG_SETMASK, &d->original_sigmask, NULL); } @@ -1361,8 +1366,13 @@ } if(d->master >= 0) { +#ifndef __ANDROID__ + // This fails on Android 8.0 - see + // https://github.com/termux/termux-packages/issues/1359 + // We silence the warning here to avoid it being shown for every apt operation. if (d->tt_is_valid == true && tcsetattr(STDIN_FILENO, TCSAFLUSH, &d->tt) == -1) _error->FatalE("tcsetattr", "Setting in Stop via TCSAFLUSH for stdin failed!"); +#endif close(d->master); d->master = -1; } diff -uNr apt-1.4.8/apt-pkg/deb/dpkgpm.cc apt-1.4.8.mod/apt-pkg/deb/dpkgpm.cc --- apt-1.4.8/apt-pkg/deb/dpkgpm.cc 2018-06-19 13:55:47.330437710 +0300 +++ apt-1.4.8.mod/apt-pkg/deb/dpkgpm.cc 2018-06-19 13:54:21.810433307 +0300 @@ -179,7 +179,7 @@ so we use the binary from util-linux */ static bool ionice(int PID) { - if (!FileExists("/usr/bin/ionice")) + if (!FileExists("@TERMUX_PREFIX@/bin/ionice")) return false; pid_t Process = ExecFork(); if (Process == 0) @@ -187,7 +187,7 @@ char buf[32]; snprintf(buf, sizeof(buf), "-p%d", PID); const char *Args[4]; - Args[0] = "/usr/bin/ionice"; + Args[0] = "@TERMUX_PREFIX@/bin/ionice"; Args[1] = "-c3"; Args[2] = buf; Args[3] = 0; @@ -483,7 +483,7 @@ debSystem::DpkgChrootDirectory(); const char *Args[4]; - Args[0] = "/bin/sh"; + Args[0] = "@TERMUX_PREFIX@/bin/sh"; Args[1] = "-c"; Args[2] = Opts->Value.c_str(); Args[3] = 0; @@ -2413,11 +2413,14 @@ fprintf(report, " %s: %s\n", pkgname.c_str(), opstr); } +// In latest versions of Android, we can't use 'dmesg' +// without root. +#ifndef __ANDROID__ // attach dmesg log (to learn about segfaults) - if (FileExists("/bin/dmesg")) + if (FileExists("@TERMUX_PREFIX@/bin/dmesg")) { fprintf(report, "Dmesg:\n"); - FILE *log = popen("/bin/dmesg","r"); + FILE *log = popen("@TERMUX_PREFIX@/bin/dmesg","r"); if(log != NULL) { char buf[1024]; @@ -2426,13 +2429,18 @@ pclose(log); } } +#endif +// Current Termux implementation of 'df' is just a wrapper +// for /system/bin/df which may don't understand additional +// parameters such as '-l'. +#ifndef __ANDROID__ // attach df -l log (to learn about filesystem status) - if (FileExists("/bin/df")) + if (FileExists("@TERMUX_PREFIX@/bin/df")) { fprintf(report, "Df:\n"); - FILE *log = popen("/bin/df -l","r"); + FILE *log = popen("@TERMUX_PREFIX@/bin/df -l","r"); if(log != NULL) { char buf[1024]; @@ -2441,6 +2449,7 @@ pclose(log); } } +#endif fclose(report);