Main menu:

Sponsoring

Please consider a small donation:

 

 

Or you can donate bitcoin:

 

Thanks to TekLinks in Birmingham, AL, for providing colocation and bandwidth.

Page Rank

Fame

FOSS Force Best Blog--2013 Award

Recent posts

Recent comments

About this blog

I am Eric Hameleers, and this is where I think out loud.
More about me.

Search

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 411 other subscribers

My Favourites

Slackware

Calendar

December 2018
M T W T F S S
« Oct    
 12
3456789
10111213141516
17181920212223
24252627282930
31  

RSS Alien's Slackware packages

RSS Alien's unofficial KDE Slackware packages

RSS Alien's multilib packages

RSS Slackware64-current

RSS SBo

Meta

Tracking development of slackware in git

Something had been nagging me for a long time, and I finally had enough of that itch and decided to deal with it.

As you know, there’s a private and a public side to Slackware’s development. The discussions and decisions are handled internally among the members of ‘the team’ and are not shared with the public at large until an update is done to the ‘slackware-current’ tree which can be found on every Internet mirror.
Thus you have access to the latest state of development always. But for some people it is a compelling idea to be able to access the development updates in a public repository like git – where you can track the changes over time.

A recent discussion on LinuxQuestions brought up the topic of SlackBuild scripts in Slackware-current. The scripts you can find in the -current directory tree on the Slackware mirrors are always the latest version. Sometimes there’s a good reason to want to go back in time and fetch an earlier version. In the thread post with the appropriate number “1337” it is ponce (Matteo Bernardini) who replies with a link to a git repository maintained by Adrien Nader which already has been tracking the development in -current for nearly 8 years!. So it’s quite a convenient way to retrieve a historical version of any script.

Me being me, it’s the existence of that repository which has been nagging me for a couple of years. Why? Because I wondered how it was done. And if I question an issue long enough, I will eventually create my own solution – as a learning exercise of course, but also to give back to the community.

And so, today arrived. I was pondering – if I were to create a git repository for tracking the developments in -current, what would I want in there? Exactly the same as Adrien’s? The answer has been “no” for a while. The most important capability that is missing from Adrien’s repo is that it contains a lot of compressed files that are impossible to read. Think of patches and doinst.sh scripts, and more. So I gave myself the task to implement a git repository with uncompressed files, as an improvement on the original effort. Also, it should track all relevant files in the complete tree, not just in the “./source/” subdirectory. In particular the documentation files (various .TXT files).

The result is a script, maintain_current_git.sh, and a repository, https://git.slackware.nl/current/ .
The repository just had its first commit. For those who want to check out a commit in order to compile a package from there, the maintain_current_git.sh script generates another script called ‘recompress.sh‘ and stores that script in the root directory of the repository. When you run this recompress script in the root directory of the repository, it will re-compress all the files that had been un-compressed before committing them to git. That way, a SlackBuild script will find the correct files and will function as intended. Note that you would still have to download the source tarballs from somewhere, because this repository of mine will only track the Slackware-specific files.

I decided that it is prudent and more respectful to not import Adrien’s work into my own repository. The two are similar but different and I think everyone of you can choose which repository suits your needs better.

I have scheduled the above script to run twice a day and update the git repository when new updates become available.
As with all my scripts, this one has a “-h” parameter to explain its usage. Let me know if it – and the git repository – are useful to you.
This particular script may be a bit messy because I have not spent a lot of time polishing it. I hope that’s OK 😉

Have fun!

Comments

Comment from lamerix
Posted: May 30, 2018 at 07:37

Awesome!

Comment from DaveO
Posted: May 30, 2018 at 08:59

Thanks, I particularly like the log tab which lets you know which packages have changed when with a simple click.

Comment from p431i7o
Posted: May 30, 2018 at 15:50

Great, for people curious to know what happens in the day by day, is great!
Thanks Eric!

Comment from alienbob
Posted: May 30, 2018 at 16:12

For those wondering what you can do with the “post_current” function mentioned near the end of the script, this is what I put in a “maintain_current_git.conf” file in the same directory as the .sh script file:

# OPTIONAL:
# The function post_commit() will be run just before exiting the script;
# you can use this to push your git updates to a remote origin server:
post_current() {
# Add your own stuff here which is not covered in the main script:
cd ${GITDIR}
git push origin master
}

I.e. you can define a function in a .conf file, with the function name “post_current”, and anything you add in that function will be executed by the script. I use it to automatically push the local changes to the git.slackware.nl remote repository.

Comment from Deny Dias
Posted: May 30, 2018 at 21:53

Finally someone did it the right way! Thanks, Eric.

PS: wondering when someone will clone this into github for convenience. 😉

Comment from alienbob
Posted: May 30, 2018 at 21:58

Deny Dias, perhaps trhey should wait a bit…
I think that ppr:kut has convinced me to re-create the repository from scratch but then adding historical releases with branches and tags.
Of course I don’t have commit histories for a historical release development cycle, but you’ll be able to see what changed between releases.
So hold off your cloning activities for a day or so…

Comment from alienbob
Posted: May 30, 2018 at 23:54

OK, so I added some history to https://git.slackware.nl/current/

I have imported the latest status of all Slackware releases 13.0 and newer (basically that’s all 64bit releases) and gave them their own branches and tags.
Automatic updates will only occur in the master branch as -current evolves.
You may have to force-refresh your browser window.

Pingback from Links 31/5/2018: Many Stable Kernels, Cutelyst 2.4.0, Cockpit 169, MAAS 2.4.0, Rust 1.26.1 | Techrights
Posted: May 31, 2018 at 12:52

[…] Tracking development of slackware in git […]

Comment from Wael Hammoudeh
Posted: May 31, 2018 at 13:49

Thank you Eric, I am trying to learn “git” and this will be a great tool in this journey.

Wali

Comment from Wael Hammoudeh
Posted: May 31, 2018 at 15:11

Great project Eric,
I am trying to learn “git” and this will be a good tool towards that. I follow this tutorial http://www.vogella.com/tutorials/Git/article.html
Any other recommendation?
Thank you again,
Wali

Comment from alienbob
Posted: May 31, 2018 at 16:33

Wael, I think that URL may be a good tutorial. I would also recommend https://git-scm.com/book/

Comment from alienbob
Posted: May 31, 2018 at 20:58

After conferring again with ppr:kut and accepting his opinions about what could have been done better, I will be wiping the content of the ‘current’ repository for a second time and this time:
– use loo-mounted official DVD ISO images to check-in the actual releases
– create a branch per release
– apply all the patches that came after a release as an additional commit to the release branch
This way, the resulting git history will be much nicer to read.
Hopefully finish this tonight because I first need to download all the ISO images (I downloaded all ISOs just now, only to discover after committing several releases that I had downloaded all 32bit versions instead of the 64bit ones I need).

Comment from alienbob
Posted: June 8, 2018 at 00:05

The auto-updates of the git repository are working great. And I added a RSS feed containing item URLs for every update that point directly to the tagged commit in git.
If you add https://git.slackware.nl/current/plain/ChangeLog.rss to your favorite feed-reader you’ll always be two clicks away from the actual latest changes in the source.

Comment from SM
Posted: June 16, 2018 at 22:09

Hi alienbob,

This seems the right thread to ask, so I was wondering if you plan to recompile glibc for multilib. Slackware has updated the libraries twice.
Thank you.

Comment from alienbob
Posted: June 17, 2018 at 00:10

Hi manciuleas

I will get to it sometime soon. I am currently otherwise occupied: KDE Plasma 5 updates will arrive soon, and I need to migrate stuff at home from an ageing server to a new machine. Twenty+ years of legacy scripts/jobs/data to migrate from Slackware 13 where it is currently running.

Comment from SM
Posted: June 17, 2018 at 03:42

Hi alienbob,

Thank you for the reply and the great job you’re doing

Comment from SM
Posted: June 18, 2018 at 02:46

Hi alienbob,

Thank you for recompiling glibc.

Write a comment