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
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to