Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tg2sip on FreeBSD #37

Open
ogogon opened this issue Sep 16, 2020 · 9 comments
Open

tg2sip on FreeBSD #37

ogogon opened this issue Sep 16, 2020 · 9 comments

Comments

@ogogon
Copy link

ogogon commented Sep 16, 2020

Can tg2cip, without major modifications, be compiled on the FreeBSD platform?

@Infactum
Copy link
Owner

Tg2sip itself don't use any platform specific code if I remember correctly.
Anyway I can't say wether it or its dependencies are tested on freeBSD.

@ogogon
Copy link
Author

ogogon commented Sep 16, 2020

  1. I've never worked with spdlog, but something is wrong with it. Cmake doesn't want to work with her.
  2. What is Td?
root@ogogon:/usr/local/src/tg2sip # uname -a
FreeBSD devel.ogogon.org 11.4-RELEASE-p2 FreeBSD 11.4-RELEASE-p2 #0: Tue Aug  4 19:21:02 UTC 2020     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
root@ogogon:/usr/local/src/tg2sip # pkg info cmake spdlog
cmake-3.18.2
spdlog-1.8.0_1
root@ogogon:/usr/local/src/tg2sip # cmake CMakeLists.txt
CMake Warning at libtgvoip/CMakeLists.txt:7 (find_package):
  Could not find a configuration file for package "spdlog" that is compatible
  with requested version "0.17".

  The following configuration files were considered but not accepted:

    /usr/local/lib/cmake/spdlog/spdlogConfig.cmake, version: 1.8.0

-- Could NOT find spdlog
CMake Error at CMakeLists.txt:10 (find_package):
  By not providing "FindTd.cmake" in CMAKE_MODULE_PATH this project has asked
  CMake to find a package configuration file provided by "Td", but CMake did
  not find one.

  Could not find a package configuration file provided by "Td" (requested
  version 1.6.0) with any of the following names:

    TdConfig.cmake
    td-config.cmake

  Add the installation prefix of "Td" to CMAKE_PREFIX_PATH or set "Td_DIR" to
  a directory containing one of the above files.  If "Td" provides a separate
  development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "/usr/local/src/tg2sip/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/tg2sip/CMakeFiles/CMakeError.log".
root@ogogon:/usr/local/src/tg2sip #

Am I doing something wrong?

@Infactum
Copy link
Owner

Infactum commented Sep 16, 2020

You are trying to compile against newer version of spdlog (1.8.0) than requested one (0.17).
Td is telegram database library. Btw it has build instructions for freeBSD here.
Most probably you'll need to build all dependencies by yourself. See buildenv and CI scripts as examples and do same this with freeBSD specific.

@ogogon
Copy link
Author

ogogon commented Sep 17, 2020

You are trying to compile against newer version of spdlog (1.8.0) than requested one (0.17).

As far as I understand, version 0.17 is no longer supported. Where can I get it?
Standard methods for installing programs in FreeBSD offer only version 1.8.0.
Thus, I must not act very correctly. Remove the correctly installed version 1.8.0, and then compile and install the obsolete version without using the software packages control mechanism.

Sorry if my question is tactless, but you have no plans to rewrite your product using the current version spdlog?

@Infactum
Copy link
Owner

It doesn't matter what version is used by freeBSD package manager.
Build dependencies but don't install them system-wide. Later they will be statically linked to tg2sip binary so your system won't be affected in any way.

I have no plans to update any dependencies to newer versions until current one are working stable and no new features are needed.

@ogogon
Copy link
Author

ogogon commented Sep 18, 2020

For the Td library, you have set version 1.6.0
find_package(Td 1.6.0 REQUIRED)
Now, the current version is 1.6.8.

They will be compatible, or only need to use 1.6.0?

@Infactum
Copy link
Owner

If Td uses semver, then 1.6.0 and 1.6.8 should have same API.

@ogogon
Copy link
Author

ogogon commented Sep 20, 2020

Please comment on the following situation.
When compiling, I get diagnostics:

[ 97%] Building CXX object CMakeFiles/tg2sip.dir/tg2sip/sip.cpp.o
/usr/bin/c++ -DPJ_AUTOCONF -DTGVOIP_USE_DESKTOP_DSP -DTGVOIP_USE_SOFTWARE_AUDIO -DTGVOIP_USE_SPDLOG -I/usr/local/src/spdlog-0.17.0/package/include -I/usr/local/src/td-1.6.0 -I/usr/local/include -I/usr/local/src/tg2sip -I/usr/local/include/opus -I/usr/local/src/tg2sip/include -isystem /usr/local/src/td-1.6.0/tdlib/include -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/tg2sip.dir/tg2sip/sip.cpp.o -c /usr/local/src/tg2sip/tg2sip/sip.cpp
/usr/local/src/tg2sip/tg2sip/sip.cpp:198:27: error: member reference type 'const pj::CodecInfo' is not a pointer; did you mean to use '.'?
        ep.codecSetPriority(value->codecId, (pj_uint8_t) (value->codecId == codecId ? 255 : 0));
                            ~~~~~^~
                                 .
/usr/local/src/tg2sip/tg2sip/sip.cpp:198:57: error: member reference type 'const pj::CodecInfo' is not a pointer; did you mean to use '.'?
        ep.codecSetPriority(value->codecId, (pj_uint8_t) (value->codecId == codecId ? 255 : 0));
                                                          ~~~~~^~
                                                               .
2 errors generated.
*** Error code 1

Stop.
make[2]: stopped in /usr/local/src/tg2sip/build
*** Error code 1

Stop.
make[1]: stopped in /usr/local/src/tg2sip/build
*** Error code 1

Stop.

If I make corrections suggested by the compiler, then everything goes without errors.
Here is my version of the CLang and SIP-stack:

ogogon@ogogon:/usr/local/src/tg2sip/build# clang --version
FreeBSD clang version 10.0.0 (git@github.com:llvm/llvm-project.git llvmorg-10.0.0-0-gd32170dbd5b)
Target: x86_64-unknown-freebsd11.4
Thread model: posix
InstalledDir: /usr/bin
ogogon@ogogon:/usr/local/src/tg2sip/build# pkg info pjsip
pjsip-2.10_1

What does this mean?
There was a bug in the program, but everyone was compiling it? Or have I mistakenly followed the compiler's recommendation and introduced an error into the code?

@Infactum
Copy link
Owner

Infactum commented Sep 20, 2020

Well I'm gonna say it once again: please check existing CI build scripts. Current tg2sip version is build against pjproject 2.9. Your package version is 2.10. There is even issue about this here.
Also pjproject must be properly configured before compilation with config_site.h. Thats the second reason why you should build it yourself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants