kiwix / kiwix-tools

Command line Kiwix tools: kiwix-serve, kiwix-manage, ...
https://download.kiwix.org/release/kiwix-tools/
GNU General Public License v3.0
428 stars 83 forks source link

kiwix-tools doesn't compile #563

Closed juuz0 closed 2 years ago

juuz0 commented 2 years ago

This is new to me because it always worked before. I have tried to re-clone libkiwix and kiwix-tools too but it still won't work. The workaround is to add

#include<iostream>
using std::vector;
using std::string;

but that was never needed earlier. Environment: Ubuntu 22.04 GCC 11.2.0 Log:

ninja: Entering directory `build'
[1/4] Linking target src/manager/kiwix-manage
[2/4] Compiling C++ object src/server/kiwix-serve.p/kiwix-serve.cpp.o
FAILED: src/server/kiwix-serve.p/kiwix-serve.cpp.o 
c++ -Isrc/server/kiwix-serve.p -Isrc/server -I../src/server -I/usr/local/include/ -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include/p11-kit-1 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Werror -std=c++11 -g '-DKIWIX_TOOLS_VERSION="3.3.0"' -pthread -MD -MQ src/server/kiwix-serve.p/kiwix-serve.cpp.o -MF src/server/kiwix-serve.p/kiwix-serve.cpp.o.d -o src/server/kiwix-serve.p/kiwix-serve.cpp.o -c ../src/server/kiwix-serve.cpp
In file included from ../src/server/../version.h:27,
                 from ../src/server/kiwix-serve.cpp:41:
/usr/local/include/kiwix/version.h:30:47: error: ‘cout’ is not a member of ‘std’
   30 |   void printVersions(std::ostream& out = std::cout);
      |                                               ^~~~
/usr/local/include/kiwix/version.h:1:1: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
  +++ |+#include <iostream>
    1 | /*
In file included from ../src/server/../version.h:28,
                 from ../src/server/kiwix-serve.cpp:41:
/usr/local/include/zim/version.h:30:47: error: ‘cout’ is not a member of ‘std’
   30 |   void printVersions(std::ostream& out = std::cout);
      |                                               ^~~~
/usr/local/include/zim/version.h:1:1: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
  +++ |+#include <iostream>
    1 | /*
In file included from ../src/server/kiwix-serve.cpp:41:
../src/server/../version.h: In function ‘void version()’:
../src/server/../version.h:32:8: error: ‘cout’ is not a member of ‘std’
   32 |   std::cout << "kiwix-tools " << KIWIX_TOOLS_VERSION << std::endl << std::endl;
      |        ^~~~
../src/server/../version.h:29:1: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
   28 | #include <zim/version.h>
  +++ |+#include <iostream>
   29 | 
../src/server/../version.h:32:62: error: ‘endl’ is not a member of ‘std’
   32 |   std::cout << "kiwix-tools " << KIWIX_TOOLS_VERSION << std::endl << std::endl;
      |                                                              ^~~~
../src/server/../version.h:29:1: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
   28 | #include <zim/version.h>
  +++ |+#include <ostream>
   29 | 
../src/server/../version.h:32:75: error: ‘endl’ is not a member of ‘std’
   32 |   std::cout << "kiwix-tools " << KIWIX_TOOLS_VERSION << std::endl << std::endl;
      |                                                                           ^~~~
../src/server/../version.h:32:75: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/../version.h:34:8: error: ‘cout’ is not a member of ‘std’
   34 |   std::cout << std::endl;
      |        ^~~~
../src/server/../version.h:34:8: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/../version.h:34:21: error: ‘endl’ is not a member of ‘std’
   34 |   std::cout << std::endl;
      |                     ^~~~
../src/server/../version.h:34:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp: In function ‘void usage()’:
../src/server/kiwix-serve.cpp:47:8: error: ‘cout’ is not a member of ‘std’
   47 |   std::cout << "Usage:" << std::endl
      |        ^~~~
../src/server/kiwix-serve.cpp:42:1: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
   41 | #include "../version.h"
  +++ |+#include <iostream>
   42 | 
../src/server/kiwix-serve.cpp:47:33: error: ‘endl’ is not a member of ‘std’
   47 |   std::cout << "Usage:" << std::endl
      |                                 ^~~~
../src/server/kiwix-serve.cpp:42:1: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
   41 | #include "../version.h"
  +++ |+#include <ostream>
   42 | 
../src/server/kiwix-serve.cpp:48:60: error: ‘endl’ is not a member of ‘std’
   48 |             << "\tkiwix-serve [OPTIONS] ZIM_PATH+" << std::endl
      |                                                            ^~~~
../src/server/kiwix-serve.cpp:48:60: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:49:73: error: ‘endl’ is not a member of ‘std’
   49 |             << "\tkiwix-serve --library [OPTIONS] LIBRARY_PATH" << std::endl
      |                                                                         ^~~~
../src/server/kiwix-serve.cpp:49:73: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:50:21: error: ‘endl’ is not a member of ‘std’
   50 |             << std::endl
      |                     ^~~~
../src/server/kiwix-serve.cpp:50:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:52:35: error: ‘endl’ is not a member of ‘std’
   52 |             << "Purpose:" << std::endl
      |                                   ^~~~
../src/server/kiwix-serve.cpp:52:35: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:54:21: error: ‘endl’ is not a member of ‘std’
   54 |             << std::endl << std::endl
      |                     ^~~~
../src/server/kiwix-serve.cpp:54:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:54:34: error: ‘endl’ is not a member of ‘std’
   54 |             << std::endl << std::endl
      |                                  ^~~~
../src/server/kiwix-serve.cpp:54:34: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:56:47: error: ‘endl’ is not a member of ‘std’
   56 |             << "Mandatory arguments:" << std::endl
      |                                               ^~~~
../src/server/kiwix-serve.cpp:56:47: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:58:21: error: ‘endl’ is not a member of ‘std’
   58 |             << std::endl
      |                     ^~~~
../src/server/kiwix-serve.cpp:58:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:60:21: error: ‘endl’ is not a member of ‘std’
   60 |             << std::endl << std::endl
      |                     ^~~~
../src/server/kiwix-serve.cpp:60:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:60:34: error: ‘endl’ is not a member of ‘std’
   60 |             << std::endl << std::endl
      |                                  ^~~~
../src/server/kiwix-serve.cpp:60:34: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:62:46: error: ‘endl’ is not a member of ‘std’
   62 |             << "Optional arguments:" << std::endl << std::endl
      |                                              ^~~~
../src/server/kiwix-serve.cpp:62:46: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:62:59: error: ‘endl’ is not a member of ‘std’
   62 |             << "Optional arguments:" << std::endl << std::endl
      |                                                           ^~~~
../src/server/kiwix-serve.cpp:62:59: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:63:58: error: ‘endl’ is not a member of ‘std’
   63 |             << "\t-h, --help\t\tPrint this help" << std::endl << std::endl
      |                                                          ^~~~
../src/server/kiwix-serve.cpp:63:58: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:63:71: error: ‘endl’ is not a member of ‘std’
   63 |             << "\t-h, --help\t\tPrint this help" << std::endl << std::endl
      |                                                                       ^~~~
../src/server/kiwix-serve.cpp:63:71: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:64:99: error: ‘endl’ is not a member of ‘std’
   64 |             << "\t-a, --attachToProcess\tWxit if given process id is not running anymore" << std::endl
      |                                                                                                   ^~~~
../src/server/kiwix-serve.cpp:64:99: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:65:96: error: ‘endl’ is not a member of ‘std’
   65 |             << "\t-d, --daemon\t\tDetach the HTTP server daemon from the main process" << std::endl
      |                                                                                                ^~~~
../src/server/kiwix-serve.cpp:65:96: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:66:106: error: ‘endl’ is not a member of ‘std’
   66 |             << "\t-i, --address\t\tListen only on this ip address, all available ones otherwise" << std::endl
      |                                                                                                          ^~~~
../src/server/kiwix-serve.cpp:66:106: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:67:107: error: ‘endl’ is not a member of ‘std’
   67 |             << "\t-M, --monitorLibrary\tMonitor the XML library file and reload it automatically" << std::endl
      |                                                                                                           ^~~~
../src/server/kiwix-serve.cpp:67:107: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:68:118: error: ‘endl’ is not a member of ‘std’
   68 |             << "\t-m, --nolibrarybutton\tDon't print the builtin home button in the builtin top bar overlay" << std::endl
      |                                                                                                                      ^~~~
../src/server/kiwix-serve.cpp:68:118: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:69:114: error: ‘endl’ is not a member of ‘std’
   69 |             << "\t-n, --nosearchbar\tDon't print the builtin bar overlay on the top of each served page" << std::endl
      |                                                                                                                  ^~~~
../src/server/kiwix-serve.cpp:69:114: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:70:102: error: ‘endl’ is not a member of ‘std’
   70 |             << "\t-b, --blockexternal\tPrevent users from directly accessing external links" << std::endl
      |                                                                                                      ^~~~
../src/server/kiwix-serve.cpp:70:102: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:71:101: error: ‘endl’ is not a member of ‘std’
   71 |             << "\t-p, --port\t\tTCP port on which to listen to HTTP requests (default: 80)" << std::endl
      |                                                                                                     ^~~~
../src/server/kiwix-serve.cpp:71:101: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:72:121: error: ‘endl’ is not a member of ‘std’
   72 |             << "\t-r, --urlRootLocation\tURL prefix on which the content should be made available (default: /)" << std::endl
      |                                                                                                                         ^~~~
../src/server/kiwix-serve.cpp:72:121: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:73:119: error: ‘endl’ is not a member of ‘std’
   73 |             << "\t-s, --searchLimit\tMaximun number of zim in a fulltext multizim search (default: No limit)" << std::endl
      |                                                                                                                       ^~~~
../src/server/kiwix-serve.cpp:73:119: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:74:119: error: ‘endl’ is not a member of ‘std’
   74 |             << "\t-t, --threads\t\tNumber of threads to run in parallel (default: " << DEFAULT_THREADS << ")" << std::endl
      |                                                                                                                       ^~~~
../src/server/kiwix-serve.cpp:74:119: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:75:71: error: ‘endl’ is not a member of ‘std’
   75 |             << "\t-v, --verbose\t\tPrint debug log to STDOUT" << std::endl
      |                                                                       ^~~~
../src/server/kiwix-serve.cpp:75:71: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:76:68: error: ‘endl’ is not a member of ‘std’
   76 |             << "\t-V, --version\t\tPrint software version" << std::endl
      |                                                                    ^~~~
../src/server/kiwix-serve.cpp:76:68: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:77:106: error: ‘endl’ is not a member of ‘std’
   77 |             << "\t-z, --nodatealiases\tCreate URL aliases for each content by removing the date" << std::endl
      |                                                                                                          ^~~~
../src/server/kiwix-serve.cpp:77:106: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:78:94: error: ‘endl’ is not a member of ‘std’
   78 |             << "\t-c, --customIndex\tAdd path to custom index.html for welcome page" << std::endl
      |                                                                                              ^~~~
../src/server/kiwix-serve.cpp:78:94: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:79:138: error: ‘endl’ is not a member of ‘std’
   79 |             << "\t-L, --ipConnectionLimit\tMax number of (concurrent) connections per IP (default: infinite, recommended: >= 6)" << std::endl
      |                                                                                                                                          ^~~~
../src/server/kiwix-serve.cpp:79:138: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:80:21: error: ‘endl’ is not a member of ‘std’
   80 |             << std::endl
      |                     ^~~~
../src/server/kiwix-serve.cpp:80:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:82:41: error: ‘endl’ is not a member of ‘std’
   82 |             << "Documentation:" << std::endl
      |                                         ^~~~
../src/server/kiwix-serve.cpp:82:41: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:83:80: error: ‘endl’ is not a member of ‘std’
   83 |             << "\tSource code\t\thttps://github.com/kiwix/kiwix-tools" << std::endl
      |                                                                                ^~~~
../src/server/kiwix-serve.cpp:83:80: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:84:81: error: ‘endl’ is not a member of ‘std’
   84 |             << "\tMore info\t\thttps://wiki.kiwix.org/wiki/Kiwix-serve" << std::endl
      |                                                                                 ^~~~
../src/server/kiwix-serve.cpp:84:81: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:85:21: error: ‘endl’ is not a member of ‘std’
   85 |             << std::endl;
      |                     ^~~~
../src/server/kiwix-serve.cpp:85:21: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp: At global scope:
../src/server/kiwix-serve.cpp:88:1: error: ‘string’ does not name a type; did you mean ‘stdin’?
   88 | string loadCustomTemplate (string customIndexPath) {
      | ^~~~~~
      | stdin
../src/server/kiwix-serve.cpp: In function ‘bool reloadLibrary(kiwix::Manager&, const std::vector<std::__cxx11::basic_string<char> >&)’:
../src/server/kiwix-serve.cpp:169:12: error: ‘cout’ is not a member of ‘std’
  169 |       std::cout << "Loading the library from the following files:\n";
      |            ^~~~
../src/server/kiwix-serve.cpp:169:12: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:171:14: error: ‘cout’ is not a member of ‘std’
  171 |         std::cout << "\t" << p << std::endl;
      |              ^~~~
../src/server/kiwix-serve.cpp:171:14: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:171:40: error: ‘endl’ is not a member of ‘std’
  171 |         std::cout << "\t" << p << std::endl;
      |                                        ^~~~
../src/server/kiwix-serve.cpp:171:40: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:174:12: error: ‘cout’ is not a member of ‘std’
  174 |       std::cout << "The library was successfully loaded." << std::endl;
      |            ^~~~
../src/server/kiwix-serve.cpp:174:12: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:174:67: error: ‘endl’ is not a member of ‘std’
  174 |       std::cout << "The library was successfully loaded." << std::endl;
      |                                                                   ^~~~
../src/server/kiwix-serve.cpp:174:67: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:177:12: error: ‘cerr’ is not a member of ‘std’
  177 |       std::cerr << "ERROR: " << err.what() << std::endl;
      |            ^~~~
../src/server/kiwix-serve.cpp:177:12: note: ‘std::cerr’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:177:52: error: ‘endl’ is not a member of ‘std’
  177 |       std::cerr << "ERROR: " << err.what() << std::endl;
      |                                                    ^~~~
../src/server/kiwix-serve.cpp:177:52: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:178:12: error: ‘cerr’ is not a member of ‘std’
  178 |       std::cerr << "Errors encountered while loading the library." << std::endl;
      |            ^~~~
../src/server/kiwix-serve.cpp:178:12: note: ‘std::cerr’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:178:76: error: ‘endl’ is not a member of ‘std’
  178 |       std::cerr << "Errors encountered while loading the library." << std::endl;
      |                                                                            ^~~~
../src/server/kiwix-serve.cpp:178:76: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp: In function ‘int main(int, char**)’:
../src/server/kiwix-serve.cpp:192:3: error: ‘vector’ was not declared in this scope; did you mean ‘std::vector’?
  192 |   vector<string> zimPathes;
      |   ^~~~~~
      |   std::vector
In file included from /usr/include/c++/11/vector:67,
                 from /usr/local/include/kiwix/book.h:24,
                 from /usr/local/include/kiwix/manager.h:23,
                 from ../src/server/kiwix-serve.cpp:22:
/usr/include/c++/11/bits/stl_vector.h:389:11: note: ‘std::vector’ declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
../src/server/kiwix-serve.cpp:192:10: error: ‘string’ was not declared in this scope; did you mean ‘std::string’?
  192 |   vector<string> zimPathes;
      |          ^~~~~~
      |          std::string
In file included from /usr/include/c++/11/string:39,
                 from /usr/local/include/kiwix/book.h:23,
                 from /usr/local/include/kiwix/manager.h:23,
                 from ../src/server/kiwix-serve.cpp:22:
/usr/include/c++/11/bits/stringfwd.h:79:33: note: ‘std::string’ declared here
   79 |   typedef basic_string<char>    string;
      |                                 ^~~~~~
../src/server/kiwix-serve.cpp:192:18: error: ‘zimPathes’ was not declared in this scope
  192 |   vector<string> zimPathes;
      |                  ^~~~~~~~~
../src/server/kiwix-serve.cpp:193:9: error: expected ‘;’ before ‘libraryPath’
  193 |   string libraryPath;
      |         ^~~~~~~~~~~~
      |         ;
../src/server/kiwix-serve.cpp:194:9: error: expected ‘;’ before ‘rootPath’
  194 |   string rootPath;
      |         ^~~~~~~~~
      |         ;
../src/server/kiwix-serve.cpp:195:9: error: expected ‘;’ before ‘address’
  195 |   string address;
      |         ^~~~~~~~
      |         ;
../src/server/kiwix-serve.cpp:196:9: error: expected ‘;’ before ‘customIndexPath’
  196 |   string customIndexPath="";
      |         ^~~~~~~~~~~~~~~~
      |         ;
../src/server/kiwix-serve.cpp:197:9: error: expected ‘;’ before ‘indexTemplateString’
  197 |   string indexTemplateString="";
      |         ^~~~~~~~~~~~~~~~~~~~
      |         ;
../src/server/kiwix-serve.cpp:274:11: error: ‘address’ was not declared in this scope
  274 |           address = string(optarg);
      |           ^~~~~~~
../src/server/kiwix-serve.cpp:283:11: error: ‘customIndexPath’ was not declared in this scope
  283 |           customIndexPath = string(optarg);
      |           ^~~~~~~~~~~~~~~
../src/server/kiwix-serve.cpp:298:11: error: ‘libraryPath’ was not declared in this scope
  298 |           libraryPath = argv[optind++];
      |           ^~~~~~~~~~~
../src/server/kiwix-serve.cpp:309:28: error: ‘libraryPath’ was not declared in this scope
  309 |   if (zimPathes.empty() && libraryPath.empty()) {
      |                            ^~~~~~~~~~~
../src/server/kiwix-serve.cpp:316:18: error: ‘libraryPaths’ was not declared in this scope
  316 |   vector<string> libraryPaths;
      |                  ^~~~~~~~~~~~
../src/server/kiwix-serve.cpp:318:33: error: ‘libraryPath’ was not declared in this scope
  318 |     libraryPaths = kiwix::split(libraryPath, ";");
      |                                 ^~~~~~~~~~~
../src/server/kiwix-serve.cpp:325:7: error: ‘cerr’ was not declared in this scope
  325 |       cerr << "The XML library file '" << libraryPath
      |       ^~~~
../src/server/kiwix-serve.cpp:326:59: error: ‘endl’ was not declared in this scope
  326 |            << "' is empty (or has only remote books)." << endl;
      |                                                           ^~~~
../src/server/kiwix-serve.cpp:332:9: error: ‘cerr’ was not declared in this scope
  332 |         cerr << "Unable to add the ZIM file '" << *it
      |         ^~~~
../src/server/kiwix-serve.cpp:333:49: error: ‘endl’ was not declared in this scope
  333 |              << "' to the internal library." << endl;
      |                                                 ^~~~
../src/server/kiwix-serve.cpp:363:8: error: ‘customIndexPath’ was not declared in this scope
  363 |   if (!customIndexPath.empty()) {
      |        ^~~~~~~~~~~~~~~
../src/server/kiwix-serve.cpp:365:7: error: ‘indexTemplateString’ was not declared in this scope
  365 |       indexTemplateString = loadCustomTemplate(customIndexPath);
      |       ^~~~~~~~~~~~~~~~~~~
../src/server/kiwix-serve.cpp:365:29: error: ‘loadCustomTemplate’ was not declared in this scope
  365 |       indexTemplateString = loadCustomTemplate(customIndexPath);
      |                             ^~~~~~~~~~~~~~~~~~
../src/server/kiwix-serve.cpp:367:12: error: ‘cerr’ is not a member of ‘std’
  367 |       std::cerr << "ERROR: " << e.what() << std::endl;
      |            ^~~~
../src/server/kiwix-serve.cpp:367:12: note: ‘std::cerr’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:367:50: error: ‘endl’ is not a member of ‘std’
  367 |       std::cerr << "ERROR: " << e.what() << std::endl;
      |                                                  ^~~~
../src/server/kiwix-serve.cpp:367:50: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:372:21: error: ‘address’ was not declared in this scope
  372 |   server.setAddress(address);
      |                     ^~~~~~~
../src/server/kiwix-serve.cpp:379:33: error: ‘indexTemplateString’ was not declared in this scope
  379 |   server.setIndexTemplateString(indexTemplateString);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/server/kiwix-serve.cpp:388:8: error: ‘cout’ is not a member of ‘std’
  388 |   std::cout << "The Kiwix server is running and can be accessed in the local network at: "
      |        ^~~~
../src/server/kiwix-serve.cpp:388:8: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
../src/server/kiwix-serve.cpp:389:28: error: ‘endl’ is not a member of ‘std’
  389 |             << url << std::endl;
      |                            ^~~~
../src/server/kiwix-serve.cpp:389:28: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
../src/server/kiwix-serve.cpp:413:13: error: expected ‘;’ before ‘procPath’
  413 |       string procPath = "/proc/" + std::to_string(PPID);
      |             ^~~~~~~~~
      |             ;
../src/server/kiwix-serve.cpp:414:18: error: ‘procPath’ was not declared in this scope
  414 |       if (access(procPath.c_str(), F_OK) != -1) {
      |                  ^~~~~~~~
ninja: build stopped: subcommand failed.
kelson42 commented 2 years ago

Hmmm, a few headers includes seem to fail!

juuz0 commented 2 years ago

Can you reproduce this? I feel it might be an error only on my side, will try a fresh system install if you can't reproduce.

mgautierfr commented 2 years ago

I confirm the issue. It may be because of https://github.com/kiwix/libkiwix/pull/789 which remove some header which were including iostream and doing using namespace std (and it was wrong)

@juuz0 Can you do a PR for that ?

juuz0 commented 2 years ago

@mgautierfr Yes, but it will also require adding #include<iostream in libkiwix include/version.h, otherwise kiwix-serve complains about that too. Would that be ok?

mgautierfr commented 2 years ago

Yes, indeed, we need it. include/version.h uses std::ostream, so we need to include it.