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
