Skip to main content

Building Mozilla Firefox

Trying to build Mozilla Firefox was such an experience. I have mixed feelings about if it's a good or bad one but nonetheless, I will share my experience.

I built mine on my macbook pro running version 10.12. The things I had and/or installed were the following:
-Terminal
-Xcode
-Homebrew
-Python
-Rust
-Mozilla Firefox Code

Downloading the Mozilla Firefox code was the simplest part, it took long but it was simple. The real challenge was trying to compile the code. The amount of time it takes to successfully build it is over an hour. Imagine reaching the end of the compilation, seeing that there is an error, and the compiler stopping. This was the case for six days! It took a long time to get this working.

At first I thought there was permission issues so I tried building with sudo. This was not the right thing to do as it messed up my future attempts to recompile the code. I was told to remove the object directory and start again without sudo.

The next thing that was suggested to me was to install or reinstall Rust. I thought I installed it already but it turned out that i didn't. I installed it and tried recompiling again. Like all the other times, it would go on and on and on with complete failure.

It turned out that I didn't actually have rust installed so I went ahead and installed it. I tried running again and I still got nothing. The errors I was getting were:

error: 'stdlib.h' file not found

/usr/local/Cellar/llvm/5.0.0/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found, err: true

/usr/local/Cellar/llvm/5.0.0/include/c++/v1/stdlib.h:94:15: fatal error: 'stdlib.h' file not found, err: true

/usr/local/Cellar/llvm/5.0.0/include/c++/v1/stdlib.h:94:15: fatal error: 'stdlib.h' file not found, err: true

After giving up and turning to my teacher for help, a student who literally just solved the same issue before my eyes was just standing there. The teacher asked him to help me and he said run this simple line in terminal. 

Xcode-select --install

I said to him, I already have terminal, he said, "So did I, but this worked for me." After running it, it prompted a gui dialog asking me to accept and install some things. After that, I deleted my object folder for one last time and I recompiled. Sure enough, after an hour, it compiled.

The odd thing is that even though it successfully compiled, the amount of warnings that were flying by in the terminal was significant. There are so many warnings. It's unusual to see something work with hundreds of warnings, but it works so I'm not complaining.

Overall, it was a good experience and I couldn't have done without my classmates and teachers help. They were a crucial part in my success. Working on an open source project with a community is the best way to work. Individual progress can be achieved, but community is greater by a long shot.

Comments

Popular posts from this blog

Creating My First Repo

For my Open Source class at school, I had a lab to create a repo. This was my first repo ever and it was very fun to do. I had very detailed instructions on what to do and I got the hang of it very fast. It's interesting how open source works. I chose to use the Rust library to work on the lab. The lab is a multi step lab and will be added onto in the upcoming weeks. I had to design a library for obtaining file info. The best part about open source is that it is open source! Meaning as long as I follow the license rules of other projects, I can essentially reuse their code. Instead of reinventing the wheel, I can build on what already exists. And that's the power of open source. The next step for me is to use continuous integration in my project. I have never done this and it will be a good experience and it will be very valuable to learn because it is something that can be used in my future projects. I will talk about it more in my next blog.

Automated Testing

Automated testing is a very useful feature that is simple to implement in any open source project. It allows the testing to be automated to ensure that nothing will break when things are changed. In the open source world, code is changed quite often so having automated testing can make it easy to track and manage errors and we can know if the code is properly written to pass the tests. Overall, it is very beneficial in open source programming. Travis CI makes it very easy to link your Github page and the repos on it. It is very easy to get started and I would recommend it to everyone! I always used to do my testing by outputting the results and comparing it with whatever I had in my head, now, it does it all on it's own.

Atom, My New Code Editor

Recently I started looking into a couple code editors for school. There were two that caught my attention; Atom and Visual Studio Code. After playing around with both of them, I decided to stick with one. Overall, they do similar things, but my decision is solely based on my bias. I personally am not a fan of Microsoft's software so I was not motivated to experiment with Visual Studio Code. Atom is a free to use code editor and can be downloaded at  https://atom.io /. The interface by default is dark, and it looks really nice in my opinion, but it can easily be changed by going into Settings>Themes It is really easy to customize it to how you want it to look. There are many things that can be changed, one controversial one being the spacing between tabs. It is really easy to get started with Atom. As soon as you start the program, you are greeted with a welcome page and we can easily start to edit anything we've been working on. The best part about Atom is that...