Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » Releasing U++ » Tarball issues
Re: Tarball issues [message #47413 is a reply to message #47404] Fri, 13 January 2017 10:19 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi amrein,

It was a fresh install and I have not installed anything 'manually'. I just had to install libnotify and llvm39, but did it with the default package manager.

* Please note that working on TrueOS, or *BSD in general, is not a critical issue for me at the moment. Just wanted to help you in testing. *

Here's the output of commands you asked for:

[tom@trueos-7040] ~% pkg-config --variable pcfiledir gtk+-2.0
/usr/local/libdata/pkgconfig
[tom@trueos-7040] ~% pkg-config --variable pcfiledir fontconfig
/usr/local/libdata/pkgconfig
[tom@trueos-7040] ~% cat "$(pkg-config --variable pcfiledir fontconfig)/fontconfig.pc"
Illegal variable name.
[tom@trueos-7040] ~% 


Just for reference, here's the result of locate fontconfig.

[tom@trueos-7040] ~% locate fontconfig
/usr/local/include/fontconfig
/usr/local/include/fontconfig/fcfreetype.h
/usr/local/include/fontconfig/fcprivate.h
/usr/local/include/fontconfig/fontconfig.h
/usr/local/include/qt5/QtPlatformSupport/5.6.2/QtPlatformSupport/private/qfontconfigdatabase_p.h
/usr/local/include/qt5/QtPlatformSupport/5.6.2/QtPlatformSupport/private/qfontenginemultifontconfig_p.h
/usr/local/lib/girepository-1.0/fontconfig-2.0.typelib
/usr/local/lib/libfontconfig.a
/usr/local/lib/libfontconfig.so
/usr/local/lib/libfontconfig.so.1
/usr/local/lib/libfontconfig.so.1.9.2
/usr/local/libdata/pkgconfig/fontconfig.pc
/usr/local/pkg-cache/fontconfig-2.12.1,1-581b37418c.txz
/usr/local/pkg-cache/fontconfig-2.12.1,1.txz
/usr/local/share/doc/fontconfig
/usr/local/share/doc/fontconfig/fontconfig-user.html
/usr/local/share/doc/fontconfig/fontconfig-user.pdf
/usr/local/share/doc/fontconfig/fontconfig-user.txt
/usr/local/share/gir-1.0/fontconfig-2.0.gir
/usr/local/share/licenses/fontconfig-2.12.1,1
/usr/local/share/licenses/fontconfig-2.12.1,1/catalog.mk
/usr/local/share/licenses/fontconfig-2.12.1,1/LICENSE
/usr/local/share/licenses/fontconfig-2.12.1,1/MIT
/var/db/fontconfig
/var/db/fontconfig/1fe06f2352c4cb897117a756a050a9d4-le64.cache-7
/var/db/fontconfig/317e92aa1a4d3e601fb38e2d3c7b366a-le64.cache-7
/var/db/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-7
/var/db/fontconfig/5590eef8711d78f75a1d19f78ae9af8f-le64.cache-7
/var/db/fontconfig/830bb1cbfd3d582459af9eb69ef1dd53-le64.cache-7
/var/db/fontconfig/b505adbf72d7253408dd67084a8aa967-le64.cache-7
/var/db/fontconfig/ba1d92d9e40780c65c2952558e6fa6f5-le64.cache-7
/var/db/fontconfig/bd930d03fc0401d0f1dcfa7b9bdc1687-le64.cache-7
/var/db/fontconfig/CACHEDIR.TAG
/var/db/fontconfig/d3b21a501470a17bfd0b9b6aedc735bd-le64.cache-7                                                                                           
/var/db/fontconfig/ece4193fc5c4a4effb1dc60970b2e31e-le64.cache-7


Finally, please note that the flags flagGCC and flagLINUX were erroneously active, while I assume they should have been flagCLANG and flagBSD.

Best regards,

Tom
Re: Tarball issues [message #47416 is a reply to message #47413] Sat, 14 January 2017 22:18 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
What I found:
After having installed all dependencies:

[1]- Make will stop with error:
make[1]: don't know how to make ide/app.tpp/Aboutn-us.tppi. Stop

It's because make from BSD try to handle '$$' in Makefiles like the beginning of variable (About$$en-us.tppi become Aboutn-us.tppi, ...).
Several lines will crash in Makefile.in because of '$$'.

If I'm correct, the perfect way to escape '$', according to internet forums, is to use four '$'.
Yes, four '$' meaning '$' become '$$$$'. Crying or Very Sad

Solution: modify umk source to double escape $ characters.

[2]- Then make will stop with another error:
/usr/bin/ld: cannot find -lfreetype
clang-3.9: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

It's because freetype libraries on BSD are named differently (libttf.so* instead of libfreetype.so*). I found that running 'pkg info -l freetype'.

Solution: well, I don't know. There is no pkg-config file for freetype in most distributions (no freetype.pc I mean). The only way to handle this efficiently would be to switch to GNU Autoconf and this is not as easy as it sound.
Re: Tarball issues [message #47417 is a reply to message #47416] Sat, 14 January 2017 22:35 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
In fact it's 'pkg-config --libs gtk+-2.0' that output '-lfreetype'
-> This is a TrueOS configuration bug. Not a U++ issue then.
Re: Tarball issues [message #47418 is a reply to message #47416] Sat, 14 January 2017 22:40 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1075
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
Hello,

Quote:

Solution: well, I don't know. There is no pkg-config file for freetype in most distributions (no freetype.pc I mean). The only way to handle this efficiently would be to switch to GNU Autoconf and this is not as easy as it sound.


I think it would be not problem to modify Draw package to link against libttf when BSD or FREEBSD is detected. Dose it happen on all BSD distribution or it is related only to True OS?

____________________________________________________________ _________
You can try to modify linking libs in Draw package organizer. This is shown on below screenshot:
index.php?t=getfile&id=5171&private=0

Below is the list of all flags that we can handle in package organizer (ide/Core/Host.cpp - line 316):
void LocalHost::AddFlags(Index<String>& cfg)
{
#if   defined(PLATFORM_WIN32)
	cfg.Add("WIN32");
#endif

#ifdef PLATFORM_LINUX
	cfg.Add("LINUX");
#endif

#ifdef PLATFORM_POSIX
	cfg.Add("POSIX");
#endif

#ifdef PLATFORM_BSD
	cfg.Add("BSD");
#endif

#ifdef PLATFORM_FREEBSD
	cfg.Add("FREEBSD");
#endif

#ifdef PLATFORM_OPENBSD
	cfg.Add("OPENBSD");
#endif

#ifdef PLATFORM_NETBSD
	cfg.Add("NETBSD");
#endif

#ifdef PLATFORM_DRAGONFLY
	cfg.Add("DRAGONFLY");
#endif

#ifdef PLATFORM_SOLARIS
	cfg.Add("SOLARIS");
#endif

#ifdef PLATFORM_OSX11
	cfg.Add("OSX11");
#endif
}

So, as you can see we can make hacks for all BSD related system and only for that using FREE BSD kernel. Dependency in this case is BSD > FREEBSD.

Sincerely,
Klugier


U++ - one framework to rule them all.

[Updated on: Sat, 14 January 2017 22:43]

Report message to a moderator

Re: Tarball issues [message #47419 is a reply to message #47418] Sat, 14 January 2017 22:50 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
I understand but we shouldn't. This is a TrueOS issue. What can be done is reporting that pkg-config for gtk doesn't give the right library name for freetype and add that freetype libraries use wrong names.
Other than that, we shouldn't interfere. Tomorrow, this will certainly be fixed and we would have to change it again and again.
Re: Tarball issues [message #47420 is a reply to message #47417] Sat, 14 January 2017 22:53 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1075
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
amrein wrote on Sat, 14 January 2017 22:35
In fact it's 'pkg-config --libs gtk+-2.0' that output '-lfreetype'
-> This is a TrueOS configuration bug. Not a U++ issue then.


Hello,

I think we can modify Core to support flag PLATFORM_TRUE_OS (Core/config.h - line 37):
	#if __FreeBSD__ || __OpenBSD__ || __NetBSD__ || __DragonFly__
				#define PLATFORM_BSD 1
				#if __FreeBSD__
					#define PLATFORM_FREEBSD 1
				#endif
				#if __OpenBSD__
					#define PLATFORM_OPENBSD 1
				#endif
				#if __NetBSD__
					#define PLATFORM_NETBSD 1
				#endif
				#if __DragonFly__
					#define PLATFORM_DRAGONFLY 1
				#endif


After doing this, we are going to modify ide/Builders (Please read my post above) and the we can make linking hack for the TRUE_OS. Is the True OS the most FreeBSD popular distro?

Sincerely,
Klugier


U++ - one framework to rule them all.
Re: Tarball issues [message #47421 is a reply to message #47420] Sat, 14 January 2017 23:21 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi both,

Thanks for looking into this issue.

From my point of view TrueOS is just a convenient way to quickly install FreeBSD with a usable desktop. Klugier: Please note that the BSD world is not anywhere nearly as fragmented as Linux world is. If FreeBSD is supported, the coverage is already more than adequate. OpenBSD support would be nice, but likely out of reach for now. Please read more on that below.

Supporting TrueOS as a separate system from FreeBSD is in my opinion both unnecessary and wasting energy. If TrueOS differs from FreeBSD in a bad way, just forget TrueOS. However, it would be nice to have FreeBSD working. When I get to the office on Monday, I will try to install a clean FreeBSD and test with that instead of TrueOS. (Or maybe someone have done it already???)

--

I also did a test installation of OpenBSD on Friday, but first found out that the default gcc version on OpenBSD is more or less about ten years old (4.2.x) and no way it's going to support C++11. Also, after installing clang -- which is eventually going to replace gcc on OpenBSD too -- I ran in trouble with problems on thread local storage not being supported. At least that's what the clang compiler thought when compiling Core. I could not really figure out if this is really the case with OpenBSD, or just a clang compatibility issue, but never the less, Upp is not going to work on OpenBSD without substantial effort I guess.

Thanks and best regards,

Tom
Re: Tarball issues [message #47422 is a reply to message #47416] Sun, 15 January 2017 00:47 Go to previous messageGo to next message
Sender Ghost is currently offline  Sender Ghost
Messages: 301
Registered: November 2008
Senior Member
amrein wrote on Sat, 14 January 2017 21:18
It's because freetype libraries on BSD are named differently (libttf.so* instead of libfreetype.so*). I found that running 'pkg info -l freetype'.

I guess, that you installed outdated version of FreeType from print/freetype FreeBSD port, which has libttf.so library. The libfreetype.so library installed by print/freetype2 FreeBSD port. Example for v2.7.1:
% pkg info -l freetype2 | grep /lib
	/usr/local/lib/libfreetype.a
	/usr/local/lib/libfreetype.so
	/usr/local/lib/libfreetype.so.6
	/usr/local/lib/libfreetype.so.6.13.0
	/usr/local/libdata/pkgconfig/freetype2.pc
% pkg-config freetype2 --libs
-L/usr/local/lib -lfreetype  
As I understood, the exported Makefile (including for nightly builds) is done for Linux (with flagLINUX). The exported Makefile for FreeBSD (with flagBSD and flagFREEBSD) has other contents. Take a look at configuration of current revision of uppsrc/CtrlCore package (or with using TheIDE), for example:
Toggle excerpt from uppsrc/CtrlCore/CtrlCore.upp file

Perhaps, you trying to create some universal solution and already know about this information.

There is a devel/upp FreeBSD port, which used for installation of release version. If you look at its contents, you may understand, that it adapts exported Makefile for FreeBSD, uses related configuration flags and generate files for build methods.

There is also a devel/upp-nightly port on the forum for some nightly revision, which was created for other purposes. I updated it to current 10703 revision and it builds fine (on FreeBSD 10.3).

[Updated on: Sun, 15 January 2017 01:12]

Report message to a moderator

Re: Tarball issues [message #47423 is a reply to message #47422] Sun, 15 January 2017 17:47 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
Well, great point. Freetype2 was already there. So I only had to add its path to LIBPATH in Makefile.in

LIBPATH = -L"/usr/X11R6/lib" -L"/usr/lib" -L"/usr/local/lib"

To summarize, from a clean install, here what I had to do to compile and run theide:
# As root, install all available updates
su
pc-updatemanager pkgupdate
# then reboot
shutdown -r now

# Install gtk2, freetype2, libnotify and llvm39 (clang++):
su
pkg install gtk2
pkg install freetype2
pkg install libnotify
pkg install llvm39
exit

# As standard user:
tar zxvf upp-x11-src-10703.tar.gz
cd upp-x11-src-10703
sed -i -e 's|LIBPATH = -L"/usr/X11R6/lib" -L"/usr/lib"|LIBPATH = -L"/usr/X11R6/lib" -L"/usr/lib" -L"/usr/local/lib"|g' uppsrc/Makefile.in
sed -i -e 's|\$\$|$$$$|g' uppsrc/Makefile.in
make


I don't know how to deal with flagBSD. I can't find it in U++ snapshots or in SVN. What I would like to see is packagers creating standard POSIX packages using as much as possible standardized installation procedures. I mean:
- spec file for rpm based distribution -> done
- debian source package for debian based distributions (standard source directory using debuild and not from binary using dpkg-deb) -> todo
- BSD like package -> todo (something similar as http://www.freshports.org/devel/upp)
- Easy terminal compilation (make, make install) -> partially done (works on Linux but will fail on BSD distributions without tricks)
- Windows package

Should we create a new topic where all packagers with svn access will share how they would like to build all this?
Re: Tarball issues [message #47424 is a reply to message #47423] Sun, 15 January 2017 17:50 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
I'm really a bad C++ programmer. I couldn't find where U++ duplicate the '$' character in file name when it create Makefiles.
Really, I need to improve my C++ skill.
Re: Tarball issues [message #47425 is a reply to message #47420] Sun, 15 January 2017 21:32 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
Klugier, I'm modifying a few scripts in Scripts directory. That way, U++ will build out of the box on BSD distributions.
But I still have a big problem: the need to fix Makefile generation with umk.

For now on, I do a manual fix with before running make:
sed -i -e 's|\$\$|$$$$|g' uppsrc/Makefile.in


I don't know how to fix umk. It needs to not just duplicate but quadruplicate the '$' character found in file names when it creates Makefile.
Re: Tarball issues [message #47426 is a reply to message #47422] Sun, 15 January 2017 21:37 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
Sender Ghost, I don't know an easy way to know that we are running on BSD like distributions.

'uname -s' will give me the operating system name, but there are a lot of BSD fork out there: https://en.wikipedia.org/wiki/List_of_BSD_operating_systems
and most of them don't even have BSD in their name.

I tried flagLINUX and flagBSD. Both configuration will compile up to the end (if the '$' bug in Makefile is fixed).

[Updated on: Sun, 15 January 2017 22:06] by Moderator

Report message to a moderator

Re: Tarball issues [message #47427 is a reply to message #47424] Sun, 15 January 2017 21:38 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1075
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
Hello,

In Makefile.in in 4 line there is following code:
Macro =  -DflagGUI -DflagMT -DflagGCC -DflagSHARED -DflagLINUX -DflagPOSIX


Then when we detects that our current operating system is BSD, the following line should have following form
Macro =  -DflagGUI -DflagMT -DflagGCC -DflagSHARED -DflagBSD -DflagPOSIX


Can we add there if and detects operating system in makefile. I am not big makefile expert, so I would like to ask?

To detect that we are running on BSD we can call following command:
[www@cb.vu]~> uname -a                                                                                                                                                                
FreeBSD cb.vu 7.1-STABLE FreeBSD 7.1-STABLE #2: Wed Jan 30 16:21:05 CET 2009 c@cb.vu:/usr/obj/usr/src/sys/CB  i386 


Alterantivly, we can do exactly like we do on Core, so detects with 'uname -s' that the operating system is Linux and treat all others like BSD. What do you think Amrein?

Sincerely,
Klugier


U++ - one framework to rule them all.

[Updated on: Sun, 15 January 2017 21:59]

Report message to a moderator

Re: Tarball issues [message #47428 is a reply to message #47427] Sun, 15 January 2017 22:13 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1075
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
One more alternative - using compiler version to detects operating system especially BSD:

For clang try:
clang++ -v
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64


For GCC try:
g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)


As you may notice, we are interesting in target field. For clang ("Target: x86_64-pc-linux-gnu") and for GCC "--target=x86_64-linux-gnu". Maybe it will help.


U++ - one framework to rule them all.
Re: Tarball issues [message #47429 is a reply to message #47425] Sun, 15 January 2017 22:33 Go to previous messageGo to next message
Klugier is currently offline  Klugier
Messages: 1075
Registered: September 2012
Location: Poland, Kraków
Senior Contributor
amrein wrote on Sun, 15 January 2017 21:32
Klugier, I'm modifying a few scripts in Scripts directory. That way, U++ will build out of the box on BSD distributions.
But I still have a big problem: the need to fix Makefile generation with umk.

For now on, I do a manual fix with before running make:
sed -i -e 's|\$\$|$$$$|g' uppsrc/Makefile.in


I don't know how to fix umk. It needs to not just duplicate but quadruplicate the '$' character found in file names when it creates Makefile.


Hello,

The MakeFile code base is hidden in following file ide/Builders/MakeFile.cpp. And probably you are interested in following function (line 11):
static String MakeSourcePath(const Vector<String>& dirs, String fn, bool raw, bool exporting)

Try to play with it - for example replace in fn. If it starts working just post your patch here - to discuss it before committing. You know how to build UMK from TheIDE?

I can try to modify this cpp file to support BSD, but probably I could do it until the next Saturday Sad

Sincerely,
Klugier


U++ - one framework to rule them all.
Re: Tarball issues [message #47430 is a reply to message #47429] Sun, 15 January 2017 22:59 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
Thank

I found what I need in uppsrc/ide/Core/Core.cpp.
The patch:
--- uppsrc/ide/Core/Core.cpp.OLD        2016-10-15 16:42:07.000000000 +0200
+++ uppsrc/ide/Core/Core.cpp    2017-01-15 22:57:18.174354625 +0100
@@ -78,7 +78,7 @@
        String out;
        for(; *fn; fn++)
                if(*fn == '$')
-                       out << '$' << '$';
+                       out << "$$$$";
                else
                        out << *fn;
        return out;
Re: Tarball issues [message #47431 is a reply to message #47425] Sun, 15 January 2017 23:09 Go to previous messageGo to next message
Sender Ghost is currently offline  Sender Ghost
Messages: 301
Registered: November 2008
Senior Member
amrein wrote on Sun, 15 January 2017 20:32
For now on, I do a manual fix with before running make:
sed -i -e 's|\$\$|$$$$|g' uppsrc/Makefile.in

I don't know how to fix umk. It needs to not just duplicate but quadruplicate the '$' character found in file names when it creates Makefile.

I tried following sed patch instead:
% sed -i '.bak' -e '/.tpp/s|\$|$$|g' Makefile
But this makes Makefile incompatible with GNU make (gmake on FreeBSD):
% gmake
<...>
gmake: *** No rule to make target 'ide/app.tpp/About$$en-us.tppi', needed by '_out/ide/CLANG-Bsd-Clang-Freebsd-Gui-Main-Mt-Posix-Shared/About.o'.  Stop.
I guess, this is not a solution for current (umk/theide) generator of exported Makefile, because on other platforms GNU make may be used. Otherwise, possible to generate BSD and GNU compatible make files with different names: BSDmakefile and GNUmakefile. The GNU make may use GNUmakefile and BSD make may use BSDmakefile first.

The mentioned issue was partially fixed with using compiler generated dependency information, some patch for which I attached in another topic (as a fix for another issue). For example, Clang compiler (on FreeBSD 10.3) escapes "$" character(s) to "$$" for dependencies:
% touch build_info.h
% c++ -MM -c -pipe -Wno-logical-op-parentheses -std=c++11 -DflagGUI -DflagMT -DflagCLANG -DflagSHARED -DflagPOSIX -DflagBSD -DflagFREEBSD -DflagNOGTK -I./ `pkg-config freetype2 -cflags` ide/About.cpp | grep .tpp
  Core/topic_group.h ide/app.tpp/all.i ide/app.tpp/About$$en-us.tppi \
  ide/app.tpp/AdvancedReplace$$en-us.tppi \
  ide/app.tpp/AndroidBuilder$$en-us.tppi ide/app.tpp/Assist$$en-us.tppi \
  ide/app.tpp/BSD$$en-us.tppi ide/app.tpp/Blitz$$en-us.tppi \
  ide/app.tpp/ConfiguringPackagesAssemblies$$en-us.tppi \
  ide/app.tpp/Contact$$en-us.tppi ide/app.tpp/Cpp$$en-us.tppi \
  ide/app.tpp/CrossComp$$en-gb.tppi ide/app.tpp/Files$$en-us.tppi \
  ide/app.tpp/FindFile$$en-us.tppi ide/app.tpp/Flags$$en-us.tppi \
  ide/app.tpp/GPL$$en-us.tppi ide/app.tpp/GettingStarted$$en-us.tppi \
  ide/app.tpp/GettingStarted$$ru-ru.tppi ide/app.tpp/IconDes$$en-us.tppi \
  ide/app.tpp/IntroductionToUPP$$en-us.tppi ide/app.tpp/Keys$$en-us.tppi \
  ide/app.tpp/NewProject$$en-us.tppi \
  ide/app.tpp/PackageTemplates$$en-us.tppi \
  ide/app.tpp/PackagesAssembliesAndNests$$en-us.tppi \
  ide/app.tpp/PackagesAssembliesAndNests$$ru-ru.tppi \
  ide/app.tpp/Sponsor$$en-us.tppi ide/app.tpp/Topic$$en-us.tppi \
  ide/app.tpp/cmdline$$en-us.tppi ide/app.tpp/esc$$en-us.tppi \
  ide/app.tpp/importext$$en-us.tppi ide/app.tpp/index$$en-us.tppi \
  ide/app.tpp/index$$ru-ru.tppi ide/app.tpp/install$$en-us.tppi \
  ide/app.tpp/install$$ru-ru.tppi ide/app.tpp/macros$$en-us.tppi \
  ide/app.tpp/special$$en-us.tppi ide/app.tpp/umk$$en-us.tppi \
  ide/app.tpp/upp$$en-us.tppi build_info.h
This works for BSD make just for first run, while dependency information wasn't generated yet (which may be enough for first build without interruptions).

The other possible solution is to rename directories/files with "$" characters, but this also may require to change other parts of source code.

The devel/upp FreeBSD port just uses gmake to build release version, which doesn't have this issue.

[Updated on: Mon, 16 January 2017 13:56]

Report message to a moderator

Re: Tarball issues [message #47432 is a reply to message #47427] Sun, 15 January 2017 23:37 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
Quote:
we can do exactly like we do on Core, so detects with 'uname -s' that the operating system is Linux and treat all others like BSD. What do you think Amrein?


It's a solution. For that, I could add this in domake:
posix_os=$(uname -s)
if [ "$posix_os" != "Linux" ]
then
  sed -i -e 's/flagLINUX/flagBSD/g' uppsrc/Makefile.in
  sed -i -e 's/flagLINUX/flagBSD/g' uppsrc/uMakefile.in
fi

But there're many POSIX OS out there https://en.wikipedia.org/wiki/POSIX
If we use this solution, it won't be clean.

Is there a flag for clang++? I can see flagGCC in Makefiles.

Mirek, if my patch for Core.cpp is ok and if all goes well for tomorrow snapshots, what are the remaining things to do before releasing U++ stable 2017.1?
Re: Tarball issues [message #47433 is a reply to message #47431] Mon, 16 January 2017 00:51 Go to previous messageGo to next message
amrein is currently offline  amrein
Messages: 278
Registered: August 2008
Location: France
Experienced Member
I tested gmake on TrueOS and as you said it failed with '$$$$'.

Gmake on TrueOS (4.2) is newer than on my computer (4.1).

And so:
- make on BSD won't work without '$$$$'
- gmake 4.2 on BSD won't work with it
. gmake 4.1 on Fedora will work with or without it.

This is a bit weird.
Re: Tarball issues [message #47437 is a reply to message #47430] Mon, 16 January 2017 11:20 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
amrein wrote on Sun, 15 January 2017 22:59
Thank

I found what I need in uppsrc/ide/Core/Core.cpp.
The patch:
--- uppsrc/ide/Core/Core.cpp.OLD        2016-10-15 16:42:07.000000000 +0200
+++ uppsrc/ide/Core/Core.cpp    2017-01-15 22:57:18.174354625 +0100
@@ -78,7 +78,7 @@
        String out;
        for(; *fn; fn++)
                if(*fn == '$')
-                       out << '$' << '$';
+                       out << "$$$$";
                else
                        out << *fn;
        return out;


Applied, now running nightly build.
Previous Topic: umk on U++ server is obsolete and creates bad Makefiles
Next Topic: Archlinux AUR
Goto Forum:
  


Current Time: Fri Mar 29 01:41:03 CET 2024

Total time taken to generate the page: 0.01752 seconds