- Download the attached file pmmain.tgz
- If you already have a directory "pmmain", rename it it to avoid clobbering files
- Extract the tar file with the command "tar -xvzf pmmain.tgz"
- It will create "pmmain/" and various files and subdirectories
- Please read the "pmmain/utils/readme.txt" file before proceeding further
- If you've customized your previous setup, you should be able to copy over the changed files from your old, renamed, "pmmain"
A linux build framework for Pale Moon
Moderator: trava90
Forum rules
This board is for technical/general usage questions and troubleshooting for the Pale Moon browser only.
Technical issues and questions not related to the Pale Moon browser should be posted in other boards!
Please keep off-topic and general discussion out of this board, thank you!
This board is for technical/general usage questions and troubleshooting for the Pale Moon browser only.
Technical issues and questions not related to the Pale Moon browser should be posted in other boards!
Please keep off-topic and general discussion out of this board, thank you!
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
Based on the questions I've gotten, I've updated the process. The tar file "pmmain.tgz" now contains the entire "pmmain/" directory structure. Even though the final result is almost identical, less setup work is required by the end-user, which will simplify things. Install instructions....
You do not have the required permissions to view the files attached to this post.
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way
Re: A linux build framework for Pale Moon
Yup, that worked. I had native/ under utils/ instead of under pmmain/. Got all the links now. Going to try building on this laptop. My desktop is having compiler issues for some reason.Walter Dnes wrote:Here's what the directory layout should look like...Sasquatch wrote:I can't get the makelinks script to run. I cd'd into ./native and created the link to pmsrc. But when I tried "../utils/makelinks" I got an error saying no such file or directory. But if I cd into ./utils I can run the script with no problem. Except, obviously, it errors out rather than creating links in the same directory as the files it is trying to link. I end up with a link in ./native to ./native, but nothing else. I don't know what's going wrong. A missing dependency shouldn't cause problems with creating symlinks, should it? I doubt I'll be able to build on this laptop, but I at least wanted to see if I could create the environment. Bedtime anyhow. I'm probably too tired to be messing with this stuff at the moment.
Code: Select all
<top level> pmmain/
Code: Select all
<2nd level> utils/ native/ machine2/ machine3/ ("machine2", "machine3" etc are for any other builds you want to do) From here, execute "utils/getcode 27.0". This creates pmsrc/ with latest 27.0.whatever source Then "cd native"
That should get you going. Looking back, I think I can do a better setup, making things easier. I'll have to update the readme.txt to reflect the changes. Expect a version 2 soon. Sorry about not being clear enough. The hardest part of documenting stuff is saying the things "that go without saying".Code: Select all
<3rd level is inside "native/"> Execute the 2 commands ln -s ../pmsrc pmsrc ../utils/makelinks
I've written a few tutorials for the GIMP crowd. I'm familiar with the problem of trying to be clear and complete. And especially doing so without sounding like you're talking down to people. It's tough to decide how basic the information should be. And it seems no matter how basic you make it there's always going to be one, "but how do I turn the computer on?" question.
Re: A linux build framework for Pale Moon
Hit a minor (I hope) snag while installing the autoconf-2.13 dependency. Downloaded the source and followed the instructions from here. Got to 'make' and got this error;
It's not the first time I've seen a "no rule" error. But I've never found an answer to the riddle. Any thoughts? Seems especially baffling since I just removed autoconf.info.
Code: Select all
make: *** No rule to make target 'autoconf.texi', needed by 'autoconf.info'. Stop.
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
The short thread at http://askubuntu.com/questions/635292/a ... ake-errors discusses this error (for 2.68). The quick-n-dirty solution is to use "make -k" (long form "make --keep-going"). You won't have autoconf documentation, but otherwise it should work.Sasquatch wrote:Hit a minor (I hope) snag while installing the autoconf-2.13 dependency. Downloaded the source and followed the instructions from here. Got to 'make' and got this error;It's not the first time I've seen a "no rule" error. But I've never found an answer to the riddle. Any thoughts? Seems especially baffling since I just removed autoconf.info.Code: Select all
make: *** No rule to make target 'autoconf.texi', needed by 'autoconf.info'. Stop.
What distro are you using? Gentoo allows "slots" for simultaneous different versions, and CentOS has a separate "autoconf213" package that can be installed alongside the regular autoconf.
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way
Re: A linux build framework for Pale Moon
'make -k' gives me the same error. Tried the long form '--keep-going', same error. And now I get an additional error.
Ended up going into the Makefile and manually editing it. I changed all references to 'autoconf.texi' to 'autoconf213.texi'. I thought the instructions I followed were supposed to do that. Apparently they didn't. Seems that did the trick. I know the idea is to keep this ancient autoconf from interfering with the new version. So I definitely didn't want to overwrite the new one.
Code: Select all
make: Target 'all' not remade because of errors.]
I run Salix. It's a Slackware-based distro. Theoretically it allows me to also install any RPM package, which should mean pretty much any program imaginable. But I've never gotten that to work. Anyhow, I'm working on getting competent at installing from source. I'm tired of relying on package managers and distro devs to spoon-feed me the programs and info I want. When I finish my workstation build it will get a fully custom LFS install so that everything is exactly the way I want it. And I mean custom right down to ignoring the archaic FHS and putting things where they make sense for a single-user system. I have to gain some education before I can accomplish that. This thread has been quite helpful as far as that education goes.Walter Dnes wrote:What distro are you using? Gentoo allows "slots" for simultaneous different versions, and CentOS has a separate "autoconf213" package that can be installed alongside the regular autoconf.
Re: A linux build framework for Pale Moon
Okay, having a bit of deja vu now. Dropped to runlevel 3 to let the build have as much RAM as possible, ran 'time ./build', about a minute in I got an error telling me the C compiler cannot create executables. I've seen this on my desktop, and now on the laptop. From what I've gathered this is probably a sign I'm missing some dev tools or headers. But I'm not sure how to remedy the situation. The package manager says I have all the gcc and binutils stuff available. Any thoughts on what to look for or how to diagnose what's missing?
Re: A linux build framework for Pale Moon
Tried it again after rebooting and checking whatever I could think of to check. This is the full error I get.
Code: Select all
0:42.96 configure: failed program was:
0:42.96
0:42.96 #line 3301 "configure"
0:42.96 #include "confdefs.h"
0:42.96
0:42.96 main(){return(0);}
0:42.97 configure: error: installation or configuration problem: C compiler cannot create executables.
0:42.97 *** Fix above errors and then restart with\
0:42.97 "/usr/bin/gmake -f client.mk build"
0:42.97 ~/Build/pmmain/pmsrc/client.mk:361: recipe for target 'configure' failed
0:42.97 gmake[2]: *** [configure] Error 1
0:42.97 ~/Build/pmmain/pmsrc/client.mk:375: recipe for target '~/Build/pmmain/native/pmbuild/Makefile' failed
0:42.97 gmake[1]: *** [~/Build/pmmain/native/pmbuild/Makefile] Error 2
0:42.97 client.mk:171: recipe for target 'build' failed
0:42.97 gmake: *** [build] Error 2
0:42.98 0 compiler warnings present.
real 1m19.960s
user 0m21.418s
sys 0m13.270s
[native]$ nohup: redirecting stderr to stdout
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
The only suggestion I can come up with is that you build a separate gcc compiler "with all the goodies" and try that.. Hopefully, your current gcc compiler has enough functionality to build another gcc compiler. Part 1 can take an hour or longer, depending on the machine. Let's install to "$HOME/gcc494" to avoid root/sudo requirements. The following instructions are generic. You can substitute another valid GCC version number to build another version than 4.9.4.Sasquatch wrote:Okay, having a bit of deja vu now. Dropped to runlevel 3 to let the build have as much RAM as possible, ran 'time ./build', about a minute in I got an error telling me the C compiler cannot create executables. I've seen this on my desktop, and now on the laptop. From what I've gathered this is probably a sign I'm missing some dev tools or headers. But I'm not sure how to remedy the situation. The package manager says I have all the gcc and binutils stuff available. Any thoughts on what to look for or how to diagnose what's missing?
Code: Select all
#
# Instructions from https://gcc.gnu.org/wiki/InstallingGCC
wget http://ftpmirror.gnu.org/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
tar xjf gcc-4.9.4.tar.bz2
#
# To get gmp, mpc, mpfr, and isl libs
# You *MUST* run this script from the top-level GCC source dir
cd gcc-4.9.4
contrib/download_prerequisites
#
# You *MUST NOT* run ./configure from the toplevel GCC source dir
mkdir gcc-build && cd gcc-build
#
# Your preferred options may differ, e.g. extra languages to build. If
# building 5.0 or higher, it is strongly recommended to add the option
# --with-default-libstdcxx-abi=gcc4-compatible
../configure --prefix=$HOME/gcc494 \
--disable-multilib \
--enable-libstdcxx-threads \
--enable-libstdcxx-time \
--enable-shared \
--enable-__cxa_atexit \
--disable-libunwind-exceptions \
--disable-libada
#
# I believe your laptop has 2 cores
make -j3
make install
Code: Select all
export GCCX_ROOT=$HOME/gcc494
export PATH=$GCCX_ROOT/bin:$PATH
export MANPATH=$GCCX_ROOT/share/man:MANPATH
export INFOPATH=$GCCX_ROOT/share/info:$INFOPATH
export LD_LIBRARY_PATH=$GCCX_ROOT/lib64:$GCCX_ROOT/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$GCCX_ROOT/lib64:$GCCX_ROOT/lib:$LD_RUN_PATH
export LIBRARY_PATH=$GCCX_ROOT/lib64:$GCCX_ROOT/lib:$LIBRARY_PATH
export INCLUDE_PATH=$GCCX_ROOT/include:$INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$GCCX_ROOT/include:$CPLUS_INCLUDE_PATH
export C_INCLUDE_PATH=$GCCX_ROOT/include:$C_INCLUDE_PATH
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way
Re: A linux build framework for Pale Moon
I think I have a simpler answer to the problem. I discovered what I screwed up. I successfully compiled a small solitaire game. Then I decided I wanted to recompile it with clang instead of gcc. So I did and the build failed with the same error as before. So I changed to
It appears adding the full path is important and I just added the name. I'm going to try again now that I've rebooted the machine and the ENV are all reset.
Code: Select all
export CC=clang
Code: Select all
export CC=gcc
Re: A linux build framework for Pale Moon
I'm going to get to this tonight after the wife goes to bed. Hard for me to do much during the days (well, nights) I work. Twelve-hour shifts tend to drain a man's mental energy. I did try reinstalling gcc from the repos, no luck. I'm also wondering now if the continued problem isn't because the build environment is tainted with files from earlier attempts. I know there's a way to clean it up. I'll check into that as well.Walter Dnes wrote: The only suggestion I can come up with is that you build a separate gcc compiler "with all the goodies" and try that..
And I greatly appreciate all your help with this. Seems these days most people just shout "RTFM" or "Google it" when you ask a question. That you are taking time to help me with this says a great deal about your character. Especially since the problem is not with your code.
Re: A linux build framework for Pale Moon
OK, I just now got time to get back to this, trying to build 27.0.2 now. Got the source into pmsrc OK; got and unpacked utils; created my native, linked pmsrc, ran ../utils/makelinks, and so far all looking good; created my mozconfig.txt file. So far, so good. Verified correct autoconf (2.13) is available. Verified correct python (2.7) is installed and preferred. But when I try to build:
It's still blowing up the moment mach is invoked.
Any ideas....?
Code: Select all
babylon5:alaric:~/tmp/native:18 $ ./build
Error running mach:
['clobber']
The error occurred in mach itself. This is likely a bug in mach itself or a
fundamental problem with a loaded module.
Please consider filing a bug against mach by going to the URL:
https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=mach
If filing a bug, please include the full output of mach, including this error
message.
The details of the failure are as follows:
AssertionError
File "/home/alaric/tmp/pmsrc/python/mach/mach/main.py", line 344, in run
return self._run(argv)
File "/home/alaric/tmp/pmsrc/python/mach/mach/main.py", line 432, in _run
instance = cls(context)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/base.py", line 583, in __init__
detect_virtualenv_mozinfo=detect_virtualenv_mozinfo)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/base.py", line 165, in from_environment
config = loader.read_mozconfig(mozconfig, moz_build_app=current_project)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/mozconfig.py", line 237, in read_mozconfig
parsed = self._parse_loader_output(output)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/mozconfig.py", line 347, in _parse_loader_output
assert not in_variable
Error running mach:
['build']
The error occurred in mach itself. This is likely a bug in mach itself or a
fundamental problem with a loaded module.
Please consider filing a bug against mach by going to the URL:
https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=mach
If filing a bug, please include the full output of mach, including this error
message.
The details of the failure are as follows:
AssertionError
File "/home/alaric/tmp/pmsrc/python/mach/mach/main.py", line 344, in run
return self._run(argv)
File "/home/alaric/tmp/pmsrc/python/mach/mach/main.py", line 432, in _run
instance = cls(context)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/base.py", line 583, in __init__
detect_virtualenv_mozinfo=detect_virtualenv_mozinfo)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/base.py", line 165, in from_environment
config = loader.read_mozconfig(mozconfig, moz_build_app=current_project)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/mozconfig.py", line 237, in read_mozconfig
parsed = self._parse_loader_output(output)
File "/home/alaric/tmp/pmsrc/python/mozbuild/mozbuild/mozconfig.py", line 347, in _parse_loader_output
assert not in_variable
Any ideas....?
Re: A linux build framework for Pale Moon
I note by the way that everything worked fine up as far as 26.5.0. But something seems to have fundamentally changed in the build for 27.0 that is not working on my system, and I don't understand Python enough to know why it's failing.
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
You're running in $HOME/tmp, not in physical /tmp?Unix Ronin wrote:It's still blowing up the moment mach is invoked.
Any ideas....?
One booby-trap I run into in Gentoo is that python versions 2.x and 3.x are simultaneouslly installed, and the default is 3.x. After the install I have to manually select 2.x as the default. You may have already done this, but what is the output of...
Code: Select all
python --version
Code: Select all
tar -chzf files.tgz build customize mozconfig.txt
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way
Re: A linux build framework for Pale Moon
Correct, yes. My system /tmp is a tmpfs and I don't do builds in it.
babylon5:alaric:~:1 $ python --version
Python 2.7.12
gcc is version 4.9.3. files.tgz is attached. I didn't create a customize file.
babylon5:alaric:~:1 $ python --version
Python 2.7.12
gcc is version 4.9.3. files.tgz is attached. I didn't create a customize file.
You do not have the required permissions to view the files attached to this post.
Re: A linux build framework for Pale Moon
Finally! What a mess that was. It took all night for my old compiler to compile the new compiler. But that solved the problem. I guess the compiler that came with the distro was just missing something. I don't know if that's by design or accident. Anyhow, the build script is running now. I expect it to fail again because of the limited RAM on this laptop. But at least that's a known issue. And now I know I need to update the compiler on my desktop before I try doing anything fancy... like compiling programs.
*EDIT*
The build did fail again. I don't know if it was lack of RAM or what. This is the printout from the end of the stdout;
*EDIT*
The build did fail again. I don't know if it was lack of RAM or what. This is the printout from the end of the stdout;
Code: Select all
13:15.18 Unified_cpp_editor_libeditor2.o
37:16.15 g++: internal compiler error: Killed (program cc1plus)
37:25.82 0x40c91c execute
37:25.82 ../../gcc/gcc.c:2854
37:25.82 Please submit a full bug report,
37:25.82 with preprocessed source if appropriate.
37:25.82 Please include the complete backtrace with any bug report.
37:25.82 See <http://gcc.gnu.org/bugs.html> for instructions.
37:25.82
37:26.02 In the directory /home/neanderthal/Build/pmmain/native/pmbuild/editor/libeditor
37:26.03 The following command failed to execute properly:
37:26.03 /home/neanderthal/gcc494/bin/g++ -o Unified_cpp_editor_libeditor1.o -c -I../../dist/stl_wrappers -I../../dist/system_wrappers -include /home/neanderthal/Build/pmmain/pmsrc/config/gcc_hidden.h -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DMOZ_GLUE_IN_PROGRAM -DAB_CD=en-US -DNO_NSPR_10_SUPPORT -I/home/neanderthal/Build/pmmain/pmsrc/editor/libeditor -I. -I/home/neanderthal/Build/pmmain/pmsrc/dom/base -I/home/neanderthal/Build/pmmain/pmsrc/editor/txmgr -I/home/neanderthal/Build/pmmain/pmsrc/extensions/spellcheck/src -I/home/neanderthal/Build/pmmain/pmsrc/layout/generic -I/home/neanderthal/Build/pmmain/pmsrc/layout/style -I/home/neanderthal/Build/pmmain/pmsrc/layout/tables -I/home/neanderthal/Build/pmmain/pmsrc/layout/xul -I../../dist/include -I/home/neanderthal/Build/pmmain/native/pmbuild/dist/include/nspr -I/home/neanderthal/Build/pmmain/native/pmbuild/dist/include/nss -fPIC -DMOZILLA_CLIENT -include ../../mozilla-config.h -MD -MP -MF .deps/Unified_cpp_editor_libeditor1.o.pp -Wall -Wempty-body -Woverloaded-virtual -Wsign-compare -Wwrite-strings -Wno-invalid-offsetof -Wcast-align -O2 -march=native -mfpmath=sse -floop-parallelize-all -fpredictive-commoning -ftree-loop-distribution -ftree-vectorize -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-math-errno -std=gnu++0x -pthread -pipe -DNDEBUG -DTRIMMED -g -freorder-blocks -O2 -fomit-frame-pointer /home/neanderthal/Build/pmmain/native/pmbuild/editor/libeditor/Unified_cpp_editor_libeditor1.cpp
37:26.08 /home/neanderthal/Build/pmmain/pmsrc/config/rules.mk:936: recipe for target 'Unified_cpp_editor_libeditor1.o' failed
37:26.10 gmake[5]: *** [Unified_cpp_editor_libeditor1.o] Error 1
37:26.10 gmake[5]: *** Deleting file 'Unified_cpp_editor_libeditor1.o'
37:26.10 gmake[5]: *** Waiting for unfinished jobs....
38:03.18 BatteryManager.o
41:08.51 /home/neanderthal/Build/pmmain/pmsrc/config/recurse.mk:74: recipe for target 'editor/libeditor/target' failed
41:08.51 gmake[4]: *** [editor/libeditor/target] Error 2
41:08.52 gmake[4]: *** Waiting for unfinished jobs....
41:10.09 Unified_cpp_widget1.o
41:49.51 libdom_battery.a.desc
41:58.66 Unified_cpp_widget2.o
47:24.50 libwidget.a.desc
47:28.55 /home/neanderthal/Build/pmmain/pmsrc/config/recurse.mk:36: recipe for target 'compile' failed
47:28.56 gmake[3]: *** [compile] Error 2
47:29.17 /home/neanderthal/Build/pmmain/pmsrc/config/rules.mk:541: recipe for target 'default' failed
47:29.17 gmake[2]: *** [default] Error 2
47:29.72 /home/neanderthal/Build/pmmain/pmsrc/client.mk:398: recipe for target 'realbuild' failed
47:29.72 gmake[1]: *** [realbuild] Error 2
47:29.77 client.mk:171: recipe for target 'build' failed
47:29.77 gmake: *** [build] Error 2
47:30.52 46 compiler warnings present.
nohup: redirecting stderr to stdout
real 47m56.901s
user 18m53.510s
sys 2m24.449s
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
I've modified build and mozconfig.txt, and attached them as files2.tgz. The changes are...Unix Ronin wrote:Correct, yes. My system /tmp is a tmpfs and I don't do builds in it.
babylon5:alaric:~:1 $ python --version
Python 2.7.12
gcc is version 4.9.3. files.tgz is attached. I didn't create a customize file.
- build Clutching at straws here... in the past, the build process used to call "make" directly, rather than "mach". I've replaced the calls to "mach" with "make" calls to hopefully sidestep the "mach" problems..
- mozconfig.txt Simplified the CFLAGS line.
- You do not need "-mcx16 -mpopcnt"; it's implied by the "-march=whatever"
- Removed the "graphite" optimization options. Graphite optimizations were not that great in GCC 4.9.3
- Changed to "-march=core2"; more about that later
A core2 isn't quite as powerful as an amdfam10, but it's better than a pentium4. If we can get this far, I have some ideas for getting an amdfam10 build working, but first, we have to walk before we can run. The amdfam10 build dies on me during the packaging stage.
You do not have the required permissions to view the files attached to this post.
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way
Re: A linux build framework for Pale Moon
Code: Select all
$ palemoon -v
Moonchild Productions Pale Moon 27.0.3
Since Pale Moon wasn't installed on this desktop I couldn't just replace the binary. I had to install the SlackBuild of 25.8 first so I had all the ancillary files and directories. Then I replaced the binary. As you can see, it's up and running. I just wish I had diagnosed the problem earlier so I could have avoided all the unnecessary questions here. Sorry about that.
If you're curious, the -march= on this box is k8-sse3.
Re: A linux build framework for Pale Moon
@Walter, this got me a different and much more terse error:
babylon5:alaric:~/tmp/native:10 $ tar xvf ../files2.tgz
build
mozconfig.txt
babylon5:alaric:~/tmp/native:11 $ ./build
client.mk:117: *** missing separator. Stop.
The missing separator appears to be in MOZCONFIG_CONTENT.
babylon5:alaric:~/tmp/native:10 $ tar xvf ../files2.tgz
build
mozconfig.txt
babylon5:alaric:~/tmp/native:11 $ ./build
client.mk:117: *** missing separator. Stop.
The missing separator appears to be in MOZCONFIG_CONTENT.
Re: A linux build framework for Pale Moon
I cannot shake the feeling that the underlying problem here is that there is some Python issue that is causing mach to blow technicolor chunks, and yet not affecting anything else. Gentoo uses Python a lot, and everything else is working perfectly. It is a mystery to me why mach is failing.
-
- Astronaut
- Posts: 652
- Joined: 2015-07-30, 20:29
- Location: Vaughan, ON, Canada
Re: A linux build framework for Pale Moon
Sorry, I'm out of ideas. I'm on Gentoo also, and native builds work fine here.
There's a right way
There's a wrong way
And then there's my way
There's a wrong way
And then there's my way