Skip to content

Rework make deb / make debfiles to not use CDBS #67

@ivucica

Description

@ivucica

Pull request #61 is trying to delete bake_debian_files.sh (seemingly without checking where it is used or why since it would leave make deb and make debfiles targets).

If CDBS is going away and the shellscript already doesn't work, this might be the right thing to do, if it wasn't for CDBS actually not being extremely required. It's helping, but it is not a necessity for creating the source packages for Debian.

Let's modernize make deb / make debfiles or just bake_debian_files.sh so it can be used once again in quickly creating Debian package chain.

I previously had this, which still looks like it could be dropped into a CI system and produce both source tarballs and binary .debs.

00-ubuntu-deps.sh
05-vcs-checkout.sh
10-build-llvm.sh
15-build-libobjc2.sh
16-pack-libobjc2.sh
20-build-gnustep-make.sh
21-pack-gnustep-make.sh
22-finalize-gnustep-make.sh
25-build-gnustep-base.sh
26-pack-gnustep-base.sh
30-build-gnustep-gui.sh
31-pack-gnustep-gui.sh
35-build-gnustep-back.sh
36-pack-gnustep-back.sh
40-build-gnustep-corebase.sh
45-patch-gnustep-opal.sh
46-build-gnustep-opal.sh
50-build-gnustep-quartzcore.sh
60-build-app-systempreferences.sh
65-build-app-ink.sh
70-build-app-calculator.sh
75-build-app-simpleagenda.sh

It worked in the past for some versions of Ubuntu to produce a PPA built on Canonical's builders; it could be adapted to do the work on other CI systems.

This is so especially since I did some work on doing this inside Docker (but I do not remember how usable it is):

build-gsbuilder.sh  build.sh  debsettings.sh  docker-extra-environment.sh  Dockerfile  Dockerfile.updater  docker-produce.sh  docker-update-builder-container-image.sh  README.md  run-build.sh  single-dockerfile.sh

pam:
Dockerfile  pam.sh

prep:
Dockerfile  prep-gsbuilder.sh  prep.sh

prereq:
Dockerfile  prereq.sh

Therefore, the first step would be to make sure that modern Debian stable can produce a working GNUstep Make and a working GNUstep Base, with or without libobjc2, using this chain.


Note: even when I was working on this, it was never meant to be a replacement for the actual, properly provided Debian packages, but an alternative package set, focusing on using libobjc2 instead of GCC runtime, building with clang, and possibly providing fresher packages -- less tested, less certain to fit into a Debian system, less adhering to the FHS and such, less verifying long-term binary compatibility; but fresher.

Back then, I was also targeting Ubuntu LTS simply because of how easy PPAs were to add. Today, some goals could be similar (fresher; alternative FS layout), but also a demo of how easy it is to package a GNUstep program or library without it being aware Debian packaging is happening.

$ cat 36-pack-gnustep-back.sh 
#!/bin/bash

if [ "x$WITH_DEB" == "x1" ] ; then

######
cd "$GSU_BUILD_ROOT"/

echo "Packaging gnustep-back"
echo "================="

cd gnustep/core/back

# Double-include of deb.make is bad.
#  sed 's,\(include $(GNUSTEP_MAKEFILES)/aggregate.make\),\1\ninclude $(GNUSTEP_MAKEFILES)/Master/deb.make,' < GNUmakefile > GNUmakefile_deb
cp GNUmakefile GNUmakefile_deb

# GNUmakefile refers to svn+ssh://svn.gna.org... which we cannot expect to work for everyone.
sed -i 's_svn.ssh://_svn://_g' GNUmakefile_deb

if make -f GNUmakefile_deb GNUSTEP_INSTALLATION_DOMAIN=SYSTEM svn-export ; then
        echo "Producing source code for packaging done"
else
        echo "Producing source code for packaging failed"
fi

if make -f GNUmakefile_deb GNUSTEP_INSTALLATION_DOMAIN=SYSTEM debfiles ; then
        echo "Preparation for packaging done"
else
        echo "Preparation for packaging failed"
fi

if [[ ! -z "${DEB_URGENCY}" ]] ; then
        sed -i 's/low/'${DEB_URGENCY}'/' debian_dist/gnustep-back-*/debian/changelog
fi

if make -f GNUmakefile_deb GNUSTEP_INSTALLATION_DOMAIN=SYSTEM deb debsign=yes ; then
        echo "Package built"
        cp *.deb "$GSU_BUILD_ROOT"/
else
        echo "Packaging failed"
        exit 1
fi

if sudo dpkg -i obj/debian_dist/*.deb ; then
        echo "Installing gnustep-back deb done."
else
        echo "Installing gnustep-back deb failed."
        exit 1
fi
######

fi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions