Canonical's build farm integrated with Launchpad takes Debian source
packages and produces Debian binary packages. That build farm produces
packages for Ubuntu only; not for Debian.

The changes I made to gnustep-make allow production of Debian source
packages. Afterwards, they can be fed into either Launchpad (and thereafter
into Canonical's build farm and a PPA) or built locally.

If you want to build packages for a version of Debian, you should get a
machine or set up a container with the adequate version. If you want to
build packages for a version of Ubuntu, I think you just need to adjust one
string in the build file before pushing the source package into
Launchpad/PPA.

I've done this a while ago, but I'll be happy to help if I can (preferably
over a realtime communication mechanism when our timezones overlap; I'm
available evenings, Dublin time).

On Tue, Aug 26, 2014 at 9:51 PM, Gregory Casamento <[email protected]
> wrote:

> I have been thinking of setting up a server to build packages periodically
> (perhaps nightly) so that people can download and install them as they see
> fit or even use it as a package repository for GNUstep's packages for
> debian and other distros.
>
> I don't want to duplicate any efforts by the launchpad team or anything.
>  I would like to help if possible.  I can get a server on aws to do this
> periodically or allocate one of my machines here to do the build on a
> nightly basis.
>
> Any thoughts?
>
>
>
> On Sun, May 11, 2014 at 9:18 AM, Ivan Vučica <[email protected]> wrote:
>
>> Small update.
>>
>> Packages are now available in the following PPA for Ubuntu Trusty:
>> https://launchpad.net/~ivucica/+archive/gnustep
>>
>> Main goal was to make creating a Debian package, ready for upload to
>> Ubuntu's Launchpad, trivial -- and not necessarily correct. Another goal
>> was to empower other people to create their own packages (depending, of
>> course, on a recent SVN revision of gnustep-make). There are better Debian
>> packages out there (Philippe etc). If correctness is desired, I heartily
>> recommend using them.
>>
>> I currently targeted Ubuntu Trusty and not Debian proper, because of
>> Canonical's nice build farm.
>>
>> Caveats:
>> - Packages are not Lintian-clean, and they don't currently make
>> distinctions between libgnustep-* from libgnustep*-dev or -doc. That's
>> slightly more difficult to do with this kind of automation.
>> - Packages don't even have prefix lib* when they should.
>> - I make no guarantee that I'll be updating the packages regularly or
>> that I'll expand the covered packages. (Since it's trivial to do so I
>> probably will.)
>> - Packages don't use libobjc2. libobjc2 would need to be packaged first,
>> which is just slightly more work, as it uses cmake.
>> - Packages don't build with clang. Because Debian. I could and will hack
>> it together at some point.
>> - There is an inconsistency between building gnustep-make and every other
>> package. (Especially with how and when to get tarball version to have SVN
>> revision and date-time appended to it.)
>> - We don't want to list build dependencies in the shell script, but set
>> them in the project's GNUmakefile (or in .spec file). I never got around to
>> it.
>> - There are multiple targets manually called from the shell script. This
>> is intentional, to allow for optional customization between steps, without
>> touching the makefiles themselves. (Also, people may in the future want to
>> do 'make debfiles' only once, to avoid overwriting changelog, and then
>> manually deploy and unpack .orig.tar.gz before using 'make deb' for other
>> steps. Since my main goal here was to provide trivial-to-build packages
>> that are also trivial to install, and to provide tools for others to build
>> and deploy their own packages, and since I don't really want to go into the
>> business of packaging, this wasn't done.)
>> - Missing is a stub package that will depend on other packages. Sorry
>> about that.
>> - You still need to add an inclusion of Master/deb.make manually to
>> GNUmakefiles. Sorry about that.
>> - In the shellscript below, gnustep-pure/ and gnustep/ are simply two
>> checkouts of GNUstep's modules/ tree, the gnustep/ one having some local
>> uncommitted modifications, while gnustep-pure/ actually only contains
>> modules/core/. The actual paths don't matter, though.
>>
>> Note how the build processes for gnustep-make and Ink differ.
>> - gnustep-make has a 'special' build process separate from the rules it
>> itself defines.
>> - Ink is not maintained as nicely as other packages, so I had some
>> trouble getting it to create tarball with 'svn-snapshot' target. I should
>> probably take another look at that.
>>
>> Again, one of the goals was to empower people to create their own
>> packages. So if you maintain a project and want a Debian package, give this
>> approach a shot. You'll need a GPG key named the same as in
>> DEB_PACKAGE_BUILDER variable, and you'll need to associate it with your
>> PPA. After you create a PPA repository on Launchpad and build a package,
>> the 'dput' command makes it trivial to upload the package. PRIORITY=low is
>> a nice default; in the script below I'm upgrading it to normal so the build
>> is slightly prioritized and I don't have what is sometimes an 8 hour delay.
>> For a continuous build, I would (of course) be a nice guy and set it to low.
>>
>> export DEB_PACKAGE_BUILDER="Your Name <[email protected]>"
>> export DEB_BUILD_OPTIONS="parallel=16" # I have a 4-core CPU, 8 with
>> hyperthreading; so doubling should be fine.
>> export CC=gcc # In my bash_profile I define CC to clang. Rolling back to
>> default here.
>> export CXX=g++
>> export PRIORITY=normal
>>
>> # We can create a Debian package from current revision (svn-snapshot) or
>> from
>> # current working copy (svn-export).
>> if false ; then
>>   DIST_ACTION=svn-export
>>   export TARBALL_VERSION_INCLUDE_SVN_REVISION=yes
>>   export TARBALL_VERSION_INCLUDE_DATE_TIME=yes
>>   export DEB_VERSION_SUFFIX=1.$(date +%Y.%m.%d.%H.%M)
>> else
>>   DIST_ACTION=svn-snapshot
>>   export TARBALL_VERSION_INCLUDE_SVN_REVISION=yes
>>   export TARBALL_VERSION_INCLUDE_DATE_TIME=no
>>   export DEB_VERSION_SUFFIX=1
>> fi
>>
>> if true ; then
>> (cd gnustep-pure/core/make &&
>> ./configure &&
>> make debclean &&
>> make ${DIST_ACTION} &&
>> export DEB_TARBALL_VERSION=$(cat ${DIST_ACTION}-tarball-version) &&
>> make debfiles &&
>> sed -i 's/low/'${PRIORITY}'/'
>> debian_dist/gnustep-make-${DEB_TARBALL_VERSION}/debian/changelog &&
>> make deb debsign=yes &&
>> sudo dpkg -i debian_dist/*${DEB_TARBALL_VERSION}*.deb)
>> fi &&
>>
>> if true ; then
>> (cd gnustep-pure/core/base &&
>> export DEB_BUILD_DEPENDS="gobjc, libffi-dev, libxml2-dev, libicu-dev,
>> libgmp3-dev, libssl-dev, libxslt-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libgnutls-dev" &&
>> export DEB_DEPENDS="gnustep-make" &&
>> . $(gnustep-config --variable=GNUSTEP_MAKEFILES)/GNUstep.sh &&
>> ./configure --with-installation-domain=SYSTEM &&
>> make debclean &&
>> make ${DIST_ACTION} &&
>> make debfiles &&
>> sed -i 's/low/'${PRIORITY}'/'
>> obj/debian_dist/gnustep-base-*/debian/changelog &&
>> make deb debsign=yes &&
>> sudo dpkg -i obj/debian_dist/*.deb)
>> fi &&
>>
>>  if true ; then
>> (cd gnustep-pure/core/gui &&
>> export DEB_BUILD_DEPENDS="gobjc, libffi-dev, libxml2-dev, libicu-dev,
>> libgmp3-dev, libssl-dev, libxslt-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libgnutls-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libjpeg-dev, libtiff-dev,
>> libpng-dev, libcairo-dev, libxt-dev, libgl1-mesa-dev, libglu1-mesa-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, gnustep-base" &&
>> export DEB_DEPENDS="gnustep-make, gnustep-base" &&
>> . $(gnustep-config --variable=GNUSTEP_MAKEFILES)/GNUstep.sh &&
>> ./configure &&
>> make debclean &&
>> make ${DIST_ACTION} &&
>> make debfiles &&
>> sed -i 's/low/'${PRIORITY}'/'
>> obj/debian_dist/gnustep-gui-*/debian/changelog &&
>> make deb debsign=yes &&
>> sudo dpkg -i obj/debian_dist/*.deb)
>> fi &&
>>
>> if true ; then
>> (cd gnustep-pure/core/back &&
>> export DEB_BUILD_DEPENDS="gobjc, libffi-dev, libxml2-dev, libicu-dev,
>> libgmp3-dev, libssl-dev, libxslt-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libgnutls-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libjpeg-dev, libtiff-dev,
>> libpng-dev, libcairo-dev, libxt-dev, libgl1-mesa-dev, libglu1-mesa-dev" &&
>>  export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, gnustep-base,
>> gnustep-gui" &&
>> export DEB_DEPENDS="gnustep-make, gnustep-base, gnustep-gui" &&
>> . $(gnustep-config --variable=GNUSTEP_MAKEFILES)/GNUstep.sh &&
>> ./configure &&
>> make debclean &&
>> make ${DIST_ACTION} &&
>> make debfiles &&
>> sed -i 's/low/'${PRIORITY}'/'
>> obj/debian_dist/gnustep-back-*/debian/changelog &&
>> make deb debsign=yes &&
>> sudo dpkg -i obj/debian_dist/*.deb)
>> fi &&
>>
>> if true ; then
>> (cd gnustep/usr-apps/examples/gui/Ink &&
>> export DEB_MAINTAINER="GNUstep Developers <[email protected]>" &&
>> DIST_ACTION=svn-export &&
>> export TARBALL_VERSION_INCLUDE_SVN_REVISION=yes &&
>> export TARBALL_VERSION_INCLUDE_DATE_TIME=yes &&
>> export DEB_VERSION_SUFFIX=1.$(date +%Y.%m.%d.%H.%M) &&
>> export DEB_BUILD_DEPENDS="gobjc, libffi-dev, libxml2-dev, libicu-dev,
>> libgmp3-dev, libssl-dev, libxslt-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libgnutls-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, libjpeg-dev, libtiff-dev,
>> libpng-dev, libcairo-dev, libxt-dev, libgl1-mesa-dev, libglu1-mesa-dev" &&
>> export DEB_BUILD_DEPENDS="${DEB_BUILD_DEPENDS}, gnustep-base,
>> gnustep-gui" &&
>> export DEB_DEPENDS="gnustep-make, gnustep-base, gnustep-gui" &&
>> export DEB_RECOMMENDS="gnustep-back" &&
>> . $(gnustep-config --variable=GNUSTEP_MAKEFILES)/GNUstep.sh &&
>> make debclean &&
>> make ${DIST_ACTION} &&
>> make debfiles &&
>> sed -i 's/low/'${PRIORITY}'/'
>> obj/debian_dist/gnustep-Ink-*/debian/changelog &&
>> make deb debsign=yes &&
>> sudo dpkg -i obj/debian_dist/*.deb)
>> fi &&
>>
>>
>> echo "Done"
>> echo "dput ppa:your-launchpad-username/your-launchpad-repository
>> gnustep-pure/core/{make,base/obj,gui/obj,back/obj}/debian_dist/*_source.changes
>> gnustep/usr-apps/examples/gui/Ink/obj/debian_dist/*_source.changes"
>>
>>
>>
>> On Mon, May 5, 2014 at 2:48 AM, Ivan Vučica <[email protected]> wrote:
>>
>>> Cheers,
>>>
>>> I've checked in improved support for Debian packaging into gnustep-make.
>>> Previously only production of binary packages was possible; now, 'make deb'
>>> will produce actual source packages.
>>>
>>> Also, <package>.spec files are parsed in a very elementary way and used
>>> as additional input for Debian control files, reducing need for duplication
>>> of data.
>>>
>>> Example script is below (presuming GNUstep's 'modules' is checked out
>>> into gnustep-pure/ directory). 'if true' is there solely so I can more
>>> easily disable building of a particular package. Note that packages do need
>>> to be installed as part of the build process, as each package that follows
>>> depends on the previous one being actually installed.
>>>
>>> Aside from the script below, I have also played a bit with the ability
>>> to install GNUstep into /GNUstep with a non-fhs layout. The script is a
>>> total mess, so I'm not including a description of how to do it at this
>>> point.
>>>
>>> Small patches were done to other core libraries; their GNUmakefiles are
>>> now including Master/deb.make, and their specfiles now include a tiny bit
>>> more consistent (and larger) amount of data.
>>>
>>> Some known issues exist: The packages are not lintian-clean.
>>> gnustep-make is correctly defined in its control file as 'it builds on any
>>> platform'; apparently when building a package on Canonical's Launchpad that
>>> means 'it builds on i386'. Since other packages have locally been
>>> (incorrectly) defined as building on x86_64, that means no other package
>>> has been built.
>>>
>>> I'd appreciate it if people checked if I broke their workflow or
>>> anything else; this did consist of messing around with the core of the
>>> build system, so who knows what I broke. (Without a code review procedure
>>> or a DVCS, it's hard to request code review apart from submitting .patches
>>> to the mailing list. And that doesn't feel too fun.)
>>>
>>> export DEB_PACKAGE_BUILDER="Ivan Vucica <[email protected]>"
>>> export DEB_BUILD_OPTIONS="parallel=16"
>>> export CC=gcc
>>> export CXX=g++
>>>
>>> if true ; then
>>> (cd gnustep-pure/core/make
>>> ./configure
>>> make deb debsign=yes
>>> sudo dpkg -i debian_dist/*.deb)
>>> fi
>>>
>>> if true ; then
>>> (cd gnustep-pure/core/base
>>> ./configure
>>> make deb debsign=yes
>>> sudo dpkg -i obj/debian_dist/*.deb)
>>> fi
>>>
>>> if true ; then
>>> (cd gnustep-pure/core/gui
>>> ./configure
>>> make deb debsign=yes
>>> sudo dpkg -i obj/debian_dist/*.deb)
>>> fi
>>>
>>> if true ; then
>>> (cd gnustep-pure/core/back
>>> ./configure
>>> make deb debsign=yes
>>> sudo dpkg -i obj/debian_dist/*.deb)
>>> fi
>>>
>>> --
>>> Ivan Vučica
>>> [email protected]
>>>
>>
>>
>>
>> --
>> Ivan Vučica
>> [email protected]
>>
>> _______________________________________________
>> Discuss-gnustep mailing list
>> [email protected]
>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
>>
>>
>
>
> --
> Gregory Casamento
> Open Logic Corporation, Principal Consultant
> yahoo/skype: greg_casamento, aol: gjcasa
> (240)274-9630 (Cell)
> http://www.gnustep.org
> http://heronsperch.blogspot.com
>



-- 
Ivan Vučica
[email protected]
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to