Official FreeBSD Binary Packages now available for pkgng

October 31, 2013 by · Leave a Comment 

We are pleased to announce that official binary packages are now
available for pkg, the next generation package management tool for FreeBSD.

Pkg allows you to either use ports with portmaster/portupgrade or to
have binary remote packages without ports.

We have binary packages available for i386 and amd64 on
8.3,8.4,9.1,9.2,10.0 and 11 (head).

More at http://lists.freebsd.org/pipermail/freebsd-pkg/2013-October/000107.html

Getting to know your portmgr@ — Bernhard Froehlich

October 29, 2013 by · Leave a Comment 

In our ongoing series on getting to know your portmgr@, we talk to Bernhard Frölich, the one who brought us http://redports.org

Name

Bernhard Frölich

Committer name 

decke

Inspiration for your IRC nick

decke == blanket in German, mascot: /dev/blanket from ThinkGeek

TLD of origin 

AT (Austria)

Occupation

Software developer (logistics, fully automated warehouses)

When did you join portmgr@

10.2012

Blog

http://www.bluelife.at/

Inspiration for using FreeBSD

As a software developer I always liked the simplicity and straight
forward way of solving problems.

Who was your first contact in FreeBSD

miwi – high quality automated PR and commit bot

Who was your mentor(s)

miwi, beat

What was your most embarrassing moment in FreeBSD

About two years ago we had an X11 update and my laptop started to
become unuseable on the docking station because the mouse cursor and
X11 windows kept failing in very strange ways. Everything was working
fine when working on the built in laptop display but when docked with
USB mouse it was catastrophic. This situation lasted for a few months
until kdm@ fixed a bug in HAL that turned out to be the cause of this
issues.

Boxers / Briefs / other

boxers

What is your role in your circle of friends

Don’t have a role. It’s just me.

vi(m) / emacs / other

vi, eclipse

What keeps you motivated in FreeBSD

The FreeBSD community and all the people working on FreeBSD with such
an enthusiasm.

Favourite musician/band

Kosheen, Lamb, Zero 7

What book do you have on your bedside table

Papa To Go

coffee / tea / other

Jasmine Tea (Dragon Pearl)

Do you have a guilty pleasure

I’ve outsourced a lot of stuff to Google services (GMail, Google Apps,
AppEngine, …)

How would you describe yourself

always busy, sometimes grumpy, never too late

sendmail / postfix / other

exim

Favourite webserver

nginx

Favourite alcoholic drink

Magners (Irish Cider)

Do you have a hobby outside of FreeBSD

All the usual technical and geek stuff. Not really a hobby but I really enjoy a great barbecue in summer.

What is your favourite TV show

Star Trek: Voyager, Top Gear, The Big Bang Theory, Psych

Claim to Fame

  • helped porting and maintaining VirtualBox for FreeBSD since the beginning
  • creator of redports.org and QAT

What did you have for breakfast today

Cornflakes

What sports team do you support

none

What else do you do in the world of FreeBSD

I am also interested in DVB multimedia applications for FreeBSD which
is why I maintain mythtv and recently ported tvheadend to FreeBSD
besides the XBMC PVR addons.

What can you tell us about yourself that most people don’t know

I’m about to become father about the time this is published and I
expect that my little girl will consume all my spare time for quite a
while.

Any parting words you want to share

So Long, and Thanks for All the Fish!

What is your .sig at the moment

Bernhard Fröhlich

http://www.bluelife.at/

 

Getting to know your portmgr@ — Joe Marcus Clarke

October 21, 2013 by · 3 Comments 

This is the start of an ongoing series profiling members of the FreeBSD Ports Management Team.  In this interview, we talk to longest serving member of the team, Joe Marcus Clarke, aka marcus@

Name

Joe Marcus Clarke

Committer name

marcus

Inspiration for your IRC nick

Longish story. Marcus is not my middle name. It’s Michael. When I was
seven, I came up with the nickname myself. I thought it sounded cool.
And there you go.

TLD of origin

US

Occupation

Distinguished Services Engineer at Cisco Systems

When did you join portmgr@

Damn, I don’t remember. My email dates
back to 2006, but I think it was before that…

Blog

Nope

Inspiration for using FreeBSD

Another longish story. I was in college at University of Miami (go
Canes!), and I managed to procure an old x86 PC. We were going to
install Linux on it. I thought having a csh in my own dorm room was
just awesome. A friend ran into my room and said I needed to check out
this thing called, “FreeBSD.” Sure, what the hell. A few days and
about 50 floppy disks later, I was sold. I never looked back.

Who was your first contact in FreeBSD

sobomax (Maxim Sobolev)

Who was your mentor(s)

sobomax

What was your most embarrassing moment in FreeBSD

Probably the first time I broke INDEX, or my first release song, “Ports
Freeze Baby.”

Boxers / Briefs / other

boxers

What is your role in your circle of friends

What are friends?

vi(m) / emacs / other

VIM (what is this “emacs” thing you speak of?)

What keeps you motivated in FreeBSD

I really believe it is the best operating system around. I advocate it
passionately at work (to the point people thought I got paid to say,
“FreeBSD”). I look for any chance to install it. I love it when people
run network tests to my servers at work and comment how amazing the IP
stack is… :-)

Favourite musician/band

I like a lot of musical types, but I’m particular to metal. I’m into
Five Finger Death Punch now.

What book do you have on your bedside table

Print is dead. But I’m reading up on Python online now. when is
Stackoverflow going to publish a book?

coffee / tea / other : Diet Pepsi

Do you have a guilty pleasure

Call of Duty

How would you describe yourself

Alive

sendmail / postfix / other

sendmail

Do you have a hobby outside of FreeBSD

I’m learning to be a pilot.

What is your favourite TV show

I loved House. I thought it was the closest thing on TV to be a network
troubleshooter. Right now, I’m big into Strike Back.

Claim to Fame

Tinderbox, I guess

What did you have for breakfast today

I only eat once per day. Usually at night.

What sports team do you support

University of Miami Hurricanes and Manchester United

What else do you do in the world of FreeBSD

GNOME, Netatalk, wireshark, Tinderbox, and a lot of local sysadmin stuff.

What can you tell us about yourself that most people don’t know

My North Carolina license plate reads, “FREEBSD”.

Any parting words you want to share

What am I, your priest?

What is your .sig at the moment

It’s lame. Don’t ask :-)

Package name collisions

October 3, 2013 by · Leave a Comment 

For the sake of being able to have clean working binary packages, pkgng has had to use a dirty hack: origin is used has an identifier instead of the package name.

Why: How to determine than ImageMagick-nox11 and ImageMagick are the same package? and if I don’t know they are the same package how to upgrade them properly? same goes how the package manager can know that mysql-client-5.2.1 is not an upgrade of mysql-client-5.0.1?

How can pkgng determine which subversion is the right version to use: ‘pkg install subversion’ will propose all possible subversion, in that case the higher version is probably the default version, but in perl case, the higher version is probably not the one you want.

Some packages are totally different project but have the same package name… How can pkgng differenciate them?

So please stop using LATEST_LINK to differenciate the different port but directly make _unique_ package names, pkgng will switch back to package name as soon as possible (that will also solve the ugly and stupid pkg set -o).

There is multiple possibility to make sure to properly handle multiple versions of packages:

  1. suffix everything with part of the version (like tcl)
  2. suffix everything but the default with part of the version
  3. have only 2 or 3 different version: project-legacy project project-devel

Please stop renaming the packages based on options! Options are now registered with the package with both pkgng and pkg_install, please stop adding suffix base on options!

Think about the end user, he will try to install a package, it should be as transparent for him as possible.

I is really important to change that as quick as possible. This page on the wiki reference all the port with conflicting names.

Staging

October 3, 2013 by · Leave a Comment 

You may has notice that staging has hit the ports tree, staging is something really important, all packages system are using that feature for eons, sometime called DESTDIR sometime called FAKEDIR.

Staging is consistent in adding a new step while building packages: install everything into ${STAGEDIR}. Then we can directly create packages out of that directory without having to install into /. What the implementation does is:

With pkg_install (legacy package tools):

  • Create a package from the stage directory
  • Install that package.

With pkgng:

  • Create a package from that stage directory

OR

  • Install to / (pkgng can consider the stage directory as if it is a package)

What it means is, that it is the end of the bad plist, only things in plist are really installed, this is the end of the broken packages that break the system because they fail in the middle of make install as a package will only be installed once we are sure the build process properly pass.

It allows right now to build and create a package without the need to be root.
It gives us new targets:

  • make makeplist (to create the pkg-plist)
  • make check-orphans (to print what is in the stage directory but not in pkg-plist)

It reduces code duplication: in the end the installation is being done via a package installation meaning that PKG-MESSAGE is automatically printed, all pre/post installation scripts are executed.

It reduces patches: no need anymore to patch upstream Makefiles to avoid installing the DOCS just do not list them in pkg-plist or conditionnaly list them in the pkg-plist.

This also allows lots of new features to come:

  • Allow to create sub-packages
  • Allow to create debuginfo packages
  • Allow to do a lot of sanity check in the staging area to improve our QA

To convert your ports refer to: https://wiki.freebsd.org/ports/StageDir

Along with stage you have noticed that MAN* and MLINKS has gone, and now all the manpages should be added to the plist. BTW MANCOMPRESSED is also not necessary now.

There is 3 reason behind making it go and not being replaced:

  1. The initial goal of those macros was to be able to compress the right manpages and to handle the different hardlinks/symlinks between those pages. Because it was directly installed in / rather than using a stage directory, it was necessary to at a point list them. and to properly track the different links in MLINKS (which wasn’t done properly in most ports btw :)). With stage, we have a new compress-man which does it properly on its own without the need to get the list of the manpages, without the need of an explicit declaration of the links. This syntax to handle localized man pages was also terrific :) and if you have a port mixing manpages in “non regular” and “regular” localtion, it was totally messing
  2. Consistency, a port is basically: some metadata, a plist and some operations to perform. for metadata all metadata are in the Makefile, all operations are in the Makefile but plist can be a mix of pkg-plist and Makefile, this is inconsistent, it makes sometime hard to figure out why a file has been added to the plist etc. Also this makes us having tons of targets define to handle those extras entries and results in highly inefficient make(1) usage.
  3. Stage is also a first step to go to sub-packages, sub-packages will basically be: 1 port able to produce N packages, to be able to do this we will use multiple plist, having the files properly defined already in plist will help that. Having files defined in macros on Makefile will make it hard todetermine which one should go in which plist.

Last thing I would like to add about it: I don’t see the difference personnaly between listing N lines of manpages into Makefile MAN* macros where btw you have to manually define the categories where to put them and adding those N lines
directly into the plist where make makeplist and/or make check-orphans can help you getting the exact lines automatically?