Skip to main content

Posts

Showing posts with the label POSIX

Creating a patch for GNU GCC using Git

Overview and Target Audience The GNU GCC project followed a blend of a traditional method with contemporary git tools when it comes to contributing code, making the experience unique from some other, git-based projects. This blog post will explore different aspects of the process, helpful commands, and various scripts that would make the experience more pleasent for new contributors. While this blog aims to help new contributors get acustomed to the GNU GCC code culture and make contributing easier, it must be stressed that this is not in any way in-depth exploration of the process. This should help you put your first foot forward; the community will help you take the rest of the steps from that point on. This post also assumes the user is in a POSIX environment (e.g. Linux, FreeBSD). Git and GNU As stated in this phoronix post , GNU GCC made a full transition to git early 2020. As of this writing, the community seems to be adjusting to the new tools. GNU GCC hosts its own git serve...

Project: Boost-free Goblins, part 3

Ready, Aim, and Fire After the battle-cry , and then calming down to make some preparation , I decided to take the shot. The target: boost::shared_ptr. To Action A quick search turns up that shared_ptr is supported in the STL's memory library since c++11. Well, that seems like an easy task. Let's take our script for a spin. tools/boostrm.sh shared_ptr memory Now I have a bunch of std::shared_ptr replacing the boost variant. Seems like everything is in good order. After pushing it into the github to have Travis CI do the honors of compiling it, turns out, some boost::weak_ptr, apparently derived from boost::shared_ptr, was being casted into boost::shared_ptr, and they are not compatible with std::shared_ptr since that's not what they inherited. Well, after a bit of research, it seems the weak_ptr has a STL version. It seems like weak_ptr needs to go, too. tools/boostrm.sh weak_ptr memory After another push into github, and another build run by Travis CI, it tu...

Project: Boost-free Goblins, Part 2

Last time at the goblin_camp The mad developers went on a warpath to rinse away Boost from the goblins. Loud yelling and crying was involved, 52 of them. But now that all the yelling is out of the way, how should we do this? Repetition, repetition, ... I am personally a very lazy programmer. If I can make computer do the job for me, I would have the computer do the job for me. While hunting down every instance of a library manually is doable in small number, as it was for cstdint, Other Boost libraries are more widely used and require much more effort scanning the text. Text. Text. Well, if we are talking about text-manipulation in sh ... Scripting my problem away My beloved hobby tools If it is not apparently already, I love automating tasks, and UNIX shell scripting had been my go-to solution for any binary scripting needs, especially in the days before I learned to program. This problem can be solved quite easily using few lines of scripts. Caveat We will be making a s...

Project: Boost-free goblins

The headache: Boost Don't take me wrongly: Boost library is a powerful set of tools for bleeding-edge technology. Much of it gets absorbed into the C++ Standard Libraries. The problem lies in our project being inactive for 7 years, which means it is relying on a library that is 7 years behind. Installing such an old library is a chore, and securing a pre-built package is problematic at best. The project is even incompatible with the later versions of Boost. It may have once given the original developers a powerful technology to propel their project in the past, but now we are stuck with clock stopped at 2011. Along with libtcod being stuck also in 2012, dealing with Boost is critical to bringing the project up-to-date. Options There are several ways to address the issue. Option 1 : Upgrade We can read each related source code, research how Boost has modified the relevant function calls, and either fix the expected return type or required input type, This may lead to mor...

Intel Parallel Studio 2019 meet Cygwin

Introduction Intel Parallel Studio provides pre-configured bat to run command line interface using Windows CMD.  The command is called 'icl'. To some, this is satisfactory.  To me, I need a better shell. Cygwin satisfies my need for a UNIX shell.  This post is about setting up a Windows system to successfully compile a simple code using Cygwin and icl, Intel C++. Largely, I had two issues: one minor, quality-of-life issue, the other critical. Quality-of-Life issue The minor issue is that I wanted to simply double-click on the icon to open up a console with appropriate environment.  The provided bat file does that, but for CMD.  I wanted to gear that toward Cygwin bash environment.  The obvious way is to open up the CMD through the bat, and then execute Cygwin.bat from the Cygwin installation folder. To have one-click icon to open up a prepared Cygwin bash console, we must provide appropriate arguments to the shortcut. Method Locate the Intel...