magiblot / turbo

An experimental text editor based on Scintilla and Turbo Vision.
Other
461 stars 35 forks source link

Can't compile #4

Open chernish2 opened 3 years ago

chernish2 commented 3 years ago

Hello! First of all I'm extremely excited with your revival of TurboVision! It's amazing that someone still remembers it! I can't compile. I guess it's something related to C++ 17, but I'm not sure since I'm Ruby developer not C++. Can you help me please?

chernish2@mintbox:~/soft$ cd turbo/ chernish2@mintbox:~/soft/turbo$ cd tvision/ chernish2@mintbox:~/soft/turbo/tvision$ cmake . CMake Error at CMakeLists.txt:2 (cmake_policy): Policy "CMP0091" is not known to this version of CMake.

-- The C compiler identification is GNU 7.5.0 -- The CXX compiler identification is GNU 7.5.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring incomplete, errors occurred! See also "/home/chernish2/soft/turbo/tvision/CMakeFiles/CMakeOutput.log".

magiblot commented 3 years ago

Hi Alexey!

I'm sorry for this. It's fixed in the latest version of Turbo Vision, but I haven't updated the submodule in this repository for some time.

Until I fix it, you can just comment out line 2 of tvision/CMakeLists.txt. Or you can also try upgrading to CMake 3.16 or newer, which will give you a faster compilation.

Cheers!

chernish2 commented 3 years ago

Updated cmake to ver. 3.19.0-rc1 Now when doing make I got the following: chernish2@mintbox:~/soft/turbo/tvision$ make [ 0%] Building CXX object CMakeFiles/tvision.dir/source/linux/dir.cpp.o In file included from /home/chernish2/soft/turbo/tvision/source/linux/dir.cpp:5:0: /home/chernish2/soft/turbo/tvision/include/tvision/internal/findfrst.h:7:10: fatal error: filesystem: No such file or directory

include

^~~~ compilation terminated. CMakeFiles/tvision.dir/build.make:142: recipe for target 'CMakeFiles/tvision.dir/source/linux/dir.cpp.o' failed make[2]: [CMakeFiles/tvision.dir/source/linux/dir.cpp.o] Error 1 CMakeFiles/Makefile2:159: recipe for target 'CMakeFiles/tvision.dir/all' failed make[1]: [CMakeFiles/tvision.dir/all] Error 2 Makefile:102: recipe for target 'all' failed make: *** [all] Error 2

magiblot commented 3 years ago

filesystem is a C++17 header. If the compiler cannot find it, then you must be using an outdated version. Try upgrading to g++ 8 or later, then delete CMakeCache.txt before running cmake . again.

Note that CMake tells you the version of the compiler it's using:

-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
magiblot commented 3 years ago

I have updated the Turbo Vision submodule in the latest commit. I don't know if git pull is enough to upgrade, so you may clone the whole repository again before trying one more time.

Check out the Readme, because the build commands have changed. This is the new way to do it:

$ (cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
$ cmake . && cmake --build . # Build Turbo.
magiblot commented 3 years ago

These commands:

$ cmake . && cmake --build . # Build Turbo.

Did you run them from the turbo directory (not tvision)?

Note that the commands to build tvision are surrounded by parenthesis. This is so that it returns to the turbo directory after running.

chernish2 commented 3 years ago

I got this error again (see below). I'm using gcc-8, and there was no errors during making tvision.

[ 96%] Linking CXX static library libscintilla.a [ 96%] Built target scintilla Scanning dependencies of target turbo [ 97%] Building CXX object CMakeFiles/turbo.dir/cmake_pch.hxx.gch In file included from /home/chernish2/soft/turbo/CMakeFiles/turbo.dir/cmake_pch.hxx:5:0, from :0: /home/chernish2/soft/turbo/include/ScintillaHeaders.h:48:10: fatal error: filesystem: No such file or directory

include

      ^~~~~~~~~~~~

compilation terminated. CMakeFiles/turbo.dir/build.make:82: recipe for target 'CMakeFiles/turbo.dir/cmake_pch.hxx.gch' failed make[2]: [CMakeFiles/turbo.dir/cmake_pch.hxx.gch] Error 1 CMakeFiles/Makefile2:123: recipe for target 'CMakeFiles/turbo.dir/all' failed make[1]: [CMakeFiles/turbo.dir/all] Error 2 Makefile:102: recipe for target 'all' failed make: *** [all] Error 2

magiblot commented 3 years ago

It's the same issue as before. You have been able to build tvision without issues because the submodule upgrade removed that dependendency from Turbo Vision. But the Turbo text editor depends on it unconditionally.

When you ran cmake ., did CMake print The CXX compiler identification is GNU 8.x.x, or was it still printing version 7.5.0?

If it's using version 7.5.0 despite having installed g++-8, you can try:

rm CMakeCache.txt && CXX=g++-8 cmake .

This will tell CMake to use g++-8 explicitly.

If you are actually using g++ 8, then you need an even newer version. Try g++ 9 or newer.

chernish2 commented 3 years ago

Thank you! Now I have (see below). I guess it's https://github.com/facebook/folly/issues/1262, but how to fix it? libfmt-dev is installed.

[ 98%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o In file included from /home/chernish2/soft/turbo/src/editwindow.h:11, from /home/chernish2/soft/turbo/src/styles.cc:3, from /home/chernish2/soft/turbo/CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx:3: /home/chernish2/soft/turbo/src/editstates.h:9:10: fatal error: fmt/core.h: No such file or directory

include <fmt/core.h>

      ^~~~~~~~~~~~

compilation terminated. CMakeFiles/turbo.dir/build.make:112: recipe for target 'CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o' failed make[2]: [CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o] Error 1 CMakeFiles/Makefile2:123: recipe for target 'CMakeFiles/turbo.dir/all' failed make[1]: [CMakeFiles/turbo.dir/all] Error 2 Makefile:102: recipe for target 'all' failed make: *** [all] Error 2

magiblot commented 3 years ago

Edit lines 44-53 of Turbo's CMakeLists.txt as follows:

 find_path(TVISION_INCLUDE "tvision/tv.h" HINTS "${CMAKE_CURRENT_SOURCE_DIR}/tvision/include")
+find_path(FMT_INCLUDE "fmt/core.h")

 target_include_directories(turbo PRIVATE
     ${SCINTILLA_INC}
     "${CMAKE_CURRENT_SOURCE_DIR}/include"
     "${CMAKE_CURRENT_SOURCE_DIR}/src"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/platform"
     "${TVISION_INCLUDE}"
     "${TVISION_INCLUDE}/override"
+    "${FMT_INCLUDE}"
 )

And try again.

magiblot commented 3 years ago

If the above still fails, you may need to install the development package for the fmt dependency.

chernish2 commented 3 years ago

OK it works! Is it possible to make something like sudo make install ? I would like to use turbo system-wide instead of nano.

chernish2 commented 3 years ago

Also it would be good to have something like apt install turbo because I would like to use turbo on every of my machines (plenty of them). Build from source many times would be pain. What do you think?

magiblot commented 3 years ago

Hooray!

There is no support for make install, but you can do:

sudo cp turbo /usr/local/bin/

Also it would be good to have something like apt install turbo

Yes, this would be great, but for this to work a package has to be created and published in a repository and maintained by someone. I don't know how to do this and I'm not even using the same Linux distribution as you. I don't have the time to be a package maintainer either. So I'm sorry but I can't promise you this.

OK it works!

Did you have to install an additional package, or were the changes in CMakeLists.txt enough?

chernish2 commented 3 years ago

Instruction for building on Linux Ubuntu 20.04.1 LTS

sudo apt update
sudo apt install cmake build-essential git libfmt-dev libmagic-dev libgpm-dev libncursesw5 libncursesw5-dev
git clone --recursive https://github.com/magiblot/turbo.git
cd turbo
(cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
cmake . && cmake --build . # Build Turbo.
sudo cp turbo /usr/local/bin/
turbo
chernish2 commented 3 years ago

Instruction for Ubuntu 18 is also ready (much more difficult), but you need to fix this first please:

Edit lines 44-53 of Turbo's CMakeLists.txt as follows:

 find_path(TVISION_INCLUDE "tvision/tv.h" HINTS "${CMAKE_CURRENT_SOURCE_DIR}/tvision/include")
+find_path(FMT_INCLUDE "fmt/core.h")

 target_include_directories(turbo PRIVATE
     ${SCINTILLA_INC}
     "${CMAKE_CURRENT_SOURCE_DIR}/include"
     "${CMAKE_CURRENT_SOURCE_DIR}/src"
     "${CMAKE_CURRENT_SOURCE_DIR}/src/platform"
     "${TVISION_INCLUDE}"
     "${TVISION_INCLUDE}/override"
+    "${FMT_INCLUDE}"
 )

And try again.

magiblot commented 3 years ago

Okay, I wasn't sure that was necessary to fix the compilation. I just pushed commit https://github.com/magiblot/turbo/commit/7f3261628d8018e392096de5cb6f22829d158b9b with this change.

chernish2 commented 3 years ago

Instruction for building on Ubuntu 18.04.5 LTS

sudo apt update
sudo apt-get install libssl-dev gcc-8 g++-8 git libfmt-dev libmagic-dev libgpm-dev libncursesw5 libncursesw5-dev ncurses-dev build-essential 

#build CMake 3.18.1
export CXX=g++-8
sudo apt remove --purge --auto-remove cmake
mkdir ~/temp && cd ~/temp
wget https://cmake.org/files/v3.18/cmake-3.18.1.tar.gz
tar -xzvf cmake-3.18.1.tar.gz
cd cmake-3.18.1/
./bootstrap
make -j$(nproc)
sudo make install

#build fmt
cd .. && git clone https://github.com/fmtlib/fmt.git && cd fmt/
cmake . && cmake --build .
sudo make install
cd ..

git clone --recursive https://github.com/magiblot/turbo.git && cd turbo

(cd tvision && cmake . -B ./build && cmake --build ./build) # Build tvision.
cmake . && cmake --build . # Build Turbo.
sudo cp turbo /usr/local/bin/
turbo

Please feel free to use both instructions by any means you like.

chernish2 commented 3 years ago

Are there any means to add Ruby syntax highlighting? Also would be happy for Python and R.

chernish2 commented 3 years ago

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible). Now to use the menu I forced to press F12 and then scroll the menus since main hotkey combinations are intercepted by terminal.

magiblot commented 3 years ago

Are there any means to add Ruby syntax highlighting? Also would be happy for Python and R.

Well, at this point it requires editing the source code. I may be able to do it in a couple of days. Python should be already working.

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible).

There's nothing I can do about this. Maybe your terminal application has a setting where you can change this behaviour. For example, gnome-terminal has this option:

Screenshot_20201021_215557

Now to use the menu I forced to press F12 and then scroll the menus since main hotkey combinations are intercepted by terminal.

Note that you can press the highlighted key instead of navigating with the cursor. For instance, F12+f opens the 'File' menu.

Cheers!

magiblot commented 3 years ago

Also, thank you very much for the build instructions! I will add them later to the Readme.

chernish2 commented 3 years ago

I think it would be nice also to add some instruction on how to pass hotkeys (Alt + F etc.) from Linux terminal to turbo itself (if possible).

There's nothing I can do about this. Maybe your terminal application has a setting where you can change this behaviour. For example, gnome-terminal has this option:

Indeed in Ubuntu default terminal it is sufficient to right-click in it and disable "Show Menubar". After that hotkeys are processed by turbo directly.

magiblot commented 3 years ago

Indeed in Ubuntu default terminal it is sufficient to right-click in it and disable "Show Menubar". After that hotkeys are processed by turbo directly.

No, I was referring to the "Enable mnemonics" option, which I already disabled.

chernish2 commented 3 years ago

Is it possible to show in File Open dialog files starting with dot ('hidden')?

magiblot commented 3 years ago

It's not implemented yet, but I'll add it to my TODO list.

magiblot commented 3 years ago

Hi Alexey. I have changed the way how the project is built. It should be now simpler and faster. The README has been updated with the new build instructions. Can you try it out and confirm that it still works for you?

Cheers.

chernish2 commented 3 years ago

Hey! Good job! Both instructions works perfectly! Also I would like to add this line to the very end of each instruction: sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/turbo 50 It makes turbo available in select editor dialog: sudo select-editor

chernish2 commented 3 years ago

Hi there. I found out it's very difficult to use copy/paste outside of turbo. I mean - it's a pain to copy text in turbo and paste it say in browser. nano is very easy with such a task but unfortunately not turbo. Please can you fix it?

magiblot commented 3 years ago

Hey Alexey. This is issue #2. Anyway, I found an external library that does this and tried to integrate it in 469e279dff5ed2a31487d50a0237c04cab2bf6eb. Can you please give it a try?

chernish2 commented 3 years ago

Hello! What should I do? git pull and rebuild from scratch?

magiblot commented 3 years ago

Yes, that's enough.

chernish2 commented 3 years ago

On Ubuntu 20 completing the instruction, and have errors: cmake . -DCMAKE_BUILD_TYPE=Release -- The C compiler identification is GNU 9.3.0 -- The CXX compiler identification is GNU 9.3.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Version: 7.1.2 -- Build type: Release -- CXX_STANDARD: 11 -- Performing Test has_std_11_flag -- Performing Test has_std_11_flag - Success -- Performing Test has_std_0x_flag -- Performing Test has_std_0x_flag - Success -- Performing Test SUPPORTS_USER_DEFINED_LITERALS -- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success -- Performing Test FMT_HAS_VARIANT -- Performing Test FMT_HAS_VARIANT - Success -- Required features: cxx_variadic_templates -- Looking for strtod_l -- Looking for strtod_l - not found -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) CMake Error at /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:511 (message): pkg-config tool not found Call Stack (most recent call first): /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:643 (_pkg_check_modules_internal) deps/libclipboard/CMakeLists.txt:66 (pkg_check_modules)

-- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE
-- Found PythonInterp: /usr/bin/python3.8 (found version "3.8.5") -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) -- (tvision) Build Examples: -- (tvision) Build w/GPM: ON -- (tvision) gpm library requested -- (tvision) gpm library found -- Configuring incomplete, errors occurred! See also "/home/chernish2/turbo/CMakeFiles/CMakeOutput.log". See also "/home/chernish2/turbo/CMakeFiles/CMakeError.log". chernish2@ch:~/turbo$ cmake --build . # Build Turbo. make: *** No targets specified and no makefile found. Stop.

magiblot commented 3 years ago

Okay. You have to install pkg-config. It's a dependency of the new submodule. I'll have to update the documentation. I guess this should be enough:

sudo apt install pkg-config

Let me know if it keeps producing errors.

chernish2 commented 3 years ago

Yes, then having this: -- Checking for module 'xcb' -- No package 'xcb' found CMake Error at /usr/share/cmake-3.16/Modules/FindPkgConfig.cmake:463 (message): A required package was not found

magiblot commented 3 years ago

Let's try with this:

sudo apt install xcb
chernish2 commented 3 years ago

Sorry, doesn't help: sudo apt install xcb Reading package lists... Done Building dependency tree
Reading state information... Done xcb is already the newest version (2.4-5). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

May be something like libxcb?

magiblot commented 3 years ago

Yeah, probably. Can you please try that? Or maybe there is a -dev package.

chernish2 commented 3 years ago

sudo apt install libxcb1-dev !!

chernish2 commented 3 years ago

So with two libs (pkg-config libxcb1-dev) it builds on Ubuntu 20. I can easily copy text from GUI to turbo using ctrl+c / ctrl+v. But I can't copy from turbo to GUI (have tried ctrl+c and ctrl+shift+c).

Also it would be convenient to have basic options like "Copy", Cut, Paste in Edit menu.

magiblot commented 3 years ago

But I can't copy from turbo to GUI (have tried ctrl+c and ctrl+shift+c).

This works for me. I'll have to test further.

Also it would be convenient to have basic options like "Copy", Cut, Paste in Edit menu.

Yes.

Thanks for testing!

chernish2 commented 3 years ago

And following the instruction for Ubuntu 18 it fails to build turbo: [ 95%] Built target clipboard Scanning dependencies of target turbo [ 95%] Building CXX object CMakeFiles/turbo.dir/cmake_pch.hxx.gch [ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_2_cxx.cxx.o [ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_1_cxx.cxx.o [ 96%] Building CXX object CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o [ 97%] Linking CXX executable turbo CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function std::_Function_handler<bool (TNode*, int), DocumentTreeView::hasPath(util::u8path const&, int*)::{lambda(auto:1*, auto:2)#1}>::_M_invoke(std::_Any_data const&, TNode*&&, int&&)': unity_0_cxx.cxx:(.text+0x847): undefined reference tostd::filesystem::cxx11::path::compare(std::filesystem::cxx11::path const&) const' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::canOverwrite() const': unity_0_cxx.cxx:(.text+0x3f50): undefined reference tostd::filesystem::status(std::filesystem::cxx11::path const&, std::error_code&)' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function DocumentTreeView::Node::Node(DocumentTreeView::Node*, util::u8path const&)': unity_0_cxx.cxx:(.text+0x4ce4): undefined reference tostd::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function DocumentTreeView::getDirNode(util::u8path const&)': unity_0_cxx.cxx:(.text+0x51d5): undefined reference tostd::filesystem::cxx11::path::compare(std::filesystem::cxx11::path const&) const' unity_0_cxx.cxx:(.text+0x5285): undefined reference to `std::filesystem::cxx11::path::compare(std::filesystem::cxx11::path const&) const' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function FileType::detect(EditorWindow&)': unity_0_cxx.cxx:(.text+0x6192): undefined reference tostd::filesystem::cxx11::path::_M_find_extension() const' unity_0_cxx.cxx:(.text+0x6264): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0x635f): undefined reference tostd::filesystem::cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function FileType::detect(EditorWindow&) [clone .constprop.291]': unity_0_cxx.cxx:(.text+0x6732): undefined reference tostd::filesystem::__cxx11::path::_M_find_extension() const' unity_0_cxx.cxx:(.text+0x6804): undefined reference to `std::filesystem::cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0x68ff): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In functionEditorWindow::tryLoadFile(bool)': unity_0_cxx.cxx:(.text+0x6d39): undefined reference to std::filesystem::absolute(std::filesystem::__cxx11::path const&, std::error_code&)' unity_0_cxx.cxx:(.text+0x6dde): undefined reference tostd::filesystem::cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0x6f31): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In functionTurboApp::setFocusedEditor(EditorWindow*)': unity_0_cxx.cxx:(.text+0x7e0e): undefined reference to `std::filesystem::cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0x7f39): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In functionEditorWindow::EditorWindow(TRect const&, std::basic_string_view<char, std::char_traits >, bool)': unity_0_cxx.cxx:(.text+0x82c0): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o:unity_0_cxx.cxx:(.text+0x883b): more undefined references tostd::filesystem::cxx11::path::_M_split_cmpts()' follow CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function EditorWindow::saveAsDialog()::{lambda(TView*)#1}::operator()(TView*) const [clone .isra.265]': unity_0_cxx.cxx:(.text+0xa007): undefined reference tostd::filesystem::absolute(std::filesystem::__cxx11::path const&, std::error_code&)' unity_0_cxx.cxx:(.text+0xa17d): undefined reference to `std::filesystem::cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0xa3e0): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' unity_0_cxx.cxx:(.text+0xa634): undefined reference tostd::filesystem::cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In function util::u8path::parent_path() const': unity_0_cxx.cxx:(.text._ZNK4util6u8path11parent_pathEv[_ZNK4util6u8path11parent_pathEv]+0x2d): undefined reference tostd::filesystem::cxx11::path::parent_path() const' unity_0_cxx.cxx:(.text._ZNK4util6u8path11parent_pathEv[_ZNK4util6u8path11parent_pathEv]+0xad): undefined reference to std::filesystem::__cxx11::path::_M_split_cmpts()' CMakeFiles/turbo.dir/Unity/unity_0_cxx.cxx.o: In functionutil::u8path::filename() const': unity_0_cxx.cxx:(.text._ZNK4util6u8path8filenameEv[_ZNK4util6u8path8filenameEv]+0xe8): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' collect2: error: ld returned 1 exit status CMakeFiles/turbo.dir/build.make:163: recipe for target 'turbo' failed make[2]: [turbo] Error 1 CMakeFiles/Makefile2:323: recipe for target 'CMakeFiles/turbo.dir/all' failed make[1]: [CMakeFiles/turbo.dir/all] Error 2 Makefile:148: recipe for target 'all' failed make: *** [all] Error 2

magiblot commented 3 years ago

std::filesystem errors, why am I not surprised? Is a newer version of GCC available in Ubuntu 18? Or maybe you could try with Clang (CXX=clang++).

chernish2 commented 3 years ago

This helps for Ubuntu 18 to build: export CXX=g++-8 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-9

Under Ubuntu 18 it pastes from GUI with ctrl+shift+v , but no way to paste from turbo to GUI.

chernish2 commented 3 years ago

Also if possible please add autoloading files opened in previous sessions. Please!

magiblot commented 3 years ago

Hi Alexey. Besides my main system, which has the latest version of most packages, I am also testing on Lubuntu 18.04 with the following packages:

cmake 3.10.2
g++ 8.4.0
pkg-config 0.29.1
libxcb1-dev 1.13

I ran across some compilation issues which I managed to fix in the latest commits.

The clipboard works between Turbo and GUI applications with just Ctrl+C and Ctrl+V, so I cannot reproduce your situation. Can you rebuild with the latest commit and try again?

Please make sure that the following command:

echo $DISPLAY

Produces some output (e.g. :0). Because libclipboard relies on that variable to connect to the X11 display server.

Also if possible please add autoloading files opened in previous sessions. Please!

Okay, but it won't be soon.

chernish2 commented 3 years ago

Ok, new commit builds fine on 18. I get it why I can't copy. What I'm trying to do is to replace nano with turbo on a server configuration (without GUI). So $DISPLAY is obviously empty. I confirm that on machine with GUI copy-paste works fine. But the idea is to use turbo on server (no GUI) configuration. And to copy-paste from ssh terminal to GUI is something I would like to have (it is possible in nano with the help of mouse), though the more common scenario is to copy from GUI to ssh terminal (which works).

magiblot commented 3 years ago

If an X11 server is running in your graphical environment (which is likely to be the case if your local system is Linux), you can use the -X option of ssh to enable X11 forwarding.

chernish2 commented 3 years ago

Yes, with -X it works! Thank you!

alexmyczko commented 1 year ago

here's a debian source package (unfinished, but building, installable, runnable):

http://sid.ethz.ch/debian/turbo/

For proper packaging, the deps would be need to get rid of, and tag a release.

libfmt-dev already exists in Debian, so that should be used instead a delivered copy of it. the tvision part should also be packaged separately...

magiblot commented 1 year ago

Hi @alexmyczko, thanks for the support!

It is possible to use the system-installed libfmt with the CMake option -DTURBO_USE_SYSTEM_DEPS=ON. Turbo Vision is a static library, so using the submodule shouldn't make a great difference. However, cmake --install currently also installs the Turbo Vision files, which should be fixed. Otherwise, it is possible to use a system-installed tvision with the option -DTURBO_USE_SYSTEM_TVISION=ON.

As for the tagged release, is it really necessary?