Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E6AA7200B9A for ; Fri, 7 Oct 2016 22:58:12 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E5733160AE8; Fri, 7 Oct 2016 20:58:12 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CC4EA160AC6 for ; Fri, 7 Oct 2016 22:58:11 +0200 (CEST) Received: (qmail 16906 invoked by uid 500); 7 Oct 2016 20:58:10 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 16890 invoked by uid 99); 7 Oct 2016 20:58:10 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Oct 2016 20:58:10 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 0DFB61A0455 for ; Fri, 7 Oct 2016 20:58:10 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.648 X-Spam-Level: X-Spam-Status: No, score=0.648 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id HPwaV-I73J6O for ; Fri, 7 Oct 2016 20:58:08 +0000 (UTC) Received: from mail-vk0-f48.google.com (mail-vk0-f48.google.com [209.85.213.48]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 38B185FACD for ; Fri, 7 Oct 2016 20:58:07 +0000 (UTC) Received: by mail-vk0-f48.google.com with SMTP id z126so55174643vkd.0 for ; Fri, 07 Oct 2016 13:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=7yU8SsKkCQlJ8ociS4oqLfJJ4lOTTzh6rdUh6ya9l9w=; b=R2bNG7kRkc2tCUTO2GgbN1QxcJPW0dPzkUhd+AXJKyS9W+0eD2D0kZNNk+N2DLnvP4 E7PTN9ZbXLHnt6lCjtSUrmkOelJ7ycB3HK7fq0e2uBBnLuimJPT589Iv0YaRiZmqEQz5 9kd7VY8kuWbCka/hvn3s636DBCjHGigAH3te/l+YH4l4P3XT1p2qzYnJC8fIiYF/mXKs 5tclsMYAt7mv5DS+xgObHbhWNZ9wOSMu+6Wer90SzLwf0zunYJ4DPPWOMY1fogTpm3R5 JzFAFAOxJUYCqvTQTZlfuWYivdUwZPT3nvnctFTLcblgyKnON4wJ6isv4nPdi9+kSZIJ YxiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=7yU8SsKkCQlJ8ociS4oqLfJJ4lOTTzh6rdUh6ya9l9w=; b=L7sDZy1qclJDhImt9H2HKJ+aclFd11AyiZbWbLxpPpclRZY0RDctxHi0Uvd+mGbQl+ UjQPQ2FRLffwujLTpX48DaSRFHjHWmtJofSO+jsK2s3fP5FOolpW/xtgyhW48EV118Hf yAvVmuLVo/b00W3D476eBVkplPaDStf5rMw4VfUlJtJYhQHWFDsTJqq4/J0+OikZIePA j1dxBn2yHA2pyg/jEpm4L4aY3EsPcrH9E9tzlaYyxgx1D+RcpLExRdX+R1fmYu+Pqy/E 3QlElXAtfTCzloPop/oBhfs1ZeGyoza9S37PBU0hUeybnscXvHczGxW1xGPyjTGSHw10 23jg== X-Gm-Message-State: AA6/9Rlm6DTvXVVGrCWhpdeDJ73dFt6vVqBgkixJXMS7xsG0zijIjAM10yWxbXFJ9NmaeQ== X-Received: by 10.31.92.216 with SMTP id q207mr10218402vkb.147.1475873886056; Fri, 07 Oct 2016 13:58:06 -0700 (PDT) Received: from [192.168.1.11] ([47.198.54.13]) by smtp.googlemail.com with ESMTPSA id 127sm6568583vkj.16.2016.10.07.13.57.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Oct 2016 13:57:59 -0700 (PDT) Subject: Re: CouchDB 2.0 as Snap To: dev@couchdb.apache.org References: <35aa50dc-665c-3e7c-f406-b5b51b13d26e@gmail.com> <2B63806F-804A-4F4E-A6D0-2B8BBD790D68@apache.org> <573e3885-f334-a6ae-1086-90d67ad582c9@gmail.com> <84D70CFC-6FC5-4DC1-8AC7-465468912839@apache.org> From: Michael Hall Message-ID: <65aea1c0-5d27-9245-04a9-a0231a20467e@gmail.com> Date: Fri, 7 Oct 2016 16:57:50 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <84D70CFC-6FC5-4DC1-8AC7-465468912839@apache.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit archived-at: Fri, 07 Oct 2016 20:58:13 -0000 I've done a little more work on the snapcraft.yaml, and integrated it with couchdb's build files. Pull request is https://github.com/apache/couchdb/pull/442 You can now ./configure && make snap Michael Hall mhall119@gmail.com On 10/06/2016 12:57 PM, Adam Kocoloski wrote: > Nice work Michael! > > I noticed your snap.ini overrides the bind address for both the cluster port and the node-local port to have them listen on all interfaces. I think it’s worth discussing whether we want that to be the default for the snap. There’s a reason CouchDB defaults to listening only on the loopback interface. Otherwise it looks good to me. > > Adam > >> On Oct 6, 2016, at 8:39 AM, Michael Hall wrote: >> >> Hey everyone, >> >> Sorry for the long delay, but I got some help from a coworker and >> between the two of us we have fixed the issue with the systemd service. >> >> If you put the attached files into a directory with the couchdb >> directory from ./rel/ you get after building, then run "snapcraft snap" >> you will get a ~40MB couchdb_2.0_amd64.snap (or whatever arch you're on) >> that, when installed with "snap install couchdb_2.0_amd64.snap >> --force-dangerous" will get you a running couchdb instance on >> http://localhost:5984 (see attached screenshot). The --force-dangerous >> is only needed because it's a local (untrusted) file, once it's being >> published into the snap store that won't be needed and user can install >> it with a simple "snap install couchdb". >> >> It's configured to put local.ini and couchdb.log into SNAP_DATA, which >> will be /var/snap/couchdb// and the actual database files in >> SNAP_COMMON which will be /var/snap/couchdb/common/. The first will be >> forward-copied every time you install a new version, the second is >> unversioned so you won't be duplicating large database files on upgrades. >> >> I'd like to get this into upstream now that it produces a working snap, >> and from there it can be improved as needed based on feedback from users. >> >> Michael Hall >> mhall119@gmail.com >> >> On 09/19/2016 07:36 PM, Robert Newson wrote: >>> Make a separate systemd service for epmd and have the couch one depend on it. There is a parameter you can add to couch's vm.args file to prevent it even trying to start epmd. >>> >>> Sent from my iPhone >>> >>>> On 19 Sep 2016, at 22:47, Michael Hall wrote: >>>> >>>> Thanks to help from Jan and Wohali on IRC, I was able to manually build >>>> couchdb from the 2.0.x branch, and then snap-package the resulting >>>> binary. I have attached the snapcraft.yaml used for this. Put this file >>>> in a directory with the couchdb directory built in ./rel/, then run >>>> "snapcraft snap" to build couchdb_2.0_amd64.snap >>>> >>>> The snap package will create a systemd service file for running couchdb >>>> as a daemon, but due to the way it launches a background epmd process >>>> this isn't working right (systemd thinks it failed to start and keeps >>>> trying to restart it until it givesup). Because of that, I've also >>>> included a /snap/bin/couchdb.run which will manually kick it off, but >>>> this should only be temporary until the daemon process can be fixed. >>>> >>>> One last caveat, you'll need to copy /snap/couchdb/current/etc/*.ini >>>> into /var/snap/couchdb/current/ and mkdir /var/snap/couchdb/current/data >>>> before running it. This could be done at runtime either by couchdb >>>> itself, or with a custom wrapper script for the snap command. >>>> >>>> Michael Hall >>>> mhall119@gmail.com >>>> >>>>> On 09/19/2016 01:19 PM, Jan Lehnardt wrote: >>>>> >>>>>> On 19 Sep 2016, at 19:13, Michael Hall wrote: >>>>>> >>>>>> Maybe I'm using the wrong branch, because the Makefile has an "install" >>>>>> target but not a "release" target. I'm using developer-preview-2.0, if >>>>>> that's not the correct one, which should I use? >>>>> >>>>> Please use the `2.0.x` branch. >>>>> >>>>> Best >>>>> Jan >>>>> -- >>>>> >>>>>> >>>>>> Michael Hall >>>>>> mhall119@gmail.com >>>>>> >>>>>>> On 09/19/2016 12:10 PM, Jan Lehnardt wrote: >>>>>>> Heya, nice effort here :) >>>>>>> >>>>>>> CouchDB 2.0 doesn’t use autotools. It mimics them minimally, but only >>>>>>> insofar as it is useful for CouchDB and not for tools that expect >>>>>>> autotools-like behaviour. >>>>>>> >>>>>>> Over time, we want to make it so that the CouchDB install procedure >>>>>>> fits right into normal tooling, but we are not there yet. >>>>>>> >>>>>>> Especially, `make install` is not available in 2.0. Instead, we >>>>>>> have `make release` which produces a location independent directory >>>>>>> `./rel/couchdb` that you can move into your system where you need it. >>>>>>> >>>>>>> There is no way to externalise log files or so from a setup perspective >>>>>>> (although it can be configured in local.ini). >>>>>>> >>>>>>> HTH >>>>>>> >>>>>>> Best >>>>>>> Jan >>>>>>> -- >>>>>>> >>>>>>>> On 19 Sep 2016, at 17:48, Michael Hall wrote: >>>>>>>> >>>>>>>> I have attached the snapcraft.yaml file I've started. This is used by >>>>>>>> the snapcraft tool to build and package a .snap file (just run >>>>>>>> `snapcraft snap` in the same directory as this file). >>>>>>>> >>>>>>>> You can see that most of it is dedicated to grabbing the source, >>>>>>>> specifying build dependencies (build-packages) and runtime dependencies >>>>>>>> (stage-packages). The 'autotools' plugin will run the standard >>>>>>>> "./configure; make; make install" steps on the source, and while the >>>>>>>> output of those claims to be successful, make returns with a non-zero >>>>>>>> status code ($?=2) which causes snapcraft to abort after building. >>>>>>>> >>>>>>>> As mentioned previously, this could be significantly simplified if it >>>>>>>> could use the build processes already in place. In that case the >>>>>>>> snapcraft.yaml would only need to be pointed to the local directory >>>>>>>> containing the binary files needed to include in the .snap package. If >>>>>>>> somebody wants to give that a try, I can put together a new >>>>>>>> snapcraft.yaml that will do that. >>>>>>>> >>>>>>>> >>>>>>>> Michael Hall >>>>>>>> mhall119@gmail.com >>>>>>>> >>>>>>>>> On 09/19/2016 02:56 AM, Constantin Teodorescu wrote: >>>>>>>>> It would be nice to have two snap packages: >>>>>>>>> - CouchDB 2.0 UN-CLUSTERED >>>>>>>>> - CouchDB 2.0 CLUSTERED VERSION >>>>>>>>> >>>>>>>>> That will encourage a lot of "standalone" CouchDB users to upgrade to a 2.0 >>>>>>>>> version without the clustering overload stuff, and thus make a big pool of >>>>>>>>> 2.0 testers and bug-reporters! >>>>>>>>> Teo >>>>>>>>> >>>>>>>>> >>>>>>>>>> On Mon, Sep 19, 2016 at 4:47 AM, Michael Hall wrote: >>>>>>>>>> >>>>>>>>>> First off, congratulations on the upcoming 2.0 release! >>>>>>>>>> >>>>>>>>>> I would love to see this new version available as a Snap package for >>>>>>>>>> users of Ubuntu 16.04 LTS, since the archive version will be frozen on >>>>>>>>>> 1.6.0 for the next 5 years of it's lifecycle. >>>>>>>>>> >>>>>>>>>> Snaps are self-contained packages that include all of the dependencies >>>>>>>>>> they need, which lets them run as you (the upstream) intended across new >>>>>>>>>> releases of Ubuntu, Debian, Arch, and many other distros. They run in a >>>>>>>>>> sandbox that protects them from changes made to the user's system, but >>>>>>>>>> with a number of optional interfaces if you need deeper interaction or >>>>>>>>>> to share data with other apps. >>>>>>>>>> >>>>>>>>>> Every snap includes its own file tree, and is run on top of the same >>>>>>>>>> base image regardless of distro or form factor. This keeps the >>>>>>>>>> application's own files isolated from other apps and the host system, in >>>>>>>>>> a read-only filesystem, which makes updating them safe and simple while >>>>>>>>>> keeping you in control of the whole stack that your application runs on. >>>>>>>>>> The snappy runtime then provides writable areas for storing both >>>>>>>>>> versioned and unversioned data, as well as system-wide or per-user data. >>>>>>>>>> >>>>>>>>>> We also provide a Snap Store, which combines the speed of >>>>>>>>>> self-publishing with the discoverability of a central archive. It is >>>>>>>>>> used by default across all Ubuntu 16.04 flavors and derivatives, and any >>>>>>>>>> distro where snaps have been enabled. Thanks to Snap's confinement, >>>>>>>>>> applications can be published immediately after uploading. This means >>>>>>>>>> that your application and updates are available to tens of millions of >>>>>>>>>> users as soon as you press the button. >>>>>>>>>> >>>>>>>>>> I started the work on producing a Snap package for Couchdb 2.0, but as I >>>>>>>>>> couldn't find a binary release I had to try building it from source and >>>>>>>>>> unfortunately I was not successful on that step. I am happy to share my >>>>>>>>>> packaging configuration with anybody here who knows the build process >>>>>>>>>> better than me, but it would be even simpler to create the snap package >>>>>>>>>> at the end of whatever process you already have to build binary >>>>>>>>>> releases. I am happy to help with either or both approaches, and you can >>>>>>>>>> also learn more about the snap format and tools here: http://snapcraft.io/ >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Michael Hall >>>>>>>>>> mhall119@gmail.com >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>> >>> >> >