Peter Rabbitson [Tue, 10 Feb 2015 13:05:40 +0000]
Remove obsolete startup check (introduced in
5e724964, superseded by a5a7bb73)
Peter Rabbitson [Fri, 17 Oct 2014 09:35:46 +0000]
Add import-time-skip support to OptDeps, switch most tests over to that
This is the meat of this refactor, inspired by multiple parties complaining
(with good reason) about the sluggishness of our skip_all()s, and by groundwork
in both
c8dc7d333 and 2c2bc4e5 (both never applied - the former is superseded
by a more direct approach and the latter being too intrusive with too little
benefit after the refactor)
Only tests with unambiguous skips were switched over - later commits will
address multi-rdbms loops in a different manner.
The loss of skip-time warnings "this test creates tables blah and blah" was
deliberate, and due to several reasons
*) They are displayed at the wrong time
*) They are not well sycnrhonized with what the actual test does
*) Some time this year all table names will switch to dbictest_-prefixing
All in all the thinking is that nothing of value is lost, and the changeset
is greatly simplified as a result.
The loading before strict/warning in tests is actually significant. It appears
that in "all deps fail" cases the speedup of not loading strictures is quite
significant (demonstrated below difference on WiP CDBICompat streamlining):
strictures first:
Files=43, Tests=0, 1 wallclock secs ( 0.14 usr 0.08 sys + 0.35 cusr 0.15 csys = 0.72 CPU)
optdeps first:
Files=43, Tests=0, 1 wallclock secs ( 0.13 usr 0.06 sys + 0.14 cusr 0.11 csys = 0.44 CPU)
Peter Rabbitson [Sun, 18 Jan 2015 13:33:28 +0000]
Add import-time action stub to OptDeps, switch distbuild checks to it
More in the following commit
Peter Rabbitson [Tue, 20 Jan 2015 16:09:44 +0000]
Introduce basic optdeps group inclusion mechanism, simplify many declarations
No logical changes: verified before and after the commit via:
perl -MData::Dumper::Concise -Ilib -MDBIx::Class::Optional::Dependencies -e '
my $d = DBIx::Class::Optional::Dependencies->req_group_list;
delete $d->{$_} for grep /rdbms_generic/, keys %$d;
delete $_->{effective_modreqs_differ} for values %$d;
print Dumper $d
' | sha1sum
Read under -w
Peter Rabbitson [Sun, 26 Oct 2014 12:23:28 +0000]
Make OptDeps aware of envvars as first-class requirements (test_* groups only)
Peter Rabbitson [Thu, 8 Jan 2015 18:33:57 +0000]
Deprecate req_errorlist_for, proxy to to modreq_errorlist_for
Leaving the old method in place indefinitely - may be used in the wild
Peter Rabbitson [Fri, 17 Oct 2014 09:27:27 +0000]
Rewrite optdeps to accept a list of groups
Requires a one-time break of req_group_list()
Also tighten up the optdep spec and handle conflicting versions saner
As a side effect fix
34d2deae to be truly copy-paste-able (no , separator)
Changes to ::Opt::Deps and xt/optional_deps.t best viewed under -w
Peter Rabbitson [Sat, 17 Jan 2015 13:23:44 +0000]
OptDeps doc-mangling, no functional changes
Switch synopsis away from M::I (it still scares people, boggle)
Document volatility of req_group_list
Better language in places
Coarser granularity of heredocs (easier to read)
Read changes under -w
Peter Rabbitson [Sun, 18 Jan 2015 22:22:39 +0000]
Minor streamline of optdeps usage (no functional changes)
Peter Rabbitson [Sun, 25 Jan 2015 09:59:55 +0000]
Standardize the struct-cloning interface throughout the codebase
Peter Rabbitson [Sat, 24 Jan 2015 19:53:22 +0000]
Neither of these can fail now that we dep on 5.8.1 (missed in
55087b99)
Peter Rabbitson [Sat, 24 Jan 2015 17:23:23 +0000]
Delete useless test
Peter Rabbitson [Thu, 22 Jan 2015 22:27:22 +0000]
Fix intermittent failures in the LeakTracer on 5.18+, remove all workarounds
ARGH! In the end the issue turned out to be stupid-simple: when PadWalker is
called it always returns us a hashref. This hashref is traversed, with its
own address recorded as seen. Once processed, the hashref itself is GCed,
leaving a stale entry in $seen_refs.
Up until 5.18 this was not a problem, likely due to no address reuse. However
after 5.18 PadWalker is very happy to return different hashrefs under the same
address over and over again. The $seen_refs entry leads to a skip, and the
actual contents of the pad are never examined - we've seen this hash already.
ARGH!
The decisive change is the single line around PadWalker - everything else is
cleanup of workarounds for this problem.
Peter Rabbitson [Thu, 22 Jan 2015 15:19:57 +0000]
Keep T::B IO open in t/52leaks.t END - other ENDs pending (esp. since
961d79db)
Read under -w
Peter Rabbitson [Thu, 8 Jan 2015 00:42:52 +0000]
Fix Postgres test hang with DBD::Pg 3.5.0+ (work around RT#100648)
It is not 100% clear to me why this is happening, as the change discussed[1]
was not supposed to change behaviour outside of a transaction.
The test in question essentially does a blocking request with a timeout. The
way the default DBIC machinery works is to issue a ping() after the timeout
induced exception, in order to opossibly retry the operation IFF the link
went stale ($dbh thinks everything is in order, the RDBMS believes otherwise).
After the changes in 3.5.0 this ping() now hangs, even though the access
pattern did not change (there are no transactions involved on the handle in
question). Either way, the fix is simple: just shim-away the ping for the
duration of the test.
In general this should be resolved on a higher level by disabling retries for
the duration of the test (or maybe even disabling retries by default in the
distant feature - see RT#47005)
[1] https://rt.cpan.org/Ticket/Display.html?id=100648#txn-1438093
Peter Rabbitson [Sun, 11 Jan 2015 09:39:48 +0000]
(travis) Remove trial SQLA workaround (no longer on CPAN) - retry another time
Read diff under -w
Peter Rabbitson [Sun, 11 Jan 2015 09:45:08 +0000]
(travis) Revert
17b09b77 - Test::Deep 0.115 now available
https://github.com/rjbs/Test-Deep/issues/22
Dagfinn Ilmari Mannsåker [Tue, 6 Jan 2015 19:24:05 +0000]
Preserve space after <nick>: in the AUTHORS section of DBIx/Class.pod
Peter Rabbitson [Sat, 3 Jan 2015 16:30:14 +0000]
Emit Optional::Dependencies error messages in a way simplifying c/p for cpanm
The contrived no-space-containing output is sadly necessary - cpanm only
considers an optspec if the module name is directly followed by ~
rabbit@Ahasver:~$ cpanm "SQL::Translator~ >= 0.11018"
SQL::Translator is up to date. (0.11020)
rabbit@Ahasver:~$ cpanm "SQL::Translator~ >=0.11018"
SQL::Translator is up to date. (0.11020)
rabbit@Ahasver:~$ cpanm "SQL::Translator ~ >= 0.11018"
--> Working on SQL::Translator
^C
Peter Rabbitson [Sat, 3 Jan 2015 12:16:25 +0000]
More robust 'nothing loaded' test for optdeps (read under -w)
Peter Rabbitson [Fri, 2 Jan 2015 13:43:35 +0000]
Reshuffle optdeps code making next commits more readable (no func. changes)
Need to switch the entire POD generator to something else before going solo
Peter Rabbitson [Fri, 2 Jan 2015 15:56:26 +0000]
(travis) randomize the dependency install order to catch even more fish
Peter Rabbitson [Fri, 2 Jan 2015 12:23:00 +0000]
(travis) remove two more workarounds for issues that have since been resolved
https://rt.cpan.org/Ticket/Display.html?id=99747
https://github.com/travis-ci/travis-ci/issues/1477
Peter Rabbitson [Mon, 29 Dec 2014 14:59:01 +0000]
(travis) stop trying to dynamically determine the CPAN mirror
Even if Travis brings their mirror back, we are not going to be able to
use it - we need backpan at this point
Peter Rabbitson [Mon, 29 Dec 2014 11:49:49 +0000]
(travis) minimize mysqld's memory footprint
This implements a part of "solution 2)" described in
ac4e80df. Historically
the OOM issues so far have always been somehow related to mysqld
Unfortunately this alone does not seem sufficient to raise the thread count
back up, that will need more minimizations
Peter Rabbitson [Sun, 28 Dec 2014 12:46:27 +0000]
(travis) Invoke apt_install only once and do not change the source list
This shaves off a surprising amount of time
Peter Rabbitson [Sun, 28 Dec 2014 12:42:01 +0000]
(travis) Document app-nopaste workaround better
Peter Rabbitson [Sun, 28 Dec 2014 08:52:24 +0000]
(travis) Stop trying to get the Oracle apt source - use the debs directly
Dagfinn Ilmari Mannsåker [Thu, 11 Dec 2014 11:24:38 +0000]
Clean up PostgreSQL array types recipe (amalgamation of
10e72c6e and 09380b06)
- Prefer { -value => [ … ] } syntax over \[ '= ?', [colname => [ … ]] ]
- Reference SQLA -value docs instead of array_datatypes
- Add trailing comma in hashes
- Remove pointless 'day' key from update example
Dagfinn Ilmari Mannsåker [Wed, 10 Dec 2014 17:37:37 +0000]
Use more widely supported quoting in DBICTest::Year2000CDs view
This lets DBICTEST_SQLT_DEPLOY=1 work with more non-SQLite DBICTEST_DSNs
The "number as quoted string" is necessary because some databases
(e.g. PostgreSQL) do not do implicit casting between integers and strings
Peter Rabbitson [Wed, 28 Aug 2013 12:01:00 +0000]
(travis) Add 5.8.1 dev-testing to avoid crap like RT#99747
Peter Rabbitson [Sun, 21 Dec 2014 14:12:15 +0000]
(travis) Workaround for https://github.com/rjbs/Test-Deep/issues/22
Peter Rabbitson [Sun, 21 Dec 2014 14:09:12 +0000]
(travis) RT#88494 got fixed a while ago
Peter Rabbitson [Fri, 7 Nov 2014 13:01:45 +0000]
Cleanup code in _dbh_columns_info_for, add stresstest var to smoke it
Dagfinn Ilmari Mannsåker [Tue, 21 Oct 2014 21:48:15 +0000]
Make sure emacs doesn't try to indent with tabs
Peter Rabbitson [Thu, 6 Nov 2014 17:20:37 +0000]
(travis) Attempt to smoke all newly available deps on DEVREL runs
Read diff under -w
Peter Rabbitson [Thu, 6 Nov 2014 17:19:08 +0000]
(travis) Better separation of DEVREL_DEPS from POISON_ENV
Peter Rabbitson [Wed, 5 Nov 2014 10:49:37 +0000]
Correctly document the 'where' attribute
The documentation was correct when it was written 8 years ago in
4209f49a,
but then promptly broken 2 months later by
78060df8 (ironically one of the
corner stones of omnipotent chaining)
Fix documentation and add an extra test endorsing the current additive
behavior.
Peter Rabbitson [Fri, 31 Oct 2014 11:17:49 +0000]
(travis) Forgotten bit while reverting
f207111d6 (goes with 0d383895)
Peter Rabbitson [Wed, 29 Oct 2014 09:39:25 +0000]
(travis) Revisit the CI test matrix, and multiple run-script improvements
- Add 5.8.4 testperl and also make the travis 5.8 run first: will
give a much faster reponse time if something 5.8 related fails
- Make sure the perl sitelib sanitizer doesn't fire on legacy perls:
on anything older than 5.12 we are essentialy nuking the baselib.
The aftermath is that nobody will go to space that day.
- Stop considering DBIC_*_DEBUG part of the POISON-set
These are more of a tracer - specify them explicitly instead
Peter Rabbitson [Sat, 25 Oct 2014 12:49:02 +0000]
Blacklist certain trial versions of DBD::SQLite in testing
Peter Rabbitson [Sat, 25 Oct 2014 12:34:28 +0000]
(internal) Introduce an extra utility function, essentially a ( >= , < ) test
Peter Rabbitson [Sat, 25 Oct 2014 12:00:10 +0000]
Make sure the fix for RT#99503 (SQLA
a5f91febe) keeps working
Peter Rabbitson [Fri, 24 Oct 2014 23:35:14 +0000]
Fix endless loop on BareSourcelessResultClass->throw_exception(...)
There is a better fix for this in the pipes, but this will do for now
Peter Rabbitson [Fri, 24 Oct 2014 23:24:21 +0000]
Minor cleanup
Peter Rabbitson [Fri, 24 Oct 2014 22:41:04 +0000]
Bump Moo dependency
Peter Rabbitson [Fri, 24 Oct 2014 21:53:52 +0000]
Fix idiocy that snuck in
bdbd2ae8a - I only want fatal undefs
Not sure what I was thinking. In either case - remove the unsafe code, and
annotate the remaining uses of FATAL => 'all'
Peter Rabbitson [Fri, 24 Oct 2014 21:38:17 +0000]
Fix incorrect collapser source being generated due to unicode collapse points
I am not sure how nobody but abraxxa ran into this - the missing escapes have
been used by a ton of people for over a year. In any case the issue is real,
and fixed by trivial {}-escaping.
Add an extra stresstest envvar to make sure this does not regress in the
future (the envvar will be picked up and set by POISON_ENV on travis)
Peter Rabbitson [Fri, 24 Oct 2014 18:00:03 +0000]
These are already pre-required by the OptDeps check
Peter Rabbitson [Fri, 24 Oct 2014 17:56:15 +0000]
These loads are no longer necessary after
d7d45bdc65
Peter Rabbitson [Fri, 24 Oct 2014 17:55:15 +0000]
HRI is part of a pretty hot codepath, just load it all the time
Peter Rabbitson [Fri, 24 Oct 2014 12:06:54 +0000]
Replace a couple useless string evals with their equivalent
Dliberately *not* using Module::Runtime, future improvements will
replace ->ensure_class_loaded with something less volatile
Peter Rabbitson [Sun, 5 Oct 2014 14:51:47 +0000]
(travis) Better diagnostics on *why* a build failed, reduce parellelism
This commit resulted in https://github.com/travis-ci/travis-ci/issues/2904
To mitigate run everything under 10 (not 32, not even 16) threads, hope
things will be allright. Although the real fix would be to 1) get the above
mentioned issue on travis fixed and 2) tuning the rdbms daemons to eat less
memory (both of these options are problematic).
The diags are *indispensable* when travis wakes up the OOMKiller
As a bonus add getstatus to all subshells for even better idea wtf just went
wrong
Peter Rabbitson [Thu, 23 Oct 2014 10:02:47 +0000]
(travis) Reshuffle CI workflow, prepare for better instrumentation of failures
No functional changes at this point, the goal was to have no exports in
30_before_script.bash and 40_script.bash, allowing me to run everything
after 20_install.bash in a subshell
Peter Rabbitson [Thu, 23 Oct 2014 09:44:49 +0000]
(travis) Feeble attempt at reverting
f207111d
The toolchain gang became *a little* more reasonable in the past year, let's
see how far we get without this particular set of workarounds
Peter Rabbitson [Thu, 23 Oct 2014 07:43:59 +0000]
(travis) Install older DBD::SQLite on perl < 5.8.4, I fucked up on testing
Related RT: https://rt.cpan.org/Ticket/Display.html?id=99747
ribasushi--
Peter Rabbitson [Fri, 17 Oct 2014 10:04:58 +0000]
Switch all double-optdeps calls to a single invocation in lib/
Peter Rabbitson [Fri, 17 Oct 2014 09:12:16 +0000]
Switch optdeps to a croak import
Dagfinn Ilmari Mannsåker [Tue, 23 Sep 2014 18:33:37 +0000]
Further delay empty weakregistry assertions
(extracted from
2c2bc4e5)
Peter Rabbitson [Sun, 12 Oct 2014 10:23:10 +0000]
Stop lazy-requiring B and Storable in internal functions
Almost every non-toy program will end up lazy-loading these anyway, so move
their require to compile time. This also helps with load-patterns changing
in SQLA and Moo, and failing t/53lean_startup.t on some smokers
Peter Rabbitson [Mon, 20 Oct 2014 13:23:25 +0000]
Newer Test::More lazy-loads more stuff (overload.pm in this case)
Make the 'undefer' dummy test do more work
Peter Rabbitson [Fri, 26 Sep 2014 02:25:00 +0000]
Bump blead version
Peter Rabbitson [Fri, 26 Sep 2014 02:25:41 +0000]
Extra tests to ensure that the cond collapser will not mask SQLA deprecations
No functional changes except for a minor SQL reordering adjustment
Peter Rabbitson [Sun, 5 Oct 2014 21:16:48 +0000]
Bump deps to pull in bugfixes
Peter Rabbitson [Fri, 26 Sep 2014 02:20:51 +0000]
Adjust things for the is_literal_value and -ident SQLA 1.80 fixes
(SQLA commits
52ce7dca and ddd6fbb6f)
The Oracle workaround is absolutely horrific and needs to be redone from
scratch. For the time being the tests seem to pass, so punt for later... sigh
Peter Rabbitson [Fri, 26 Sep 2014 02:22:41 +0000]
The functionality introduced in
7ad80222 requires a certain CDBI
Skip it on older versions (wow - people *do* run these in the wild)
https://metacpan.org/source/TMTM/Class-DBI-v3.0.5/Changes#L6
Peter Rabbitson [Fri, 26 Sep 2014 10:28:25 +0000]
(travis) Augment
bc418819 - in addition check vm kernel memory health
Sometimes a vm comes up with most of the memory locked up in... god knows what
This seems to be a stable compromise which brings *all* jobs to completion
Peter Rabbitson [Sun, 28 Sep 2014 10:08:49 +0000]
(travis) Re-consolidate sysinfo handling (reverts part of
83da25f0)
Peter Rabbitson [Sun, 28 Sep 2014 10:08:49 +0000]
(travis) Consolidate where/how we load the common functions (the multiple
sourcing of the same file is silly)
Peter Rabbitson [Thu, 25 Sep 2014 14:41:56 +0000]
Release v0.082800
Peter Rabbitson [Thu, 25 Sep 2014 14:37:41 +0000]
Some cleanups of Changes and adding 'Known issues'
Peter Rabbitson [Thu, 25 Sep 2014 14:37:16 +0000]
This was reinstated in
dc297536f
Peter Rabbitson [Thu, 25 Sep 2014 13:54:44 +0000]
Kill leaktest on smokers with 1.3xx Test::More alphas
This is done so that downstram dependencies of DBIC can be smoked as well,
the actual leaktest fix will come later when T::B stabilizes enough to go
into beta
Peter Rabbitson [Thu, 25 Sep 2014 12:07:46 +0000]
SQLA 1.79 shipped - revert tempextlib hack from
d0435d75
Peter Rabbitson [Thu, 25 Sep 2014 11:45:06 +0000]
Edit leaktracer diag texts to be ilmary-compliant :)
Peter Rabbitson [Thu, 25 Sep 2014 11:34:47 +0000]
Boldly take the author nicknames bold
Peter Rabbitson [Thu, 25 Sep 2014 03:27:34 +0000]
Even though perl_5 should be valid in 1.4, CPANTS barfs
Work around https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues/68
Peter Rabbitson [Thu, 25 Sep 2014 02:42:38 +0000]
Forgotten manifest adjust after
a2bd379666
Peter Rabbitson [Thu, 25 Sep 2014 02:41:29 +0000]
(travis) Cut the amount of threads we use in half
Hopefully this will stave off the out of memory issues
https://github.com/travis-ci/travis-ci/issues/2715
https://github.com/travis-ci/travis-ci/issues/2101
Peter Rabbitson [Wed, 24 Sep 2014 19:42:18 +0000]
Add catherder heading as per mst's insistence
Dagfinn Ilmari Mannsåker [Wed, 24 Sep 2014 15:52:28 +0000]
Fix literal SQL and bind values example in "columns" documentation
Peter Rabbitson [Wed, 24 Sep 2014 15:12:34 +0000]
Accomodate broken Test::More trials a bit better
Peter Rabbitson [Wed, 24 Sep 2014 14:16:30 +0000]
Fix failures in xt/authors: git2 preserves case from mailmapping
Karen Etheridge [Mon, 28 Jul 2014 19:02:23 +0000]
Document including literal SQL and values in a resultset with "columns"
Peter Rabbitson [Wed, 24 Sep 2014 06:53:51 +0000]
After
5268b1da populate remained the sole user of Data::Compare
Might as well throw it out - the check that takes place is rather rare and
a freeze-and-compare approach is likely more efficient anyway
Peter Rabbitson [Wed, 24 Sep 2014 04:28:06 +0000]
(travis) Attempt to grab more info on parallel_installdeps_notest failures
Peter Rabbitson [Fri, 14 Dec 2012 08:28:44 +0000]
New Pod::Inherit does not need Pod::Tree
Peter Rabbitson [Tue, 23 Sep 2014 07:04:32 +0000]
Clarify licensing, ensure footers are consistent throughout the project
Note - this *DOES NOT CHANGE* the licensing of the project in any way, it
is still dual-licensed like perl5, just as it was before this commit. All
additions are for clarifying purposes only.
The way licensing is presented is an amalgamation of information and
prior art found at the following sources:
- http://www.perlfoundation.org/cpan_licensing_guidelines
- https://metacpan.org/source/ETHER/Moose-2.1212/LICENSE
- `git log --color -w -p v5.20.0 ^perl-5.000^ -- Artistic`
Peter Rabbitson [Mon, 22 Sep 2014 10:35:38 +0000]
Deal with authorship properly, in a future-sustainable fashion
This module is arguably one of the most successful collaborative projects on
CPAN. Make it known to the world by introducing a clear canonical source of
authorship metadata.
I have been holding off jumping on the "contributors from git" bandwagon
because of multiple issues
- Not every contribution results in a direct, attributtable commit
- We already had an extensive contributor list, much larger than the shortlog
- Loss of ircnicks (a fine tradition started in
266bdcc3)
So this commit does the proverbial bullet-biting and introduces *proper*
handling of all the ins and outs, including author-mode (CI as well) tests
for proper attribution. As a side-effect we break a lot of the footer links,
to be fixed in next commit.
Btw as I write this `195 contributors made this library what it is today`...
Mind. Blown.
Peter Rabbitson [Sun, 21 Sep 2014 03:59:38 +0000]
Re-attribute a substantial chunk of docs, due to lost original author
The mysterious <g> is seen on the channel between Aug 24 and Sep 3 of 2008
talking to castaway and various other hackers, supplying a number of doc
patches and then vanishes. Due to the need of correct authorship imposed
by the next commit, reattribute the docs to castaway instead
This is the only such instance - all other authors have been accounted for.
Deemed acceptable as the name is entirely and utterly lost in the ether :(
Peter Rabbitson [Mon, 22 Sep 2014 18:35:15 +0000]
Initial AUTHORS stub (the last one where `git blame -C -C AUTHORS` worked)
Due to how git currently works one will need to `git log -S"line"` in the
future in order to find when a contributor entry was really made. Preserving
this particular arrangement historically, before more reordering and additions
come in the next commit.
Peter Rabbitson [Wed, 24 Sep 2014 03:15:54 +0000]
The revert
8494142c incorrectly killed 4d93345c, reinstating
The loading of IO::Handle is still needed as demonstrated by failing
SQLA optional tests. Bleh!
Peter Rabbitson [Wed, 24 Sep 2014 00:22:48 +0000]
Viciously deal with more strictures fallout
The 'what can possibly go wrong' blew up with RT#99083, there is definitely
more where this came from. Try to maintain safety by going to even greater
lengths ensuring we do not load any of it ourselves
Peter Rabbitson [Tue, 23 Sep 2014 23:29:46 +0000]
(travis) Bump tested perls a bit
Peter Rabbitson [Tue, 23 Sep 2014 23:25:53 +0000]
(travis) reload the already running RDBMS, as a precaution
Also get a newer libmysqlclient, just in case...
Peter Rabbitson [Mon, 22 Sep 2014 08:49:38 +0000]
Reorganize dist-time meta handling (no semantic changes)
Peter Rabbitson [Sun, 21 Sep 2014 18:00:27 +0000]
A massive amount of link fixes (just links, almost no rewording)
kryde++ for the insanely useful tool App::PodLinkCheck. It is a bit heavy
and way too noisy for automated use, but with some handholding it is
scarily effective (as can be seen by the sheer size of this commit)
Peter Rabbitson [Sun, 21 Sep 2014 01:23:38 +0000]
Proper end-of-file for DBIx/Class.pm
Matt S Trout [Mon, 7 Oct 2013 11:40:53 +0000]
Add forgotten bit preventing scan of where-binds (originally part of
1b8f2dd9)
Dagfinn Ilmari Mannsåker [Sat, 20 Sep 2014 12:24:00 +0000]
Add basic .dir-locals.el