SGI: Development

prerequisites : I'm pissed (rant)

This is intolerably irresponsible. No wonder the fucking useless braindead United States is swirling the toilet :

Prerequisites : let's go see what's what ...
Code:
urchin 1# ldd /usr/nekoware/bin/Ted
libpcre.so.1  =>         /usr/nekoware/lib/libpcre.so.1
libiconv.so.3  =>        /usr/nekoware/lib/libiconv.so.3
libtiff.so.6  =>         /usr/nekoware/lib/libtiff.so.6
libjpeg.so.63  =>        /usr/nekoware/lib/libjpeg.so.63
libpng12.so.0  =>        /usr/nekoware/lib/libpng12.so.0
libz.so.1  =>    /usr/nekoware/lib/libz.so.1
libm.so  =>      /usr/lib32/libm.so
libXpm.so.1  =>  /usr/lib32/libXpm.so.1
libXm.so.1  =>   /usr/lib32/libXm.so.1
libXt.so  =>     /usr/lib32/libXt.so
libXext.so  =>   /usr/lib32/libXext.so
libX11.so.1  =>  /usr/lib32/libX11.so.1
libXft.so.2  =>  /usr/nekoware/lib/libXft.so.2
libXrender.so.1  =>      /usr/nekoware/lib/libXrender.so.1
libfontconfig.so.2  =>   /usr/nekoware/lib/libfontconfig.so.2
libfreetype.so.7  =>     /usr/nekoware/lib/libfreetype.so.7
libbz2.so.1.0  =>        /usr/nekoware/lib/libbz2.so.1.0
libc.so.1  =>    /usr/lib32/libc.so.1
libpthread.so  =>        /usr/lib32/libpthread.so
libjbig.so.1.0  =>       /usr/nekoware/lib/libjbig.so.1.0
libfastm.so  =>  /usr/lib32/libfastm.so
libz.so  =>      /usr/nekoware/lib/libz.so
libpng.so.3  =>  /usr/nekoware/lib/libpng.so.3
libz.so  =>      /usr/nekoware/lib/libz.so
libgen.so  =>    /usr/lib32/libgen.so   delay-load
libz.so  =>      /usr/nekoware/lib/libz.so
libz.so  =>      /usr/nekoware/lib/libz.so
libexpat.so.2  =>        /usr/nekoware/lib/libexpat.so.2
libz.so  =>      /usr/nekoware/lib/libz.so

No problem, here's everything we need to know, right ?

Wrong.
swpkg wrote:
Help
Code:
You can specify a list of subsystems that must all be installed in order for users to install the new subsystem:

prereq (
name lowvers highvers
name lowvers highvers
name lowvers highvers
)

where

name

is the name of the subsystem that is a prerequisite.

lowvers

is the lower boundary of the range of versions of name. It can be 0, or any version number value that you supply.

highvers

is the higher boundary of the range of versions of name. highvers can be one of the following:
maxint, the maximum value that a long int can hold
oldvers, defined as the current version minus 1
an actual version number

And that's it. Techpubs in five different publications uses exactly the same worthless bullshit "explanation." (And our own wiki glosses over the problem) Here's an example from the real world :
Code:
replaces self
prereq (
neko_expat.sw.lib 5 maxint
neko_fontconfig.sw.lib 3 maxint
neko_freetype2.sw.lib 5 maxint
neko_libiconv.sw.lib 3 maxint
neko_zlib.sw.lib 6 maxint
)

Swmgr says exactly nothing about "neko_expat.sw.lib" Let me correct that - it says <blink> NOTHING </blink> Sure, it shows "expat-2.1.0 C library for parsing XML expat shared libraries" but here's a hint for the highly-paid knowledge workers of high-tech America : this does not even resemble what swpkg will accept or use. Maybe *you* know where these systems hide their names but the computer certainly does not. Computers are not mind-readers, hey?

I have a free clue for high-tech America : do your fucking jobs. Computer hardware is worthless without software. If you don't make it somewhat straightforward for people to create software that runs on your hardware, then you ain't gonna got shit. That means the instructions should be intelligible or at least complete. Of course you can bury the idjut journalists in blather and make a bundle by scamming the stock market IPO ! IPO ! We're gonna be rich RICH I TELL YOU ! WOO-HOO !! but eventually, the country is going to go broke because Obummer is a fool and thinks the rest of the world can be strongarmed into paying good money for worthless trash. Either that or he's playing whitey's game and goes home to laugh with Michelle about putting one over on all the dumbass honkies.

Either way, when the country goes broke the darkies in the ghetto are going to come for your jewelry. The family jewelry. And you can squeal about criminals and pound the table with your mighty wee fists but buddy, you's getting exactly what you deserve. A automatic weapon don't 'cept no checks.

Fucking nitwits.

Meanwhile, back on the ranch, wtf is "the maximum value that a long int can hold" supposed to mean ? The biggest number one can type into that operating system ? The biggest integer one can write longhand on a sheet of 8 1/2" x 11" paper ? The biggest number that Carl Sagan can visualize in his wide-screen brain ? Can someone who speaks fucking English explain what this crap is supposed to mean ?

And while you're at it, where the hell do you get the real system names that swpkg can understand ? Do we have to disassemble every neko_JBIGKIT 2.0.3.tardist in the repository for the real subsystem names of the libraries ? That doesn't seem efficient :(

No wonder SGI is dead. They were morons.

_________________
waiting for flight 1203 ...
inst shows these internal package names by default and I think there's an option to have that same behaviour in swmgr.

You can see which subsystem contains a specific file by doing a "versions long | fgrep /usr/nekoware/lib/libz.so". Then to get the subsystem version do a "versions -n neko_zlib.sw.lib".

"versions -n long | fgrep /path/to/file" might also work, but I'm away from my SGIs at the moment, so I can't check.
hamei wrote:
Meanwhile, back on the ranch, wtf is "the maximum value that a long int can hold" supposed to mean ?


(2 to the power of (32-1))-1 for 32 bit system

(2 to the power of (64-1))-1 for a 64 bit system

assuming signed long int.

_________________
:Indy: :Indigo2IMP: :Octane: :Indy: 4xRS6K 2xHP9K 6xSUN 1xDEC 14xMAC 7xPC 2xPS2
ShadeOfBlue wrote:
inst shows these internal package names by default and I think there's an option to have that same behavior in swmgr.

S o ftware -> S h ort Product Names
Attachment:
swmgr.gif
swmgr.gif [ 30.08 KiB | Viewed 596 times ]


While you're at it, tick P anes-> C ommand as well and you can treat swmgr like inst :)

_________________
Now this is a deep dark secret, so everybody keep it quiet :)
It turns out that when reset, the WD33C93 defaults to a SCSI ID of 0, and it was simpler to leave it that way... -- Dave Olson, in comp.sys.sgi

Currently in commercial service: Image :Onyx2: (2x) :O3x02L:
In the museum : almost every MIPS/IRIX system.
Wanted : GM1 board for Professional Series GT graphics (030-0076-003, 030-0076-004)
ShadeOfBlue wrote:
inst shows these internal package names by default and I think there's an option to have that same behaviour in swmgr.

Thanks, Blue . Do you think perhaps the useless dickwads who wrote the Help and Techpubs how-to's might have included this information ? 6.2, 6.4 and 6.5 Techpubs, all same. They kept the secret for more than ten years, I'm so happy for them.

Although I spose it's possible that they didn't want anyone to port software to Irix cuz the os is so kewl and l33t but, well, look where that got them ?

jan-jaap wrote:
S o ftware -> S h ort Product Names

Thanks :) That works good also. In fact, it works a little better because the letters have all worn off my high-quality special SGI keyboard so the graphical approach can be nice. I know. If I were a real computer guy I'd never ever have to look at the keys.

porter wrote:
hamei wrote:
Meanwhile, back on the ranch, wtf is "the maximum value that a long int can hold" supposed to mean ?


(2 to the power of (32-1))-1 for 32 bit system

(2 to the power of (64-1))-1 for a 64 bit system

assuming signed long int.

You put that tongue any farther into your cheek and something'll bust, Porter :mrgreen:

Here's an example from fontconfig :
Code:
prereq {
neko.zlib.sw.lib 6 maxint
}

While here's a listing of the files in neko_zlib
Code:
neko_zlib.sw.lib
/usr/nekoware/lib/libz.a
/usr/nekoware/lib/libz.so
/usr/nekoware/lib/libz.so.1
/usr/nekoware/lib/libz.so.1.2.5
/usr/nekoware/lib/pkgconfig/zlib.pc

6 ... hmmm. It must come from somewhere. 1+2+5 =8, no. 1+2+5+1=9 ... hmm. 9/2=4.5, no. 9 -1 = 8, no. 9-3=6, hey ! We gottit ! Add all the integers from all the available version numbers together. Now take the sum of the two leftmost digits of the largest version number and subtract from the sum of all versions. Right ? Or does this number come from the Assyrian calendar somehow ?

This has to have some explanation but as I'm not from an alien planet, the clues escape me. And I'm not stoopid enough to expect Techpubs or the Help tutorial to explain it. Been there, done that.

Where's canavan ? he uses this mess, he should understand it .... this is the worst-explained part of making a tardist so if someone could describe it and we got it into the wiki, that'd be a big help for the future. What future ? okay, okay ...

My thanks to the rest of you hippies. You're more useful than SGI ... although so is an exploding watermelon, at this point.

edit : a little more on the maxint thing ...

Alver wrote:
Code:
replaces self
prereq (
neko_fooware.sw.lib 1 maxint
neko_somelib.sw.lib 2 maxint
neko_thatapp.sw.eoe 7 maxint
neko_thestuff.sw.hdr 1 maxint
)

I don't have to draw a picture here - the package replaces earlier packages with the same name, and the dependencies - prereqs - are listed, each with the minimum version they require.

I believe this is incorrect because of the example above, where maxint was six but the highest version number of any library was 1.2.5

On the other hand, later on
Techpubs wrote:
In the following example, subsystem s can be installed if either: both p.q.r (any version between 100-200, inclusive) and x.y.z (any version greater than 400) are also installed; or, a.b.c version 1000 is also installed:
Code:
subsystem s
prereq ( p.q.r 100 200
x.y.z 400 maxint)
prereq ( a.b.c 1000 1000 )

But if that is correct, then fontconfig would not work. Except it does ... :cry:

_________________
waiting for flight 1203 ...
hamei wrote:
Here's an example from fontconfig :
Code:
prereq {
neko.zlib.sw.lib 6 maxint
}

While here's a listing of the files in neko_zlib
Code:
neko_zlib.sw.lib
/usr/nekoware/lib/libz.a
/usr/nekoware/lib/libz.so
/usr/nekoware/lib/libz.so.1
/usr/nekoware/lib/libz.so.1.2.5
/usr/nekoware/lib/pkgconfig/zlib.pc

6 ... hmmm. It must come from somewhere. 1+2+5 =8, no. 1+2+5+1=9 ... hmm. 9/2=4.5, no. 9 -1 = 8, no. 9-3=6, hey ! We gottit ! Add all the integers from all the available version numbers together. Now take the sum of the two leftmost digits of the largest version number and subtract from the sum of all versions. Right ? Or does this number come from the Assyrian calendar somehow ?

This has to have some explanation but as I'm not from an alien planet, the clues escape me. And I'm not stoopid enough to expect Techpubs or the Help tutorial to explain it. Been there, done that.

Where's canavan ? he uses this mess, he should understand it .... this is the worst-explained part of making a tardist so if someone could describe it and we got it into the wiki, that'd be a big help for the future. What future ? okay, okay ...

I thought this was explained in the wiki page on packaging - each package built for inst has it's own internal version number used specifically for prerequisite and upgrade processing. It is explicitly independent of the version of the software being packaged, so Emacs 64.16 could have a package number of 2 when first uploaded to Nekoware in 2015Q1, 3 when rebuilt to use a new libxpm in 2015Q2, etc.

These were the versions that came into play with libidn when I was testing out a beta package of neko_wget, see here: viewtopic.php?f=15&t=16727394#p7360542

Edit : Right, on the Packaging Software wiki page, section on Versioning :
Quote:
Every package will have two version numbers that should never be confused: the package version and the software version.

The package version is assigned to all children of the root node on the first worksheet of the Software Packager. This number is incremented for each build of this package independantly of the software version contained within the package.

For example, the software version of this application is 1.2.3, however the initial package version is 1. If, in the future, another package is built for this software, the package version will be incremented to 2. In this future package, the software version may be 2.0, 1.2.4 or remain at 1.2.3.

Remember: a package's version is independant of the version of the software it contains.

Also, all package version numbers must be equal within a package. If, for example, the execution-only subsystem has changed in a new package, all other subsystem's must have the version numbers incremented, as well. This holds true even if no other subsystems have changed between package versions.

It then continues with a section on dependencies using those package versions, though to be sure it isn't all that lengthy.

_________________
Then? :IRIS3130: ... Now? :O3x02L: :A3504L: - :A3502L: :1600SW: +MLA :Fuel: :Octane2: :Octane: :Indigo2IMP: ... Other: DEC :BA213: :BA123: Sun , DG AViiON , NeXT :Cube:
The version numbers are not related to the library/software version, it's the package version. This is important only for prerequisites... The number chosen is entirely up to the software packager, and while I would probably have chosen something like <major><minor><micro><two-numbers-for-fixing-my-messing-it-up> a number incrementing for each new release of a package is totally fine.

To find out what package a particular file belongs to there's no need to pipe and grep, just do
Code:
% showfiles -- /usr/nekoware/lib/libz.so.1.2.3
f 39037 132392 neko_zlib.sw.lib        usr/nekoware/lib/libz.so.1.2.3


In order to find out which version of a package you have installed to make it a prerequisite (since there isn't a specific system to the prereq numbers you'll have to go with this number or guess, if you want to have prerequisites at all, which AFAIR nekoware often do not have)
Code:
% versions -n neko_zlib
I = Installed, R = Removed

Name                 Version     Description

I  neko_zlib                     6  zlib 1.2.3 Compression Library
I  neko_zlib.sw                  6  zlib 1.2.3 software
I  neko_zlib.sw.lib              6  shared libraries


Somehow it seems to me like my reply has an offensive tone, please do take it as just information.

_________________
:Octane: halo , oct ane
N.B.: I tend to talk out of my ass. Do not take it too seriously.
smj wrote:
I thought this was explained in the wiki page on packaging - each package built for inst has it's own internal version number

Woo-hoo ! SMJ's been busy on the wiki ! Thanks, fella. That didn't use to be there. Techpubs is useless on the subject, with their "maximum value that a long int can hold" shit. Nowhere do they say that their maxint number refers to the package number, not the version number. Version of what ? Everyone in the company has at least a Bachelor's but none of them can write a sentence in English.

Nekochan wiki beats Techpubs, hmm. Guess I should learn where to go first in the future ...

duck wrote:
The version numbers are not related to the library/software version, it's the package version.

Thanks, you're right. All they had to do was put that one simple word in there to have it make sense -- package .

Quote:
Somehow it seems to me like my reply has an offensive tone, please do take it as just information.

Not at all. I guess I am not thin-skinned :P The way people pussy-foot around everything today is silly.

Back to the trackball and keyboard, thanks y'all. Should be able to get a Teddy into incoming now ...

SM - not that it matters since they have lost most of their credibility, but one point Techflubs made was that 30 characters is considered max for a package name, otherwise the name disappears out the side of the interface. Came across that while looking for the answer to this. That and the story of the Batfish ... don't ask, I have no idea how my searches do that.

_________________
waiting for flight 1203 ...
hamei wrote:
smj wrote:
I thought this was explained in the wiki page on packaging - each package built for inst has it's own internal version number

Woo-hoo ! SMJ's been busy on the wiki ! Thanks, fella. That didn't use to be there.

Thanks, but I think credit goes to Regan - I've only made one very small change to that page, and that was about including release notes etc. And I think it was Alver that supplied the original guide...

_________________
Then? :IRIS3130: ... Now? :O3x02L: :A3504L: - :A3502L: :1600SW: +MLA :Fuel: :Octane2: :Octane: :Indigo2IMP: ... Other: DEC :BA213: :BA123: Sun , DG AViiON , NeXT :Cube:
smj wrote:
I think it was Alver that supplied the original guide...

It was Alver who did the original - it's still up on his websoite and it's a big help. Thanks, Alver !

But it didn't go into the version / package confusion very much. I looked. Unless I was suffering from sensory overload blindness at that point, which is certainly possible ...

So Reg Regan is probably responsible ... we'll get you for this, Reg !

Attachment:
get_stuffed.jpg
get_stuffed.jpg [ 42.7 KiB | Viewed 471 times ]

Anyhoo, I shouldn't mention this yet but there's a Motif Ted in incoming now. Should be showing up for healthy constructive that's constructive , did you hear that ? criticism in beta soon.

_________________
waiting for flight 1203 ...