From owner-freebsd-current@FreeBSD.ORG Fri Mar 25 10:40:52 2011 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB6F51065670; Fri, 25 Mar 2011 10:40:52 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 258188FC1E; Fri, 25 Mar 2011 10:40:51 +0000 (UTC) Received: by wyf23 with SMTP id 23so1073971wyf.13 for ; Fri, 25 Mar 2011 03:40:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:date:from:to:subject:message-id :mime-version:content-type:content-disposition:user-agent; bh=pjiZh3Fout4W9yLPRajqB/kSvs5rtznlRSHZy8Qa2LM=; b=AtaEcnjDydxhSnQsWHt6NlfIpz3yopsrP/O7rmxEj4qWQMyFfEgu3QBebApuLGV7Kx JptCrHgIMv1q21Ak6Eg3PTzeh2LE5JiH1tH9kbY7lFltlQMdj03BxgOUOkzyBU8OwVxr YSfWs+OnvUGNQ12jSO4mlQstUQ6ydiJILbdtY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:date:from:to:subject:message-id:mime-version:content-type :content-disposition:user-agent; b=r402P9l9Ag7CJgZcFyykp9RRr6NxDzmlzhzjS/x9TkrAOBXDO+JnfQtZf6BkLEXt5p Q79nTRABZrfZYjSL3sAXHnsE0bY3YhjSULHqJiDRX6vbmBN223QII9kPMonOxb62DySM pRc5uZjA/u5ZktaPeR94yo82VaO23d84JOTR8= Received: by 10.216.190.40 with SMTP id d40mr536147wen.34.1301047875455; Fri, 25 Mar 2011 03:11:15 -0700 (PDT) Received: from azathoth.lan (mlr78-1-82-232-208-178.fbx.proxad.net [82.232.208.178]) by mx.google.com with ESMTPS id z50sm279026weq.47.2011.03.25.03.11.13 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 25 Mar 2011 03:11:14 -0700 (PDT) Sender: Baptiste Daroussin Date: Fri, 25 Mar 2011 11:11:11 +0100 From: Baptiste Daroussin To: ports@FreeBSD.org, hackers@FreeBSD.org, current@FreeBSD.org Message-ID: <20110325101111.GA36840@azathoth.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="cWoXeonUoKmBZSoM" Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Cc: Subject: [ECFT] pkgng 0.1-alpha1: a replacement for pkg_install X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Mar 2011 10:40:52 -0000 --cWoXeonUoKmBZSoM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi all, miwi@ launched the new thing called Experimental Call For Testing, it's our turn :) Julien Laffaye (jlaffaye@) and I, helped by Philippe Pepiot (huge contributor) have been working since the end of the last GSoC on a rewrite of pkg_install. pkgng is a binary package manager written from scratch for FreeBSD. After a long period of technology testing, (json, tinycdb, bdb, etc) and we now have achieved to implement the basic functionnality. We would greatly approciate to have some feedback, wider testing, patching, documenting etc, before implementing the higher level features. pkgng is built on top of a new libpkg, which allow to deal with the database of installed packages, to deal with remote repositories, manage packages: creation, installation gathering informations, registering new ports. features supported are or will be : - smooth integration with bsd.port.mk (including bsd.pkg.mk line 2486) which allow to have a bsd.port.mk which deal with both pkg_install and pkgng. (done in alpha) - the register command can analyse elf files when registering a new port to discover forgotten dependencies if necessary. (done in alpha using libelf) - the register command has two mode available : when dealing with old fashion ports it just registers the package, in new mode it does everything that would have been done by pkg add when installing the package : should display messages, execute post-install, execute @exec etc. (old fashion done in the alpha) - pkg add supports two mode : the old fashion one (no real upgrade support) and new one: upgrade scripts supported. (old fashion in the alpha) - new scripts supported +PREINSTALL +POSTINSTALL, +PREDEINSTALL, +POSTDEINSTALL, +PREUPGRADE, +POSTUPGRADE as well as the old fashion scripts : +INSTALL +DEINSTALL +UPGRADE (all supported *UPGRADES aren't supported in the alpha) - new +MANIFEST (plist-like format) with new metadatas : options, arch, os version, etc. (done in the alpha) - pkgng supports checking arch of the package which means that users won't be able to install sparc64 binary package into amd64 machines. (not done yet) - a special architecture "all" allows to specify when a package can be used on every architecture. (not done yet) - @dirrm and @dirrmtry are now deprecated, pkgng can discover itself which directory has to be removed. (done in the alpha but needs love :)) - new repository (apt-like feature) (only the repository generation is done) - real support for reverse dependency (no ugly +REQUIRED_BY) (done in the alpha) - test unit (libcheck) on libpkg. (done in the alpha needs some more love) - many more In term of technology we decided to use a sqlite3 database, and to prevent potential trolling, sqlite3 is used in it's amalgamation form which means it is incorporated in the code sources (as recommanded by sqlite developpers like a statically linked library) on build we only activate the features we need in sqlite. The alpha release come with an experimental tool "pkg2ng" to convert an existing package database to the new pkgng database format. So one can test pkgng without rebuild all its packages. One of the thing we are thinking about pkgng is to perhaps be able to provide it only as a ports (with simple script in base to boostrap/install it). That would allow pkgng to live with the ports to be able to easily integrate new features without having to support very old version of pkgng. design: pkgng is composed of : - a clean library "libpkg" that does all the work - a modern cli frontend (pkg) which accept subcommands, basically type pkg add, pkg info, pkg create etc. a dedicated subcommand exists for ports: pkg register which goal is to only supported adding to the database what is already installed. more informations can be found here: http://git.etoilebsd.net/pkgng/tree/docs/GOALS, http://git.etoilebsd.net/pkgng/tree/README http://git.etoilebsd.net/pkgng/tree/docs/TODO To download the alpha: http://git.etoilebsd.net/pkgng/snapshot/pkgng-0.1-alpha1.tar.gz Build it with debugging information: make DEBUG_FLAGS="-g -O0 -DDEBUG" Developpement site: http://git.etoilebsd.net/pkgng/ IRC chan: #pkgng@freenode Beware that pkgng is in alpha states, it can kill kittens and eat puppies, and for sure it will do it so now you are warned. regards, bapt, --cWoXeonUoKmBZSoM Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk2Maj8ACgkQ8kTtMUmk6EyXfQCgvm3Jxn56dYsUn4reW+4TNXXR /ykAoJld7THTIRcj6Ep5xBNnPFEswv07 =qzf7 -----END PGP SIGNATURE----- --cWoXeonUoKmBZSoM--