(Dropping moin-user from this discussion...)
On Monday, 28 February 2022 18:46:08 CET Lukasz Szybalski wrote:
> On Fri, Feb 25, 2022 at 5:01 PM Paul Boddie <paul(a)boddie.org.uk> wrote:
> >
> > I looked into the Debian packaging requirements, and it seems to me that
> > the following packages are needed (not being available in Debian):
>
> Awsome. Thank you!!
No problem!
> > emeraldtree
> > Flask-Theme
> > flatland
> > XStatic-CKEditor
> > XStatic-autosize
> > XStatic-jQuery-File-Upload
> > XStatic-TWikiDraw-moin
> > XStatic-AnyWikiDraw
> > XStatic-svg-edit-moin
> > XStatic-JQuery.TableSorter
> > XStatic-Pygments
> >
> > There are already Flask and XStatic packages in Debian, but not those
> > listed above. I have just been looking at the first three in this list,
> > and it seems feasible to try and put together some quick packages for
> > them, assuming that I can rediscover how to make Debian packages.
>
> If you do, and have the instructions please share, we can assist in
> packaging the rest. I wonder if there is somone we should cc, that has in a
> past packaged python packages like this, that would be able to guide us
> through this over the next two weeks?
OK, my approach has been as follows. First of all, I set up sbuild so that I
can build packages cleanly. The Debian Wiki has instructions for this, but
their styling is broken, making the code fragments difficult to read:
https://wiki.debian.org/sbuild
I found that installing sbuild and following the instructions mostly helped.
You need to add yourself to the sbuild group and log out and in again, or use
newgrp to get immediate access to the group.
You also need to create a chroot for sbuild, which I did by copying from the
sbuild-createchroot manual page:
sudo sbuild-createchroot unstable /srv/chroot/unstable-amd64 \
--alias=sid --alias=UNRELEASED \
http://deb.debian.org/debian
For each package, I obtain the unpackaged source code, which is usually just
doing a git clone. So, something like this:
git clone https://github.com/moinwiki/emeraldtree.git
Then, I've made an "original source" archive from that for a given tag. Git's
interface for this is cumbersome, of course, but here's what I do:
cd emeraldtree
git archive --format=tgz \
--prefix=emeraldtree-0.9.2/ \
--output=../emeraldtree_0.9.2.orig.tar.gz \
0.9.2
This puts the archive in the parent directory. With that, I then found that it
rather helped to actually check out the changeset corresponding to the chosen
tag:
git checkout 0.9.2
Otherwise, the Debian tools complain about the files not matching the
"original source" archive.
Now, at this point, the actual packaging files need to be written. Apparently,
the debmake tool can initiate this process, but I just went and found
reasonable enough files from other packages and then made my own packaging
files. These all live in the debian directory within the repository being
packaged. Here, "apt-get source <package>" for similar packages can be helpful
to see what they do.
Finally, I run sbuild to perform the build:
sbuild .
Hopefully, this all works and you get a bunch of files produced in the parent
directory.
So, in summary, here's the process:
cd <name>
git archive --format=tgz \
--prefix=<name>-<version>/ \
--output=../<name>_<version>.orig.tar.gz \
<changeset>
git checkout <changeset>
# <- Here we populate the debian directory.
sbuild .
I did find the following pages somewhat helpful:
https://www.debian.org/doc/manuals/debmake-doc/index.en.htmlhttps://wiki.debian.org/Python/LibraryStyleGuide
However, the documentation in general suffers from adding even more words and
more links to a Web page, and if that doesn't help explain everything, just
add even more. Consequently, the above process is probably not optimal, but
then that is what happens when confronted with lots of apparent choices and
special cases, even though the tooling has tried to automate a lot of the
adaptation required.
I have put my own packaging attempts here in Mercurial repositories:
https://hg.boddie.org.uk/Moin/
What I do, when the process demands the debian directory, is to copy the
directory out of my packaging repository:
cp -R ../Packaging/emeraldtree/debian .
None of this is elegant, but I did make it work in a reasonable amount of time
without having to spend even longer second-guessing tools or hunting down the
preferred tool or wrapper that would supposedly make it elegant.
Anyway, I hope this is informative if not completely helpful. I suppose the
next step would be for me to file an "intent to package" (ITP) issue in the
Debian bug tracker for each package and then find a packaging mentor. That is
what I did last time I packaged anything in Debian.
Paul