From owner-freebsd-ports@FreeBSD.ORG Sat Apr 5 01:36:07 2008 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AEFF8106566C for ; Sat, 5 Apr 2008 01:36:07 +0000 (UTC) (envelope-from mkhitrov@gmail.com) Received: from wr-out-0506.google.com (wr-out-0506.google.com [64.233.184.237]) by mx1.freebsd.org (Postfix) with ESMTP id 685168FC1A for ; Sat, 5 Apr 2008 01:36:07 +0000 (UTC) (envelope-from mkhitrov@gmail.com) Received: by wr-out-0506.google.com with SMTP id 50so319455wra.13 for ; Fri, 04 Apr 2008 18:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=GPZpfDAJ29d/KXZrB4Ei329kh3UW9q9fDDDF2xAoIYI=; b=gqxTfzOpsnPopF5IO1eWnV1n48hDbW4OQ9sZW0W54Xpptb87dR+lqhGd9cx+k9zNNIsG8ODrH934IbJaspD6pne5b99jN2IbchGZbr6dCuguavlpODZ6PZZhiWEI6uSMV96Ax2V3XImwvzMZMOzPr3ZDfFOycZIhIY9d2u8m0AA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=w0+ONoglZaDWEQXpMeo7WyXw46tCafbwryPPkNqBRp2tz1HoQv0iOu1ObeL2MLJz2mTaGlgAyvJz75JJ2rrNzGtXr2SzGeTcLXx1Gk9oBXEjWxNdb6X3XYLsMp5pR89BQYo9l7TKkhdUT0P2Y7qw+pgEjbTfeEbWQdN4uyIjUbc= Received: by 10.150.139.15 with SMTP id m15mr991283ybd.30.1207357885210; Fri, 04 Apr 2008 18:11:25 -0700 (PDT) Received: by 10.150.146.6 with HTTP; Fri, 4 Apr 2008 18:11:25 -0700 (PDT) Message-ID: <26ddd1750804041811p4bb2c4f5tbab3f9659f88e8bb@mail.gmail.com> Date: Fri, 4 Apr 2008 21:11:25 -0400 From: "Maxim Khitrov" To: freebsd-ports@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: FreeBSD Custom Package Server X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Apr 2008 01:36:07 -0000 Hi all, I maintain several FreeBSD servers all of which currently use the ports system to install and update the needed software. I don't like using packages since I often need customizations made during the build process. For instance, my remote VPS has only 2 GB of disk space, so I need to build everything with the "-Os -s" optimization to make executables as small as possible. At the same time, some of the systems are also very limited in memory or processing power, so rebuilding certain ports (even with the help of ccache) is often a slow process. I'd like to help myself with a deployment of my own package server. It would work in a similar manner to the official FreeBSD servers, but there should be a dynamic component to it such that the client could request any number of customizations to the resulting packages. Basically, I don't want to sacrifice any of the flexibility of the ports system, only offload the actual build process to another dedicated machine. First question I have is if anyone is aware of software that already does this sort of thing? How well does it work? If not, I plan try to write this on my own. Ideally, I'd like to have a web interface using which I can submit a request to the server for any valid port. The request would contain information such as what version of FreeBSD the resulting package will be installed on, what CFLAGS and CPUTYPE to use, any WITH[OUT]_* knobs, whether dependencies should be included, and whatever else the port needs. The server would of course have a caching layer to avoid rebuilding packages with matching configurations. For any package that isn't cached, the server will build it and place it into a directory from which it can be downloaded by the client machine. The user who made the request would be notified by e-mail when all the needed packages are ready to be installed. An xml-rpc or similar interface may also be added, so requests could be submitted using a specialized program from within the client system. Those are my initial thoughts on how something like this should work. If there are no current tools for it, do you guys think that it's a useful project to attempt? Would anyone actually be interested in something like this making it into the ports tree so you can quickly deploy package servers of your own? What other features should this software have to make it a good hybrid between the pure ports and package systems that are currently being used? - Max P.S. If there is genuine interest in such functionality, I could consider making it an application for Google Summer of Code this year. I was a participant last year, but I only have until the 7th of April to submit a proposal. It was one of those spontaneous ideas that I didn't think much about previously, so I'm looking for some feedback from the community.