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
