PDA

View Full Version : How come most games don't use repositories?


jhoff80
2008-02-03, 16:38
I was just looking around here, and there's a ton of games posted in these forums. I was just wondering, how come most of them aren't in ANY repositories? I'm sure as most of you realize, its much more convenient to get them from a repository than have to browse through the forums.

ArnimS
2008-02-04, 07:47
Just speaking for myself: Given a limited amount of time, it is generally more interesting and fun for me to find new games and build/tweak them to get them running well, than to spend time dealing with installer and repository issues.

A second problem is that many of these games are just too large to be installed via application manager. A 30 MB game .deb will require >60MB free space on your root fs to install. There are workaround hacks for this, but making a robust one that would satisfy the 'casual user' who just wants to click and install is not trivial.

Benson
2008-02-04, 14:07
Tak, that makes sense, but I'm inclined to agree with Armin's outlook. (Though I haven't had time yet to set up the Maemo SDK, I've done other development, and hope to do some ports; I feel the same way.) I think a lot of the people who enjoy porting things are less likely to enjoy, or even put up with, the trouble of packaging, even with a standard sol'n to the technical issues.

Perhaps what we need is some packaging pros to team up with porters to get things packaged and reposited.

wazd
2008-02-04, 15:20
Well maybe someone can make some package template and others will just use it. Like «install on mmc1/mmc2» and so on. I think it won't take much time. For example Penguinbait's KDE port installs to SD cards right from the installer. Maybe you can use his template somehow =)

pipeline
2008-02-04, 16:43
I'm waiting for one of you guys to post a good write up on packaging and setting up a repo. I dont really do irc and this info needs to be something which can be viewed by others, such as in the wiki.

When i tried to set up a repo it seemed like a very error prone method of software distribution. Mostly too much room for user errors editing freeform text files. Also i dont want it worrying about dependencies unless i -want it- to worry about dependecies.

And another quirk someone could address... whats the minimim effort required to have a large icon for menu (os2008) and small icon for app manager, how to name and where to put files. I'm dissapointed that linux or the tablet cant scale them itself.

I would actually prefer repos to be categorized by source so i can instantly filter by specific source rather than the federated anarchy which it is. So i guess im looking for synaptic features or something.

Also there should be a good way to generate (fiasco?) images so that i can back up and restore to the internal flash memory. If that were a possibility then i would feel less of a need/want to have raw debs on an mmc which i can install.

Unfortunately i havent been able to find a deb-repack to reverse engineer packages... that would be helpful for backing up 'proven working' installs/versions for subsequent offline reinstallation. Perhaps someone can compile this and perhaps make a gui frontend. The metadata to generate such packages is right there in the .list files in the overcrowded /var/lib/dpkg/info directory.

Dont take this wrong but yea i understand your lethargic wish to see everything in the app manager candy store, but cant the devs get a candy store for publishing them :) devs can be lethargic too! Or do devs have to be space shuttle engineers for nokias 'stage 5' attention deficit disorder users.

GeneralAntilles
2008-02-04, 16:58
Also there should be a good way to generate (fiasco?) images so that i can back up and restore to the internal flash memory. If that were a possibility then i would feel less of a need/want to have raw debs on an mmc which i can install.


This is covered in all the booting from SD tutorials. Not exactly what you're looking for, but it's a decent start.

Benson
2008-02-04, 17:32
Bluntly, it doesn't matter. Packaging, like documentation, is one of those parts of software development that needs to be done regardless of whether anybody feels like doing it, because the software is not complete without it.

Oh, I agree that it needs done. But, since we're discussing voluntary work, with no possibility of being fired because of not doing things that need to be done... it's realistic to expect that things will be left uncomplete, with some things that do need to be done left undone.

Some developers, to be sure, will dislike it, and yet have the strength of character to do it; many will not. So the only way that all (rather, I should say even most) games will get packaged is by efforts of other people, packaging for the developers.

There are no obvious candidates for this; I don't think packaging is a lower-skill task than programming, like documentation. And I doubt there's anyone who would rather package than develop. So it's left to people with a sufficiently intense annoyance at everyone else's unpackaged games to pick them up and package them. (Who don't take the natural response to such annoyance: leaving!) Also, if Nokia wanted to include these games in the distro, they could hire people to sit around packaging other people's stuff (as e.g. Redhat does).

But I think we'll always be stuck with this problem to some degree.

aflegg
2008-02-04, 17:57
More comments from people reluctant to upload on my RFC (http://www.maemopeople.org/index.php/jaffa/2008/01/13/solving_the_lack_of_qa_and_muliple_repos) would be welcome.

So far official feedback has been slim, but there seems to be enough will on maemo-developers to make a start, at least.

pipeline
2008-02-04, 18:07
This is covered in all the booting from SD tutorials. Not exactly what you're looking for, but it's a decent start.

Thanks, yes that is always a fallback position... would still be nice to extract filesystem from fiasco, apply a merge tree of patches/updates, and recompress into image which the desktop flash utilities can burn.

The url for the candy store is http://garage.maemo.org

Yea, so theres that missing link of getting from -that- bucket to repo bucket that is missing? Also garage fails to upload files greater than, say... 5 megs for me.

As to your other comments, i can already generate packages (however simplistic they may be), but the repo doesnt like the packages (for lack of dependency info?). I should think that should be optional.

So theres a repo metadata seems interwoven/partially duplicated with package metadata, and add to that the layer of metadata for single click install. Im sure alot of that is due to deb architecture but the only documentation i saw for repos was a redirect to debian... overkill documentation wise.

Cant all these issues be addressed at once in a single simplified wiki article/example rather than having to piece together fragments of info which are possibly obsoleted and from different perspectives?

GeneralAntilles
2008-02-04, 18:12
So far official feedback has been slim, but there seems to be enough will on maemo-developers to make a start, at least.

There was some noise about it today on #maemo. Bugging X-Fade about it may be productive.

free
2008-02-04, 18:42
Creating a repo...

One way of doing:

Local:
mkdir pool
mv *.deb pool/

In pool, create this file (genlist.sh)

#!/bin/sh
( cd .. ; dpkg-scanpackages pool /dev/null | gzip -9c > pool/Packages.gz ; )


Modify /scratchbox/devkits/debian-etch/bin/dpkg-scanpackages so that the icon is included:

my @fieldpri= ('Package',
'Source',
'Version',
'Priority',
'Section',
'Essential',
'Maintainer',
'Pre-Depends',
'Depends',
'Recommends',
'Suggests',
'Conflicts',
'Provides',
'Replaces',
'Enhances',
'Architecture',
'Filename',
'Size',
'Installed-Size',
'MD5sum',
'Description',
'Origin',
'Bugs',
'Maemo-Icon-26'
);


Server:
Create two directories:
/pool
/dists/chinook/user/binary-armel/ ( your repo will be reference like mine: chinook, user, only binary-armel and dists are mandatory afaik)


When you want to upload a new deb:
cd pool
./genlist.sh
Upload the new deb to remote pool/
Upload packages.gz to remote /dists/chinook/user/binary-armel/

That's it! no more excuse ;p

More dirty way:
Put the pool in binary-armel

A bit cleaner when you have too many packages, you can create a trivial subdirectory structure:
pool/lib -> libs
pool/a -> packages beginning with a
pool/b -> packages beginning with b
[..]


For this, use this script (that you can also put in directory pool, local)
#!/bin/bash
mv lib*.deb lib/ 2> /dev/null
ls -1 *.deb 2> /dev/null | while read i
do
l=${i:0:1}
mkdir -p $l
mv $i $l
done

When you have your new deb, put it in pool/ , launch the above script, launch genlist, upload packages.gz to the same place as mentionned before and upload the package to pool/a or pool/b ,..

If you want your application to be seen in app manager, it needs the user/ prefix on the section line in debian/control (take the binary package, not the source one)
Section: user/admin
If it's not there, people will need to dl it using apt-get or use red-pill.

If you want an icon in app manager:
Create a 26x26 png image and uuencode it:
cat icon.png | uuencode -m -

add a line in debian/control:
XB-Maemo-Icon-26: <here put the result of uuencode, no space, no end of line>

That was for creating a repo. Packaging for debian/fedora/.. on the other side is a vast subject... highly depends on the upstream sources.

pipeline
2008-02-04, 19:29
Ok nevermind, 2008 is calling and i need to get back :)

Benson
2008-02-04, 23:35
Both debian and maemo disagree with you. Dependency management is much of the point of a package system to begin with.

No, that's the point of overly-complicated package systems. The point of a package system is to take the several files belonging to this project and dump them all in the appropriate places, and run any scripts necessary for installation. Dependencies and how to satisfy them are not part of packaging in general. They can be handled either automatically or manually outside the package system.

Since Debian, and hence Maemo, has integrated dependency into their packaging system, you should do it when packaging for them. But it's important to realize that that's only a particular choice made in this distro, and not some universal truth, nor necessarily even a good idea.

Khertan
2008-02-05, 05:19
There is no reason for any developer to set up his own repo; we have garage extras, of which we should make as much use as possible.


There is some ... We can't upload deb easily to the extra repos ... could you do it from the tablett ? no ....

pipeline
2008-02-07, 23:33
Well thanks to khertan i figured out why my packages werent repo friendly (or repo tolerant). Thanks to others for help also, especially genlist scripts.

Reason it wouldnt work though is that most of my packages dont need extra libs other than whats on firmware so i left blank. dpkg-scanpackages doesnt like this, so i set dependency to libc6 and that works... the repo accepts it.

So putting aside the 'best way to do things', would adding a depency to libc6 (no version just existence) keep the package compatible with bora as well as chinook? what about gregale? If not can anyone suggest the most basic library to depend on for each platform, just so that this field is not totally random?

Also i noticed that one of my packages installs fine but the package name is lowercase once installed. So i uninstall and reinstall from repo... same thing the package name is capitalized in repo but not once installed... this means its still listed in 'available applications' as well as installed applications. Is there some leftover data i could delete to rid of this of should i use lowercase for package names.

thx-

free
2008-02-08, 07:58
If it doesn't depend on anything, why don't you remove the _complete_ dependency line? ("Dependency:" is not accepted by dpkg). There are some packages that depend on nothing, they simply have no dep line.

And libc6 is usually there, at least running dpkg or apt without libc6 is quite tricky :)

pipeline
2008-02-08, 12:35
Thanks, free... sounds like thats what i want to do. Good to know they allow this.

Benson
2008-02-08, 17:16
And libc6 is usually there, at least running dpkg or apt without libc6 is quite tricky :)OK, then, shouldn't they depend on dpkg, which then depends on libc6? In case someone rewrites dpkg in python... :p

pipeline
2008-02-08, 17:48
Thanks Tak, any idea if lib6 dependency will work for all maemo os versions? A few of my packages target cpu (at compile time) for vfp or not and i would like a 770 quake pkg to install on gregale or bora, possibly even future 2008he.

Most are c based though.

I've got a few bora packages too that i'd want to verify that dependency works with (i dont have an os2007 to check anymore... nor 2006)

aflegg
2008-02-08, 21:59
Or, if you really don't have any dependencies (which, of course, you do), use osso-software-version or some other meta-package.