MySQL++ SSL Support on Linux - c++

I am attempting to get MySQL++ to work correctly on Debian 6 with SSL support. I have tested everything on Windows 7 and it works great. Everything is encrypted. I am having a little bit of trouble porting it to Debian though.
This is my error:
terminate called after throwing an instance of 'mysqlpp::BadOption'
what(): Option not supported by database driver v5.1.49
This is my call for setting the certificate files:
connection->set_option(new mysqlpp::SslOption("/root/certs/client-key.pem", "/root/certs/client-cert.pem", "/root/certs/ca-cert.pem", "/root/certs", "DHE-RSA-AES256-SHA"));
I have noticed that when configuring MySQL++ it looks for mysql_ssl_set() in libmysqlclient. It does not find that function.
checking for mysql_ssl_set in -l... no

This bug is fixed in MySQL++ 3.2.0, released today.
In older versions, there's a bug in the test for mysql_ssl_set(). If you cannot use the current version but can patch your version's source code, this will fix it:
Index: config/mysql_ssl.m4
===================================================================
--- config/mysql_ssl.m4 (revision 2696)
+++ config/mysql_ssl.m4 (working copy)
## -10,7 +10,7 ##
#
# Check for mysql_ssl_set() in libmysqlclient(_r)
#
- AC_CHECK_LIB($MYSQL_C_LIB, mysql_ssl_set, [
+ AC_CHECK_LIB($MYSQL_C_LIB_NAME, mysql_ssl_set, [
AC_DEFINE(HAVE_MYSQL_SSL_SET,, Define if your MySQL library has SSL functions)
]) dnl AC_CHECK_LIB(mysqlclient, mysql_ssl_set)
]) dnl MYSQL_WITH_SSL
You will then need to re-bootstrap the source tree, and rebuild.

Related

Is the scylladb build hardcoded to work only with gnu gcc?

The python configure.py contains a line
gcc_linker_output = subprocess.check_output(['gcc', '-###', '/dev/null', '-o', 't'], stderr=subprocess.STDOUT).decode('utf-8')
The comments before this line indicate scylladb uses a custom dynamic linker and references details about the ABI layout.
Is there code missing from the configure.py script which would enable building on a strict llvm environment, or is that not possible at this time?
I am building Scylladb on FreeBSD 13 which uses clang++ 13.0.0.
I am on branch master, commit 0efdc45d5981868b1b6, Setp 8, 2022.
I patched SCYLLA-VERSION-GEN to get past the date --utf and USAGE issues, and patched config.py with an entry to read ID from freebsd for the boost error message.
I run configure.py with
./configure.py --mode=release --compiler=clang++ --cflags=-I/usr/local/include
In fact ScyllaDB builds with clang. However its dependency Seastar is very dependent on Linux. If you want it to run on FreeBSD you'll have to port Seastar first (see reactor_backend.{cc,hh})

Build and test V8 from AOSP for the older version on Ubuntu 18.04.5 LTS

I am trying to run the unit tests for the V8 present in the AOSP's lollipop release: external/chromium_org/v8
by following the documentation from https://v8.dev/docs/build. But the build itself is constantly failing.
Steps followed:
Export the depot_tools path
gclient sync
install dependencies using ./build/install-build-deps.sh (This script was not present by default in the source code, so had to copy manually from the higher version)
gm x64.release
I have installed all the dependencies and followed all the steps from the documentation mentioned above but when I do:
gm x64.release
the build fails with the following output:
# echo > out/x64.release/args.gn << EOF
is_component_build = false
is_debug = false
target_cpu = "x64"
use_goma = false
v8_enable_backtrace = true
v8_enable_disassembler = true
v8_enable_object_print = true
v8_enable_verify_heap = true
EOF
# gn gen out/x64.release
ERROR at //build/config/BUILDCONFIG.gn:71:7: Undefined identifier
if (os == "chromeos") {
^-
I have tried building the it with gn as well by following the manual workflow but I am ending up with the same errors. I also tried setting the os variable to linux in the gn args list but there as well I get the unknown identifier error.
I see that the v8 used in the AOSP project differs a lot in terms of files from the main source code with the same version. The helper script tools/dev/gm.py is also not present by default so I am using one from the higher version. It would be great if anyone could suggest if there's any different set of steps I should be following or any other resources I can refer to in order to build the V8 present in the AOSP project
Version: V8 3.29.88.17
OS: Ubuntu 18.04.5 LTS
Architecture: x86_64
3.29 is seriously old; I'm not surprised that it won't build with current tools. Rule of thumb: when building old software, use the tools that were used to build it back then.
In the case at hand: try make x64.release.check -jN with N being the number of CPU cores you have.
I see that the v8 used in the AOSP project differs a lot in terms of files from the main source code with the same version.
The "lollipop-release" branch contains V8 3.27.34.15, whereas "lollipop-mr1-release" contains V8 3.29.88.17 which you quoted. Does that explain the differences?

How to make GCC create checksum-same builds?

In company where I work there is complicated industrial ARM arch router project, consisting primarily of many C and C++ apps with Linux kernel. Currently we are preparing to certification and certification organization wants us to send them all sources and binary checksum of resulting root filesystem image. Of course checksum we send them and checksum of image that they will get after build should be same.
I tried to sequentially build same app (I choosed busybox) on same host twice and got two different checksums. I've tried to solve it using answer https://superuser.com/a/1092566/851200 (pass -frandom-seed=123 as compile flag) - haven't helped.
If I could build same app with same checksum twice on same host - I think the problem will be practically solved cause we could say to certification organization "Build soft on Ubuntu 18.04.3 with GCC 7.5.0-3ubuntu1~18.04 with ARM GNUEABI GCC 4.8.5 built from sources that we gave you etc" and base soft will be same and it will be identical to build on same system case. But maybe I miss something.
Could anybody help me?
UPDATE:
I tried to see what exactly differs in resulting binary files using arm-linux-gnueabi-readelf -a and got following diff for two sequential builds on same machine for busybox:
--- a 2020-03-24 16:17:51.901192012 +0500
+++ b 2020-03-24 16:18:47.152671408 +0500
## -1404,7 +1404,7 ##
Displaying notes found at file offset 0x00000168 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_BUILD_ID (unique build ID bitstring)
- Build ID: ecc0ddee1a1f50c9b4ac98477be7ba55
+ Build ID: edab8a4ee42f8fd0e4ee7e931639f226
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "5TE"
Then I checked GCC man page and see If style is omitted, "sha1" is used ... The "md5" and "sha1" styles produces an identifier that is always the same in an identical output file. So defaults should be OK and produce same Build ID, but it is not.

Omnet++ (Eclipse IDE?) crashes when running INET projects - EXCEPTION_ACCESS_VIOLATION in opplibs.dll

Currently working with Omnet++ and INET on my bachelors thesis. I managed to work just fine, however since a few weeks my Omnet IDE starts crashing either when trying to run a simulation, or just after a few minutes when opening normally.
I've already reinstalled the entire Omnet++ and Inet package, as if it were entirely new. After this reinstall, the IDE doesn't seem to crash by itself anymore, and I'm able to run non INET simulations. However, still, after trying to run a INET simulation the program crashes immediatly.
Here's an error similar to all the ones I get, usually with just few differences:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006848962e, pid=14676, tid=0x0000000000001f98
#
# JRE version: Java(TM) SE Runtime Environment (8.0_102-b14) (build 1.8.0_102-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.102-b14 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [opplibs.dll+0xc962e]
#
opplibs.dll is in every single one of these error messages. But even a reinstalled opplibs has not fixed the issue. I'm really at a wits end and need pointers. Thank you.
AFAIK this project have its repository on github - https://github.com/omnetpp/omnetpp
so it's the best place to ask for it. Simply go to "Issues" bookmark and search for your issue or create new one.
You can also look there for similiar issues: Possible causes of Java VM EXCEPTION_ACCESS_VIOLATION?
I managed to figure out the mistake in this part.
Inside my .ini file, I was calling
tkenv-plugin-path = ../../../etc/plugins , however due to a change in my file structure that path was no longer correct. This was throwing the EXCEPTION_ACCESS_VIOLATION without any further error message.

Compiling on Vortex86: "Illegal instruction"

I'm using an embedded PC which has a Vortex86-SG CPU, Ubuntu 10.04 w/ kernel 2.6.34.10-vortex86-sg. Unfortunately we can't compile a new kernel, cause we don't have any source code, not even drivers or patches.
I have to run a small project written in C++ with OpenFrameworks. The framework compiles right each script in of_v0071_linux_release/scripts/linux/ubuntu/install_*.sh.
I noticed that in order to compile against Vortex86/Ubuntu 10.04, the following options must be added in every config.make file:
USER_CFLAGS = -march=i486
USER_LDFLAGS = -lGLEW
In effects, it compiles without errors, but the generated binary doesn't start at all:
root#jb:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# ./emptyExample
Illegal instruction
root#jb:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin# echo $?
132
Strace last lines:
munmap(0xb77c3000, 4096) = 0
rt_sigprocmask(SIG_BLOCK, [PIPE], NULL, 8) = 0
--- SIGILL (Illegal instruction) # 0 (0) ---
+++ killed by SIGILL +++
Illegal instruction
root#jb:~/openframeworks/of_v0071_linux_release/apps/myApps/emptyExample/bin#
Any idea to solve this problem?
I know I am a bit late on this but I recently had my own issues trying to compile the kernel for the vortex86dx. I finally was able to build the kernel as well. Use these steps at your own risk as I am not a Linux guru and some settings you may have to change to your own preference/hardware:
Download and use a Linux distribution that runs on a similar kernel version that you plan on compiling. Since I will be compiling Linux 2.6.34.14, I downloaded and installed Debian 6 on virtual box with adequate ram and processor allocations. You could potentially compile on the Vortex86DX itself, but that would likely take forever.
Made sure I hade decencies: #apt-get install ncurses-dev kernel-package
Download kernel from kernel.org (I grabbed Linux-2.6.34.14.tar.xz). Extract files from package.
Grab Config file from dmp ftp site: ftp://vxmx:gc301#ftp.dmp.com.tw/Linux/Source/config-2.6.34-vortex86-sg-r1.zip. Please note vxmx user name. Copy the config file to freshly extracted Linux source folder.
Grab Patch and at ftp://vxdx:gc301#ftp.dmp.com.tw/Driver/Linux/config%26patch/patch-2.6.34-hda.zip. Please note vxdx user name. Copy to kernel source folder.
Patch Kernel: #patch -p1 < patchfilename
configure kernel with #make menuconfig
Load Alternate Configuration File
Enable generic x86 support
Enable Math Emulation
I disabled generic IDE support because I will using legacy mode(selectable in bios)
Under Device Drivers -> Ethernet (10 or 100Mbit) -> Make sure RDC R6040 Fast Ethernet Adapter Support is selected
USB support -> Select Support for Host-side USB, EHCI HCD (USB 2.0) support, OHCI HCD support
safe config as .config
check serial ports: edit .config manually make sure CONFIG_SERIAL_8250_NR_UARTS = 4 (or more if you have additional), CONFIG_SERIAL_8250_RUNTIME_UARTS = 4(or more if you have additional). If you are to use more that 4 serial ports make use config_serail_8250_MANY_PORTs is set.
compile kernel headers and source: #make-kpkg --initrd kernel_image kernel_source kernel_headers modules_image