Re: the upcoming Great Python2 Purge™

2018-12-27 Thread Brett Gilio


Leo Famulari writes:

> On Wed, Dec 26, 2018 at 11:38:12AM +0200, Efraim Flashner wrote:
>> We're now about a year out from the official EOL for python2 (Jan 1,
>> 2020). So far we've been not adding python2 variants of packages that
>> are new unless they're actually needed for something. Do we want to
>> start removing python2 packages when updating other packages if they are
>> leaf packages?
>
> This was previously discussed here:
>
> https://lists.gnu.org/archive/html/guix-devel/2018-06/msg00237.html
>
> That discussion didn't go very far. As you mentioned, the consensus
> seemed to be that we 1) relax the policy of always providing both Python
> 2 and 3 packages and 2) we'll act when we need to.
>
> My opinion is that we should remove Python 2 packages after the upstream
> EOL announcement if they are causing trouble somehow.
>
> But I don't think we need to remove them en masse. We offer many other
> packages that are basically abandoned upstream, so I think it will be
> okay to keep the Python 2 packages as long as there are no bugs or if
> they are maintained somehow.

I think we could also just move them to a different Guix channel
entirely as a sort of legacy-support option. I am almost positive
somebody among us would be willing to maintain them. Could be better
than everybody wanting to maintain their own channel for it.

Also, on a side note, how would this work for the python importers?
Would we stop offering python2 substitutes on the build servers? There
are some other questions here that I think aren't getting addressed.

Brett Gilio



Re: add DEPRECATION grace period: the upcoming Great Python2 Purge™

2018-12-27 Thread Alex Vong
Hello everyone!

Leo Famulari  writes:

> On Wed, Dec 26, 2018 at 02:33:55PM +0100, Pjotr Prins wrote:
>> A lot of software outside Guix still depends on Python2, for better or
>> worse. I don't believe EOL means they are going to drop security
>> updates. Leaf packages may well be in use today.
>
> I do think it means that the current Python team at python.org will stop
> issuing security updates for Python 2. [0]
>
> Previously, Guido van Rossum said "The way I see the situation for 2.7
> is that EOL is January 1st, 2020, and there will be no updates, not even
> source-only security patches, after that date. Support (from the core
> devs, the PSF, and python.org) stops completely on that date." [1]
>
> Well, Guido is no longer involved with Python, so maybe the situation
> has changed. In any case, I think we can expect third parties like Red
> Hat to keep maintaining Python 2 for some years, and we can use their
> work.
>
I suggest everyone to read these two LWN articles[0][1]. IMO, we should
start deprecating all python 2 packages which are already available in
python 3 and are not dependencies of python-2-only packages(*). Also, we
should not create python 2 definition for new python packages
anymore. Of course, we can make an exception if there's a demand for
it. This way, we can start warning everybody that python 2 is going EOL
and support is going to be dropped gradually. Right now,
'guix refresh -l python2' shows there're 1692 packages depending on
python 2.

For security updates, as Guido has mentioned python devs will no longer
provide security updates after 1/1/2020, which others seemed to
agree. You can read the whole thread here[2]. However, centos and debian
will still be supporting python 2 past that date. Centos will support
python 2 until 2024 and I suspect Debian will have to support it for
even longer since their next stable release (Debian 10 on 2020) will
include python 2.

Cheers,
Alex

(*): Should we make a new construct that does it? Also, I think we
should mention it in the guix blog, so others can learn about the
deprecation.

[0]: https://lwn.net/Articles/756628/
[1]: https://lwn.net/Articles/750833/
[2]: https://www.mail-archive.com/python-dev@python.org/msg100031.html

>> Is there a way we mark packages as DEPRECATED? I think we should not
>> just remove packages without a grace period. Deprecate for, say, 3
>> months or even 6 months is the way to do this. A deprecation tag
>> should include a time stamp that gives the (planned) removal time.
>
> Not exactly, although there is a 'deprecated-package' procedure that
> accepts a replacement package to supersede the deprecated package. It
> doesn't do what you suggest.
>

> [0] Already, the status of Python 2 is 'bugfix'. If it reaches "end
> of life", the bugfixing activity will presumably cease, although they do
> describe another 'security' status that seems lesser than 'bugfix':
> https://devguide.python.org/#status-of-python-branches
>
> [1]
> https://mail.python.org/pipermail/python-dev/2018-March/152348.html


signature.asc
Description: PGP signature


Re: Better names for Guix versions from git?

2018-12-27 Thread Taylan Kammer
I like dates in "rolling release" version strings because they
immediately tell you how old/new the version is, but I can certainly
live with that format too. Definitely better than what we have.

- Taylan

On Wed, Dec 26, 2018 at 3:02 PM Marius Bakke  wrote:
>
> swedebugia  writes:
>
> > On 2018-12-25 20:49, Taylan Kammer wrote:
> >> Currently, after running 'guix pull', the Guix version will be reported
> >> by 'guix --version' as something like:
> >>
> >>  522d1b87bc88dd459ade51b1ee0545937da8d3b5
> >>
> >> I think it would be really nice if instead it were something like:
> >>
> >>  2018-12-25-522d1b
> >>
> >> where the date is the commit's date (year, month, day) in UTC+0.
> >>
> >> That's shorter, more descriptive, and just as unique.  (The chances of
> >> there being two commits in the same day with the same first 6 positions
> >> in the hash should be negligient.)
> >>
> >> The package name is currently something like:
> >>
> >>  guix-522d1b87b
> >>
> >> That could become:
> >>
> >>  guix-2018-12-25-522d1b
> >>
> >> which is a bit longer but more descriptive.
> >>
> >> I looked into guix/self.scm a bit but couldn't easily tell how difficult
> >> it would be to implement these changes.
> >>
> >> Thoughts?  Worth it?
> >
> > I think it is worth it, in fact I was on my way to suggest the same.
>
> I like the "git describe" format:
>
> $ git describe
> v0.16.0-414-ge99d036828
>
> It does not mention a date, but it can be copy-pasted into "git" and
> shows how many commits there were between each generation.



Missing fonts issue with GNU Icecat

2018-12-27 Thread Daniel Gerber

Hi guix,

I have a profile with icecat, fontconfig and basic fonts, but the 
browser seems not to find any font. It displays only 
numbers-in-squares placeholders.


```
$ icecat
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.107: failed to create cairo scaled 
font, expect ugly output. the offending font is 'DejaVu Sans 
9.9990234375'
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.107: font_face status is: file not 
found
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.108: scaled_font status is: file not 
found
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.108: shaping failure, expect ugly 
output. shape-engine='PangoFcShapeEngine', font='DejaVu Sans 
9.9990234375', text='●'
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.113: failed to create cairo scaled 
font, expect ugly output. the offending font is 'DejaVu Sans 
9.9990234375'
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.114: font_face status is: file not 
found
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Pango-WARNING **: 10:16:13.114: scaled_font status is: file not 
found
(/gnu/store/x9c8vysvvivx4bc1xa4gz7sl37y3i2k6-icecat-60.3.0-gnu1/lib/icecat/.icecat-real:3240): 
Gtk-WARNING **: 10:16:14.576: Could not load a pixbuf from 
/org/gtk/libgtk/theme/Adwaita/assets/check-symbolic.svg.
This may indicate that pixbuf loaders or the mime database could 
not be found.

```

Utilities from fontconfig (in the same profile) seem to work fine:

```
$ fc-match 'DejaVu Sans 9.9990234375'
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-list | grep DejaVuSans.ttf
~/.guix-profile/share/fonts/truetype/DejaVuSans.ttf
```

Any idea? How can I test if the issue is with pango or icecat or 
somewhere else? The "host" distro is Alpine.



Best,
---
Daniel Gerber



Re: Missing fonts issue with GNU Icecat

2018-12-27 Thread Daniel Gerber
Resolved by applying this advice (which is output when running 
`guix package -i pango` explicitly, but not when pango is 
installed as a dependency -- or I missed it):


```
The following environment variable definitions may be needed:
  export 
  XDG_DATA_DIRS="$HOME/.guix-profile/share${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS"
  export 
  GIO_EXTRA_MODULES="$HOME/.guix-profile/lib/gio/modules${GIO_EXTRA_MODULES:+:}$GIO_EXTRA_MODULES"

```

(Besides, the web site gives other mailing lists (not in the info 
manual)... maybe help-guix is better suited for this kind of 
issues.)




Re: Trustworthiness of build farms (was Re: CDN performance)

2018-12-27 Thread Mark H Weaver
Hi Jeremiah,

jerem...@pdp10.guru writes:

>> To truly solve that problem, we need bug-free compilers.
> Impossible for all but the simplest of languages as the complexity of
> implementing a compiler/assembler/interpreter is ln(c)+a but the
> complexity of implementing a bug-free compiler/assembler/interpreter
> is (e^(c))! - a. Where a is the complexity cost of supporting it's
> host architecture.

Where are you getting those complexity expressions from?  Can you cite
references to back them up?  If not, can you explain how you arrived at
them?

What is 'c'?

>> In practice, this requires provably correct compilers.
> Which in practice turn out *NOT* to be bug free nor complete in regards
> to the standard specification.

If you're referring to the bugs found in CompCert, the ones I know about
were actually bugs in the unverified parts of the toolchain.  In the
past, its frontend was unverified, and several bugs were found there.
Even today, it produces assembly code, and depends on an unverified
assembler and linker.

Bugs can also exist in the specifications themselves, of course.

However, in the areas covered by the proofs, the results are quite
dramatic.  For example, in the paper "Finding and Understanding Bugs in
C Compilers" by Xuejun Yang, Yang Chen, Eric Eide, and John Regehr,

  https://web.stanford.edu/class/cs343/resources/finding-bugs-compilers.pdf

the authors state on page 6:

 The striking thing about our CompCert results is that the middle-
  end bugs we found in all other compilers are absent.  As of early
  2011, the under-development version of CompCert is the only compiler
  we have tested for which Csmith cannot find wrong-code errors.  This
  is not for lack of trying: we have devoted about six CPU-years to the
  task.  The apparent unbreakability of CompCert supports a strong
  argument that developing compiler optimizations within a proof
  framework, where safety checks are explicit and machine-checked, has
  tangible benefits for compiler users

> Now, don't get me wrong; provably correct
> compilers are a correct step in the right direction but the real
> solution is to first generate simplified languages that don't have
> undefined behavior and human model first behavior.

I'm not sure what "and human model first behavior" means, but if you
mean that the semantics of languages should strive to match what a human
would naturally expect, avoiding surprising or unintuitive behavior, I
certainly agree.  I consider Standard ML, and some subsets of Scheme and
Lisp, to be such languages.

>> Does that make sense?
> Absolutely, certainly something possible to do; but extremely human
> effort intensive and I don't see anyone willing to throw 2+ years of
> human effort at the problem outside of non-free Businesses like
> CompCert.

If I understand correctly, what you don't expect to happen has already
been done.  CakeML is free software, and formally proven correct all the
way down to the machine code.  Moreover, it implements a language with
an exceptionally clear semantics and no undefined behavior.

Anyway, you've made it fairly clear that you're not interested in this
line of work, and that's fine.  I appreciate the work you're doing
nonetheless.

 Regards,
   Mark