Bug#727085: An HHVM-in-Debian State of the Union (was Re: Bug#727085: Taking over packaging in Debian.)

2014-03-31 Thread Paul Tarjan

>   I have been working (with some help from Faidon) to bring the 2.4.1
>tarball to
>Debian standards.  The git repo (remember,
>https://urldefense.proofpoint.com/v1/url?u=http://anonscm.debian.org/gitwe
>b/?p%3Dcollab-maint/hhvm.git%3Ba%3Dsummary&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%
>0A&r=KbCGvs3NEqqV%2FJZMWI0xxA%3D%3D%0A&m=Cc%2BuMlf3PVOorM33Udvk4tQyoMy%2Bt
>%2BAWYxrtpFKq1%2BA%3D%0A&s=d572db8992a4b95f8b27e56fa11dde396e7881c8bda6de8
>a2c441adc3e61b428) reflects
>right now three major operational changes: integration of system's libzip,
>integration of system's libsqlite3 and the removal of several libraries
>that
>added useless dependencies to the package.

Yay.


>   Apart from that, the debian/copyright work is, as you may imagine, a
>three-ring
>circus.  Apart from the huge list of contributors and different licenses,
>there
>is a big showstopper that I found so far, which is that a couple of files
>are
>licensed under the (in)famous JSON.org license (Software has to be used
>for Good
>not Evil).  I'm doing my best to convince the in-house developers that
>switching
>to pecl-json-c (from Remi Collet) is the best approach as we are not
>bug-compatible anymore with the two main Linux families out there (Debian
>and
>RedHat) since the end of May 2013, but at the same time they want to stay
>close
>to PHP for good reasons.  There is an endless debate^W^W^Wmore
>information at
>PHP#63520.

This one is fun. We've chatted a bunch and the general consensus is that
the optimal outcome would be to be as compatible with php5 as possible.
This means we would like to use remi's extension (assuming all our unit
tests and the big framework tests pass). We actually don't care too much
about staying close to PHP5 at the source level since many more people are
using our packages as building from source. It also is pretty bad to have
the developers using the source be using a different library than the uses
who use the package.

So Ender, if you can get remi's extension ported to us, then we'd take it
upstream.


>   In the meantime, Facebook has released HHVM 3.0.0 with Hack support (a
>superset
>of PHP with gradual typing, collections and more stuff -
>https://urldefense.proofpoint.com/v1/url?u=http://hacklang.org/&k=ZVNjlDMF
>0FElm4dQtryO4A%3D%3D%0A&r=KbCGvs3NEqqV%2FJZMWI0xxA%3D%3D%0A&m=Cc%2BuMlf3PV
>OorM33Udvk4tQyoMy%2Bt%2BAWYxrtpFKq1%2BA%3D%0A&s=9398e7801cd780c0445cf51e09
>28831d9065d9f94a050e88fe6c5477e456bb46).
>While I'm all for packaging that version, I'm trying to stay close to
>2.4.1 as I
>already know my troubles with this version and I don't want to add more
>logs to
>the fire, so I'm not updating the upstream version yet.  Also the 3.0.0
>adds
>dependencies like some OCaml code analysis tools depending on other stuff
>that
>is not even nearly packaged, so...you know.

As far as source goes, 3.0.0 isn't much of a change. It optionally builds
the type checker if you have ocaml on your machine but happily ignores it
if you don't. So I bet if you drop it into your workflow it will 'just
work'.

Paul


--
To UNSUBSCRIBE, email to debian-wnpp-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/cf5effcc.6555e...@fb.com



Bug#727085: An HHVM-in-Debian State of the Union (was Re: Bug#727085: Taking over packaging in Debian.)

2014-03-31 Thread David Martínez Moreno
On 3/3/14, 2:01 PM, David Martínez Moreno wrote:
> On 2/28/14, 10:10 PM, László Böszörményi (GCS) wrote:
>> Hi Ender, all,
>>
>> On Fri, Feb 28, 2014 at 8:16 PM, David Martínez Moreno  
>> wrote:
>>> Hello all.  My name is Ender, I have been a Debian developer for 
>>> quite some
>>> time and I work for Facebook, so I decided to do proper packaging of hhvm in
>>> Alioth, as having this done properly is a goal for the team in the first 
>>> part of
>>> the year.

Hello, I just wanted to update everyone on this thread with respect to 
the
Debian packaging.

I have been working (with some help from Faidon) to bring the 2.4.1 
tarball to
Debian standards.  The git repo (remember,
http://anonscm.debian.org/gitweb/?p=collab-maint/hhvm.git;a=summary) reflects
right now three major operational changes: integration of system's libzip,
integration of system's libsqlite3 and the removal of several libraries that
added useless dependencies to the package.

Apart from that, the debian/copyright work is, as you may imagine, a 
three-ring
circus.  Apart from the huge list of contributors and different licenses, there
is a big showstopper that I found so far, which is that a couple of files are
licensed under the (in)famous JSON.org license (Software has to be used for Good
not Evil).  I'm doing my best to convince the in-house developers that switching
to pecl-json-c (from Remi Collet) is the best approach as we are not
bug-compatible anymore with the two main Linux families out there (Debian and
RedHat) since the end of May 2013, but at the same time they want to stay close
to PHP for good reasons.  There is an endless debate^W^W^Wmore information at
PHP#63520.

In the meantime, Facebook has released HHVM 3.0.0 with Hack support (a 
superset
of PHP with gradual typing, collections and more stuff - http://hacklang.org).
While I'm all for packaging that version, I'm trying to stay close to 2.4.1 as I
already know my troubles with this version and I don't want to add more logs to
the fire, so I'm not updating the upstream version yet.  Also the 3.0.0 adds
dependencies like some OCaml code analysis tools depending on other stuff that
is not even nearly packaged, so...you know.

All in all, the ball keeps rolling, and hopefully in another month or 
so I hope
to have a package ready in the archives.  Call me an optimist.

Best regards,


Ender.



signature.asc
Description: OpenPGP digital signature


Bug#727085: Taking over packaging in Debian.

2014-03-04 Thread Faidon Liambotis

On 03/04/14 00:01, David Martínez Moreno wrote:

Don't act as we have some hidden agenda, please.  There are several 
things that
I'm putting work on like dropping support for the forked libevent HTTP server,
using alternatives for the php5-cli/cgi binaries to be able to replace them, no
init scripts for now, compiling folly statically (or at the very least not as a
different package), getting rid of third-party stuff, releasing proper tarballs
in hhvm.com, merging the nightly packages with my work, and those are off the
top of my head.


\o/ This list is awesome David, as is the rest of your work so far. 
Let's document this and others under debian/TODO.


Thanks for this and apologies to you, Paul & team for not having made 
much progress on this since we last spoke.


I took a look at the collab-maint repository and submitted a bunch of 
commits -- I had already prepared a very similar list of Build-Depends 
myself in the early work I had locally, so I merged mine into yours and 
fixed some other collateral issues I found. Please review!


Thanks again and I hope we can find ways to collaborate to make an 
awesome HHVM package in Debian :)


Best,
Faidon


--
To UNSUBSCRIBE, email to debian-wnpp-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/531591e6.1020...@debian.org



Bug#727085: Taking over packaging in Debian.

2014-03-03 Thread GCS
On Mon, Mar 3, 2014 at 11:01 PM, David Martínez Moreno  wrote:
> On 2/28/14, 10:10 PM, László Böszörményi (GCS) wrote:
>> On Fri, Feb 28, 2014 at 8:16 PM, David Martínez Moreno  
>> wrote:
>>  Can you share those decisions?
>
> Don't act as we have some hidden agenda, please.
 I referred only to the "some decisions that we made as a team" part,
inside at Facebook and not yet public.

> I hadn't pushed some of my changes to git... architecture and 
> additional fixes
> are now in.
 Will check them. It's midnight here. :(

> Again the list was incomplete (not pushed) [...]
 Referred to the fact there was no build dependencies at all. OK.

>> I've asked Paul about other embedded libraries, but didn't get an answer.
> No, I'm not.  The code *wants* to use them but I'm as an example 
> writing a
> patch to remove completely the libzip dependency (which is more harmful than
> normal because we also install it in the "make install" phase) not only from 
> the
> open source one but from our internal code repository.
 This is good news. The build system should check for proper versions
installed and not including them.

> The rest of them (if they're released as normal packages) will follow.
 Several of them are packaged already. See double-conversion, sqlite3 and lz4.
I've packaged libafdt and libmbfl and of course folly. I'm not sure
all of them are correct and I know that folly doesn't stand on its
own.

> Let's go piece by piece.  As I see it for libafdt, if no one has felt 
> the need
> to package that, we can just embed that in the sources.
 It's not just that. Its upstream is died five years ago and its 0.1.0
version number[1] doesn't suggest that it's stable and ready.

> The issue with libmbfl is a bit more concerning, and I appreciate 
> that you
> already made the work.  What I have to do as part of the packaging work i to
> make sure that we haven't patched those sources, then I'll update them here 
> and
> will use the same logic in a backported patch.  You have to think that the 
> HHVM
> has quite a bunch of technical debt around some edges.  Quoting Paul Tarjan, 
> "I
> think we just brought something from the outside to third-party and that gate
> kept open forever."
>
> This is fine, because what we are trying to do is not just a Debian 
> packaging
> but also fix HHVM for the greater good.  It's the HHVM team's desire and my 
> own
> goal to make this monster more palatable.
 Sure, this should be done first before packaging. This is what I
wanted from Paul in my private email.
For me it seems Facebook just put the sources on GitHub, but don't
play well that boxes can have the dependent libraries installed, maybe
with newer versions that included in HHVM this time.

>> Don't forget the Folly state (no ABI and neither source
>
> Dismissed, as folly is going compiled in the blob as it comes from 
> the internal
> repos.
 Again, I meant it in a different context. Can HHVM team support Folly
on the long run (say, Ubuntu LTS releases) when its not their work and
it doesn't have any 'stable', versioned release (ie, even its team may
not remember why something was solved that way in a moment of time)
and someone may look for a mistic FTBFS problem or needs a security
fix somewhen?

>> stability), the history of old libevent version usage, makes me wonder
>
> Dismissed as well.  Paul stated it before, but I will say it again: 
> we won't
> support the libevent-based server and it won't be compiled in.
 I wrote _history_. Referred to how Facebook follows other upstream
sources. Embedding and not updating them for more than a year is a
problem. I know that the libevent 1.x problem is gone. Just a friendly
reminder, under hphp/third_party/ there's still a patch for libevent
1.4.14 which can be removed.

> Because in Facebook we don't have the luxury of having up to date 
> distributions
> in the servers.  The last one available IIRC is 3.7.9, so the HHVM team 
> decided
> to put an updated one and then no one took the time to update it, I guess.
 According to my records[2], sqlite3 has version 3.7.13 in stable and
as a backport in oldstable as well. You may use backports as well I
guess. But I doubt you use oldstable.

> It's
> not something that I am particularly proud of, but again, you don't seem to 
> see
> that we are pushing these packages from internal repositories where they don't
> have the same level of scrutiny about "updated versions of packages".  It will
> take some time to get there.
 I'm mostly arguing against embed several other upstream packages in
HHVM. Then it's hard to follow which one may have newer security /
important bugfix release, what patches Facebook has on them, etc.
That's maybe impossible in the current situation. I even doubt that
the security team will allow HHVM in as it's today. Embedding several
other sources and make an inside build is a security nightmare.

> I just replied t

Bug#727085: Taking over packaging in Debian.

2014-03-03 Thread David Martínez Moreno
On 2/28/14, 10:10 PM, László Böszörményi (GCS) wrote:
> Hi Ender, all,
> 
> On Fri, Feb 28, 2014 at 8:16 PM, David Martínez Moreno  
> wrote:
>> Hello all.  My name is Ender, I have been a Debian developer for 
>> quite some
>> time and I work for Facebook, so I decided to do proper packaging of hhvm in
>> Alioth, as having this done properly is a goal for the team in the first 
>> part of
>> the year.
>  I was wondering if one of us is working for Facebook or not. I
> suspected yes, as we are everywhere and I'm right.

Of course we are everywhere! :-)

>> I've read the entire thread to become familiar with everything 
>> discussed so
>> far, and I will be incorporating some of the suggestions discussed here as 
>> well
>> as some decisions that we made as a team.
>  Can you share those decisions?

Don't act as we have some hidden agenda, please.  There are several 
things that
I'm putting work on like dropping support for the forked libevent HTTP server,
using alternatives for the php5-cli/cgi binaries to be able to replace them, no
init scripts for now, compiling folly statically (or at the very least not as a
different package), getting rid of third-party stuff, releasing proper tarballs
in hhvm.com, merging the nightly packages with my work, and those are off the
top of my head.

>> All the development for now is happening on collab-maint/hhvm [1], 
>> as the
>> current Github repo structure does not fit really well the layout of
>> git-buidpackage.
>  Quickly peeking into your packaging I do wonder if you read the
> entire bug thread.
> For example I've discussed architecture support with Paul Tarjan
> (message 50)[1]:
> -- cut --
> From: Paul Tarjan 
> Date: Wed, 6 Nov 2013 16:51:46 +
>> Last but not least that wiki forces HHVM to be amd64
>> only. Any reason to do that? Any known problem to run HHVM on
>> kfreebsd-*, mips{,el}, sparc or any other archs that Debian supports?
> 
> Absolutely. HHVM is a Just-In-Time compiler which emits assembly code into
> memory then executes it. We currently only emit 64bit x86. We are looking
> at other backends, but they require a lot of effort to implement and
> optimize.
> -- cut --
> Still, you put the binary package architecture any, instead of only
> amd64. Does Facebook supports for example mips now?

I hadn't pushed some of my changes to git... architecture and 
additional fixes
are now in.

> In that mail you can also read that I've identified most of the build
> dependencies. May I ask why you don't use any of that?

Again the list was incomplete (not pushed) and I was just walking 
through the
CMake packaging and getting familiar with it.  Our list of dependencies are
different.  Apart from the fact that you made yours 5 months ago (which is
actually a lot of time for the HHVM team), there are some differences, like you
depending on the 1.54 version of libboost vs. my packaging depending on the
general -dev packages.

Without wanting this to become a blame game, my list of dependencies is 
much
more specific than yours, adding also missing libraries, for example:

chrpath
libexpat1-dev
libfreetype6-dev
libpng12-dev
libvpx-dev
pkg-config
unixodbc-dev

And those are only some of them.  I'm not blaming you, because I didn't 
take
the time to verify that at that time the dependencies were those, but on the
contrary I preferred to carefully add everything the HHVM sources depended on.

> Can it be that you use the embedded sources, those as Paul acknowledged:
> -- cut --
>> I've just realized that HHVM
>> embeds other codes under hphp/third_party/ , even folly which is an
>> other FB FOSS software and should be packaged separately.
[...]
> I've asked Paul about other embedded libraries, but didn't get an answer.

No, I'm not.  The code *wants* to use them but I'm as an example 
writing a
patch to remove completely the libzip dependency (which is more harmful than
normal because we also install it in the "make install" phase) not only from the
open source one but from our internal code repository.

The rest of them (if they're released as normal packages) will follow.

> But problems arise with other libs as well. For example libafdt is
> version 0.1.0 (hardly a version number to call it final and stable),
> which was last released in 2009 (yes, almost five years ago!). I've a
> package ready, but it doesn't build a shared library, just a static
> one and it has only one header file. I may upload it if you really
> want, but I don't see a reason for that. I've a package of libmbfl as
> well, version 1.3.2 , which is 'just' two years old. The version
> included in HHVM is 1.0.2 (according to
> hphp/third_party/libmbfl/mbfl.rc) and I don't want to think about how
> old is it.

Let's go piece by piece.  As I see it for libafdt, if no one has felt 
the need
to package that, we can just embed that in the sources.

The issue with libmbfl is a bit more concerni

Bug#727085: Taking over packaging in Debian.

2014-02-28 Thread GCS
Hi Ender, all,

On Fri, Feb 28, 2014 at 8:16 PM, David Martínez Moreno  wrote:
> Hello all.  My name is Ender, I have been a Debian developer for 
> quite some
> time and I work for Facebook, so I decided to do proper packaging of hhvm in
> Alioth, as having this done properly is a goal for the team in the first part 
> of
> the year.
 I was wondering if one of us is working for Facebook or not. I
suspected yes, as we are everywhere and I'm right.

> I've read the entire thread to become familiar with everything 
> discussed so
> far, and I will be incorporating some of the suggestions discussed here as 
> well
> as some decisions that we made as a team.
 Can you share those decisions?

> All the development for now is happening on collab-maint/hhvm [1], as 
> the
> current Github repo structure does not fit really well the layout of
> git-buidpackage.
 Quickly peeking into your packaging I do wonder if you read the
entire bug thread.
For example I've discussed architecture support with Paul Tarjan
(message 50)[1]:
-- cut --
From: Paul Tarjan 
Date: Wed, 6 Nov 2013 16:51:46 +
>Last but not least that wiki forces HHVM to be amd64
>only. Any reason to do that? Any known problem to run HHVM on
>kfreebsd-*, mips{,el}, sparc or any other archs that Debian supports?

Absolutely. HHVM is a Just-In-Time compiler which emits assembly code into
memory then executes it. We currently only emit 64bit x86. We are looking
at other backends, but they require a lot of effort to implement and
optimize.
-- cut --
Still, you put the binary package architecture any, instead of only
amd64. Does Facebook supports for example mips now?
In that mail you can also read that I've identified most of the build
dependencies. May I ask why you don't use any of that?
Can it be that you use the embedded sources, those as Paul acknowledged:
-- cut --
> I've just realized that HHVM
>embeds other codes under hphp/third_party/ , even folly which is an
>other FB FOSS software and should be packaged separately.
Folly is pulled in with a git submodule, but yes, the others are copied in.
-- cut --
Those should be ironed out and use the packaged versions expect Folly
as an other Facebook employee wrote the following.
-- cut --
From: Jordan DeLong 
Date: Sat, 4 Jan 2014 19:44:26 -0800
On Sat, Jan 04, 2014 at 11:53:25PM +0100, László Böszörményi (GCS) wrote:
> Question is, does Folly maintain ABI compatibility? If it changes
> from time-to-time, how often?

Yeah, it doesn't attempt to maintain ABI backward compatability, and
we haven't done much about tracking when we break source-level
backward compatability either.  (As Sara said, we don't version it
currently... unless you count the submodule in hhvm ;)

There are changes probably a few times a week, although I'd suspect
few of the changes that aren't to new components (usually in
folly/experimental) actually break source backward compat.
-- cut --
As such, we have to trust that Folly is as up to date as possible in
HHVM and it will be supported for Debian/Ubuntu stable releases (at
least five years if I count in Ubuntu LTS releases).

I've asked Paul about other embedded libraries, but didn't get an answer.
-- cut --
But problems arise with other libs as well. For example libafdt is
version 0.1.0 (hardly a version number to call it final and stable),
which was last released in 2009 (yes, almost five years ago!). I've a
package ready, but it doesn't build a shared library, just a static
one and it has only one header file. I may upload it if you really
want, but I don't see a reason for that. I've a package of libmbfl as
well, version 1.3.2 , which is 'just' two years old. The version
included in HHVM is 1.0.2 (according to
hphp/third_party/libmbfl/mbfl.rc) and I don't want to think about how
old is it. Don't forget the Folly state (no ABI and neither source
stability), the history of old libevent version usage, makes me wonder
how HHVM works in the long run, how supportable is it. There's 'good'
news of course, like Sqlite3 is version 3.7.15.2 which is 'just' one
year old. While its homepage shows that the last release is 3.8.2 and
upgrading from versions before 3.8.1 is strongly recommended due to
the number of bugs fixed. OK, the only one database corruption bug
fixed (in 3.7.16.2) since the included 3.7.15.2 is a rare one.
Still, forgive me Paul for asking but why do you include and use well
rotten, quite old versions of libraries? Several of them are packaged
in modern distributions and kept fresh and clean.
-- cut --
May you answer this part? For example Sqlite3 became more than a year
old in HHVM now. Upstream version is 3.8.3.1 ATM. Paul didn't answer
this for a while now. :-(
I accept the fact that Facebook wants this packaged for Debian in the
first half of 2014 and you take over the packaging without asking me
(probably ignoring Ondřej and Faidon as I didn't see them as Cc in
your mail), but as you read in the mails you mentioned and I already
put enough hour

Bug#727085: Taking over packaging in Debian.

2014-02-28 Thread David Martínez Moreno
Hello all.  My name is Ender, I have been a Debian developer for quite 
some
time and I work for Facebook, so I decided to do proper packaging of hhvm in
Alioth, as having this done properly is a goal for the team in the first part of
the year.

I've read the entire thread to become familiar with everything 
discussed so
far, and I will be incorporating some of the suggestions discussed here as well
as some decisions that we made as a team.

All the development for now is happening on collab-maint/hhvm [1], as 
the
current Github repo structure does not fit really well the layout of
git-buidpackage.

Best regards,


Ender.

[1]: http://git.debian.org/?p=collab-maint/hhvm.git;a=summary



signature.asc
Description: OpenPGP digital signature