-
Notifications
You must be signed in to change notification settings - Fork 45
/
CHANGES.txt
880 lines (679 loc) · 36.6 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
2018-04-04 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.11
* Minor changes:
* Fix quoting of parametrized plugin tags for ocamlbuild on Windows.
(Closes: #122)
* Reporting an error full-findlib name is empty. (Closes: #123)
2017-05-22 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.10
* Quick followup release to use OASIS 0.4.10 to generate the setup.ml because
the setup.ml of OASIS 0.4.9 was generated with 0.4.8 that contains a bug.
* New releases will be generated using the version released to catch earlier
the kind of bug with destdir that has appeared in 0.4.8.
(See [issue 1007](https://github.com/ocaml/oasis/issues/107))
2017-05-20 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.9
* Major changes:
* Plugin "omake":
* Use correctly sorted internal library deps for OCAML_LIBS
(Closes: #1736)
* Delay the interpretation of $(CMXS_ENABLED) for the install suffixes.
Also, take the environment variable "destdir" into account when
installing data files.
* Do not install the component modules of a packed library, but the
packed module. (Close: #1737)
* Solve ocamlmklib instability, re-enable test "OMake/Complex".
(Closes: #1739)
* Only link those libraries into executables that are really needed.
(Closes: #1747).
* Fix problems with the automatic addition of deps when building
executables on platforms with case-insensitive file system.
* Make OMake tests optional since it is complex to install OMake 0.10.2
with OPAM.
* Minor changes:
* Make sure --destdir is really used when installing (Closes: #107).
* Try to register only when a glob pattern matches at least one file (#102)
* Clean up setup.cmt after compiling setup.exe
* By default, use Github for bug reporting (Closes: #97)
* Simplify conditional expressions (Close: #95)
* Document CLISubCommand.register, CLISubCommand.default_fspecs
Thanks to Gerd Stolpmann, Christophe Troestler and Deokhwan Kim.
2016-12-06 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.8
* Major changes:
* Fix various problems of parsing present in OASIS 0.4.7:
* Only issue a warning when extraneous blanks are present. (Closes: #1665)
* Fixes ocamlbuild plugin argument handling bug. (Closes: #1659)
* Re-add MyOCamlbuildBase.env_filename.
* Script to test reverse build depends (Closes: #1672).
* Enable creation of OASIS plugin and OASIS command line plugin:
* Add examples/plugins to demonstrate how to build plugins.
* Update HACKING.md.
* Ensure they work, using a test.
* Plugin "omake":
* Workaround for a problem in omake-0.9.8.6: variables accumulated
via foreach cannot be private.
* Passing the title string down to ocamldoc
* Fix compilation of pack-level mli's.
* Move definition of some variables in subdirectories to use them
correctly (OCAMLINCLUDES, OCAMLPACKS and a few others)
Thanks to Gerd Stolpmann for these contributions.
* Improve CI/tests:
* Split quickstart tests out of the main tests, because it fails too
often and often need to be disabled.
* Reorganize test/ directories.
* Use OCaml 4.04 for Travis-CI.
* Reorganize my CI scripts in src/tools/ci.
* Get rid of ardivink and switch to OPAM for travis and jenkins builders.
* Create 2 branches (opam/unstable and opam/testing) to provide pinning
capabilities to OPAM:
* It allows OPAM to track the development version of OASIS
* Update information in README.md
* Add a makefile target to allow to create opam/ in a local copy for
testing a locally hacked version of OASIS.
* Setup auto-generation of opam/unstable branch and auto-promotion of
opam/unstable to opam/testing when integration tests have succeeded.
* Minor changes:
* Quick hack to solve #1674 and allow to use flambda, upstream notified of
the problem. (Closes: #1674)
* Use OASISFormat 0.4 for OASIS itself:
* Use source_patterns feature to precisely locate .mlify files.
* Use markdown to generate standard files.
* Add BugReports to generated README in StdFiles.
Thanks to Edwin Török, Yuri D. Lensky and Gerd Stolpmann for their
contributions.
2016-08-21 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.7
* Drop support for OASISFormat 0.2 and 0.1.
As per the version policy in HACKING.md, this change syncs with OASIS
version in Debian. Debian Jessie has OASIS v0.4.4, so it is possible to
drop support for older version.
* Provide stable API in setup.ml using BaseCompat.
This change introduces BaseCompat and opens by default the version
matching OASISFormat in setup.ml. This allows to make changes to OASIS
and still provides a stable API in setup.ml. The only side effect is that
it requires to update the setup.ml of DynRun at every major version updates.
Unfortunately, providing compatibility for ALL changes is an hard task.
Users are welcome to file bugs whenever their customized setup.ml breaks
because of an incompatible change.
* Plugin "omake":
This new plugin provides build, doc and install capabilities using
OMake. Some features are not supported, like Object sections.
It requires 'OCamlVersion: >= 4.01'.
Example:
OASISFormat: 0.4
OCamlVersion: >= 4.01
[...]
BuildTools: omake
BuildType: omake (0.4)
Library simplelib
[...]
Document simplelib
BuildTools+: ocamldoc
[...]
Thanks to Gerd Stolpmann for this huge contribution.
* Create OASIFileSystem and use it in OASISContext.t.srcfs.
The new module OASISFileSystem is a filesystem abstraction layer that
allows to better represents (through types) where the files are (e.g.
source or build directory).
The very first use of it is to add in OASISContext.t as srcfs. The
filesystem object is itself limited to only use
OASISContext.source_filename, which allows to use types to enforce
location of files.
The various default_filename across the code are now typed according to
their location (e.g. "setup.log" and "setup.data" are
OASISContext.source_filename). The only way to actually open, read and
write the corresponding file is to apply methods provided in OASISFileSystem
object.
This change also delays enough the evaluation of the location of
"setup.log" and "setup.data", which solves the bug 1473.
(Closes: #1473)
* Improve automatic tests:
* Use OPAM to install dependencies.
* Use Travis to test and compile with all major OCaml version since 3.12.1
on Linux.
* Use AppVeyor to compile on Cygwin.
* Test for dynamic mode mode compilation on Cygwin with AppVeyor.
* Rename test files to reflect what files they are testing.
* Split test/data/TestFull/* tests to reflect what plugins/files they are
testing.
* Add some badges for build status on Travis and AppVeyor in README.md.
* Test the parsing of examples/oasis/*.oasis files.
* Check all examples are tested, add examples/ocamlbuild tests.
* Check that all examples use the latest version of OASIS.
* Disable test 'external source rebuild' which tends to be flaky.
* Refactor TestFull to remove boilerplates and make it more readable.
* Create a test function to check all subdirectories are listed and tested,
add tests for the missing ones.
* Reduce the number of skipped tests.
* Refine constraint to produce .cmt to >=4.01.
* Trim down the dependencies:
* Stop depending on ocaml-data-notation and type_conv.
* Create a trim down, internval version of ocaml-data-notation. The
conversion functions need to be manually written -- not perfect
but a good way to drop the dependency and still be compatible with OCaml
3.12.1.
* Stop depending on ocaml-gettext, this was never really used.
* Get rid of camlp4:
* Replace most genlex parser, by standard yacc/lex parsers.
* Replace OASISRecDescParser by OASISAst_parser using ocamlyacc.
(Closes: #298)
* The "flag(...)" in expression is now case sensitive, to avoid conflict
with the "Flag ..." section.
* Some parts still use Genlex, but don't need camlp4 anymore.
* Trimming down the dependencies allows to make it easier to port OASIS on
other platforms (like Windows) where some former dependencies were tricky
to compile (like camlp4).
* Stop using -install-lib-dir on Windows.
This change prevents the use of -install-lib-dir on Windows, for OCaml
version greater than 3.11.1. The bug in ocamlbuild has been fixed in OCaml
3.11.1 [1]. This is a bit a shot in the dark, since testing on Windows is
not setup.
[1]: https://github.com/ocaml/ocamlbuild/commit/79cf4029b
* Minor changes:
* Consistently use choices type in OASISExpr module.
* Make OCamlbuild plugin not assume that dynamic linking is supported.
(Patch: #1536) (Closes: #1251)
* Improve setup.log parsing, by using Genlex.
* Enforce using a published version of OASIS to generate its own setup.ml,
provide explanations in HACKING.md.
* Fix problem reading files on Cygwin (esp. setup.log), reported size after
an append doesn't reflect the real size of the file in some cases.
* Always compile src/tools/* and move dist.ml there.
* Refactor string version comparison into its own sub-module.
* Fix missing rules for headache.
* Remove unused userconf library.
* Pass -thread to C files as well.
* Don't use $< in explicit DevFiles build rule (BSD make compatibility).
* Example to override cc when compiling C source files.
* Remove the need for Bytes altogether.
* Add fields "Tags" and "BugReports" to export them to OPAM.
* Big documentation cleanup (`\_oasis` synopsis, doc/*).
* Reformat source files using ocp-indent and start to use merlin.
* Allow to use a string when testing values in `\_oasis`, for example it is
now possible to use expression like 'ocaml_version("4.02.1")'
* Improve OASISVersion.comparator_reduce. Now, it transforms the given
comparator into its disjunctive form and order the version number.
* Rename all executables so that their names match OCaml policy for module.
* Move all executables into their own directories to prevent dependencies
leak.
* Transform tools into executables.
* Always compile executables to check they still work.
* Features:
* no_automatic_syntax (alpha): don't disable the -package injection logic.
* compiled_setup_ml (alpha):
* Fix the configure file when using the compiled_setup_ml feature and
improve the Makefile.
* Recompile when needed while executing the configure script.
* findlib_directory (beta, new):
Findlib allows to specify a "directory" in a META file. This can be used
to store some files of the library in sub-directories. This change
allows to set and use this "directory" field.
The InternalInstall plugin now handles installing files in
sub-directories. However there is no flag to specify this when using
`ocamlfind install`, so we use a standard file installation, with a
best-guess computation of the target directory.
The META plugin can now set the "directory" field according to what has
been set in the `_oasis` file. Note that, for nested package the install
directory is relative to the install directory of the parent package.
Example:
BetaFeatures: findlib_directory
Plugins: META(0.4)
Library library
[...]
FindlibDirectory: lib
Thanks to Gabriel Radanne for this contribution. (Closes: #1305)
* findlib_extra_files (beta, new):
This change allows to use a new `_oasis` field 'FindlibExtraFiles' to
install extra files along the matching library/object in findlib.
Example:
BetaFeatures: findlib_extra_files
Library library
[...]
FindlibName: foobar
FindlibExtraFiles: myfile.txt
In this case `myfile.txt` will be installed in the same directory as the
'foobar' package.
Thanks to Evgenii Lepikhin for the contribution. (Closes: #802)
* source_patterns (alpha, new):
This change allows to override the built-in source files search. It uses
user-provided 'InterfacePatterns' and 'ImplementationPatterns' fields and
a small DSL to define how to find a file matching a given module. The
fields can be defined at the top level or in the Library section.
The DSL is based on Genlex and Buffer.add_substitute. It has two
functions `capitalize_file` and `uncapitalize_file` and one variable
`module`.
Example:
AlphaFeatures: source_patterns
Library library
[...]
Modules: FooBar
InterfacePatterns+: ${module}.eliomi
ImplementationPatterns+: ${module}.eliom
It is particularly useful to get rid of the warnings like:
W: Cannot find source file matching module [...]
Thanks to Petter Urkedal for this contribution.
Thanks to Spiros Eliopoulos, Paul Snively, Jeremie Dimino, Christopher
Zimmermann, Christophe Troestler, Max Mouratov, Jacques-Pascal Deplaix, Geoff
Shannon, Simon Cruanes, Vladimir Brankov, Gabriel Radanne, Evgenii Lepikhin,
Petter Urkedal, Gerd Stolpmann and Anton Bachin for their contributions.
2016-04-29 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.6
* Hotfix release for OCaml 4.03.0 (Closes: #1519).
* Major changes:
* Create patch functions to mimic the new String.lowercase_ascii,
String.uppercase_ascii, String.capitalize_ascii and
String.uncapitalize_ascii found in OCaml 4.03.0
* Disable tests depending on not yet buildable units with OCaml 4.03.0 (e.g.
expect which depends on batteries, which doesn't yet compile)
* Minimal version of OCaml is now 3.12.1. (Debian Wheezy version)
2014-10-22 Jacques-Pascal Deplaix <jp.deplaix AT gmail.com>
* Version 0.4.5
* Major changes:
* Build and install annotation files.
* Use builtin bin_annot and annot tags.
* Tag .mly files on the same basis as .ml and .mli files
(required by menhir).
* Remove 'program' constraint from C-dependencies.
Currently, when a library has C-sources and e.g. an executable
depends on that library, then changing the C-sources and running
'-build' does not yield a rebuild of the library.
By adding these dependencies (rather removing the constraint),
it seems to work fine.
* Minor changes:
* Add tests tag if --enable-tests.
* Remove ocaml 4.02 warnings.
* Fix the automatic use of -syntax for OCamlVersion >= 3.12.1.
* Use the right ocamlfind binary to get all supported packages.
The name of the ocamlfind binary should be read from the configuration.
This is especially useful when cross-compiling.
* Features:
* no_automatic_syntax (alpha): Disable the automatic inclusion
of -syntax camlp4o for packages that matches the internal heuristic
(if a dependency ends with a .syntax or is a well known syntax).
* compiled_setup_ml (alpha): Fix a bug using multiple arguments
to the configure script.
Thanks to Christopher Zimmermann, Jerome Vouillon, Tomohiro Matsuyama
and Christoph Höger for their pull requests and to help release this version.
2014-03-26 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.4
* Quick bug fix release:
* Don't skip some "\n\n" in Makefile/META/myocamlbuild.ml/setup.ml. This
bug makes `oasis setup` think that these files have changed even if they
have just been regenerated. (Closes: #1382).
2014-03-25 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.3
* Major changes:
* Added -remove switch to the setup-clean subcommand designed to remove
unaltered generated files completely, rather than simply emptying their
OASIS section.
* Translate path of ocamlfind on Windows to be bash/win32 friendly.
* Description is now parsed in a more structured text (para/verbatim).
* Minor changes:
* Give a more precise message when module name are wrong (Closes: #1236).
* Prevent loop in transitive_closure computation (Closes: #1253).
* Update HACKING.md to define how to do a release and add some version
and backward compatibility requirements.
* No timeout for ocaml-expect, to prevent flaky tests on slow architecture.
* Prevent warnings from confusing the terminal, add some extra \n.
* Force to use the ocamlfind define in configure. (Closes: #1360)
* Add more descriptive message when indentation is wrong (Closes: #1295)
* Features:
* stdfiles_markdown (alpha): set default extension of StdFiles (AUTHORS,
INSTALL, README) tp be '.md'. Use markdown syntax for standard files. Use
comments that hides OASIS section and digest. This feature should help
direct publishing on GitHub.
* disable_oasis_section (alpha): it allows DisableOASISSection to be
specified in the package with a list of expandable filenames given. Any
generated file specified in this list doesn't get an OASIS section digest
or comment headers and footers and is therefore regenerated each time
oasis setup is run (and any changes made are lost).
This feature is mainly intended for use with StdFiles so that, for
example, INSTALL.txt and AUTHORS.txt (which often won't be modified) can
have the extra comment lines removed.
* compiled_setup_ml (alpha): allow to precompile setup.ml to speedup.
Thanks to David Allsopp, Martin Keegan and Jacques-Pascal Deplaix for their
pull requests and to help release this version.
2014-02-23 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.2
* Major changes:
* Change BSD3 and BSD4 to BSD-3-clause and BSD-4-clause to comply with
DEP5, add BSD-2-clause. BSD3 and BSD4 are still valid but marked as
deprecated.
More information:
http://dep.debian.net/deps/dep5/#license-specification
* Enhance .cmxs supports through the generation of .mldylib files.
When one of the modules of a library has the name of the library,
ocamlbuild tends to just transform this module into a .cmxs. Now, the use
of a .mldylib fix that problem and the .cmxs really contains all modules
of the library.
* Refactor oasis.cli to be able to create subcommand plugins.
* Exported modules starts now with CLI.
* Display plugins in the manual.
* Design so that it is possible to be thread-safe.
* Try to minimize the number of functions.
* Make better choice of name and API.
* A subcommand plugin 'dist' to create tarball is in preparation, as a
separate project.
* Remove plugin-list subcommand, this command was limited and probably not
used. A better alternative will appear in next version.
* Sub-command setup-dev is now hidden and will soon be removed.
* Minor changes:
* Refactor ocamlbuild build plugin to have some features in doc plugin.
XOCamlbuilExtraArgs and XOCamlbuildPluginTags are now available for
Document. The flag '-use-ocamlfind' is set for doc and build plugin.
* Reorganize the test/data directory, each toplevel test has now its
dedicated subdirectory in test/data.
* Start to work on better support of syntax extension:
* Remove archive(syntax,{byte,native}) from the META, this was causing
an issue when trying to compile.
* Add an example that creates a syntax extension.
* Add support for auto-guessing syntax_camlp4o when one of the syntax
extension shipped with camlp4 is in a build depends.
* Allow to include $(X) in CCOpt/CClib.
This patch helps to enable variable susbtitution for flags. This allow to
write a PostConfCommand script to insert this data in setup.data and have
them back when running OCamlbuild.
* Raise error when "true" or "false" are not spelled correctly.
* Fix some warnings about "Field X is set but matcing plugin Z is not
enabled."
Thanks to Andrew Ferguson, Florent Monnier and Jacques-Pascal Deplaix for
their pull requests and to help release this version.
2013-12-19 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.1
* Major changes:
* Fix broken compilation with threads and OCaml >= 4.01 (Closes: #1358)
* Minor changes:
* Refactor plugins for command line interface.
* Get rid of message 'field is set but no matching plugin'
(Closes: #795, #1043).
* Features:
* dynrun_for_release (alpha):
* The goal of this plugin is to allow creating release with a minimal
setup.ml that uses '-setup-update dynamic'.
* Refactor setup.ml to perform early checks. like looking for findlib
and oasis.dynrun library and warns the user in case they cannot be
found (early configure script).
* Along setup.ml, Makefile and configure, also keep INSTALL.txt if
StdFiles plugins is used to provide a readable list of package to
install.
* Addendum to 0.4.0 release:
* Since 0.4.0 OASIS has a limited support to syntax extension. If in the
list of BuildDepends, one of the library ends with ".syntax", OASIS will
add the tag "syntax_camlp4o" to all files of this library. This new
feature already covers some common case of using syntax extensions.
2013-12-13 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.4.0
* Major changes:
* Migrate the source repository to https://github.com/ocaml/oasis
* Fix a lot of code style issues (e.g. blank at the end of the line) and
create a test to check that the style of generated files is correct. Some
related tools has been fixed asi well, for the best formatting use
ocamlmod >= 0.0.7 and ocaml-data-notation >= 0.0.10.
* Port all tests to OUnit 2.0, which allows to run all tests faster.
* Run some tests with a fake bytecode only setup, so that we can always
check that bytecode and nativecode tests are passing. (Closes: #1306)
* Fix a missing dependency on ocamlbuild package and inclusion of
ocambuildlib.cma in builtin-plugins.cma.
* Introduce a framework to create features.
* Add fields AlphaFeatures and BetaFeatures to list the experimental
features you want to use in your _oasis
* Using AlphaFeatures and BetaFeatures is only allowed if OASISFormat is
set to the latest OASIS version. There is no backward compatiblity for
experimental features. For example, if you are using OASIS 0.4.X,
OASISFormat must be set to 0.4.
* AlphaFeatures represents features not fully completed that maybe very
unstable, quickly evolving and even removed in future release.
* BetaFeatures represents features almost finished that needs to mature
a bit before being published.
* See 'Features' section in this changelog to have a list of what
features are available.
* Minor changes:
* Self compile during tests.
* Apply patches found in vouillon/opam-android-repository.
* Fix bug when a directory with the right name appears in the PATH.
* Fix OASISPath_intern.fn_reader on Cygwin.
* Fix suffix_program on Cygwin.
* Fix the META generation when XMETAType: syntax.
* Fix for installing .cmx files with packed libraries as required for
cross-module inlining.
* Fix bad location of .cmx generated along .cmxs.
* Add GNU Affero GPL license
* Add the wtfpl license
* Fix typos, thanks to Hendrik Tews.
* Locate "topfind" when using opam "system" compiler.
* Fix issue (Closes: #1239)
* Assume camlp4o when packages end in .syntax.
* Make sure the right Findlib version is used with OCaml 4.0.0.
* Fix strange split function in myocamlbuild (Closes: #1186)
* Features:
* section_object (beta):
* Implement 'Object' section, thanks to Philippe Veber
* pure_interface (alpha):
* Support pure interface modules in libraries.
* ocamlbuild_more_args (alpha):
* Add field XOCamlbuildPluginTags to pass -plugin-tags to OCamlbuild
* Add field XOCamlbuildExtraArgs to pass more args to OCamlbuild
2012-06-28 Sylvain Le Gall <sylvain AT le-gall.net>
* Version 0.3.0
* EXTREMLY IMPORTANT changes (read this):
* Fix bug with scanf %S@\n for ocaml 4.00. We were unfortunetaly using an
undocumented tolerance of Scanf in the previous version. You should
consider making new release using this version that fixed this.
PACKAGES uploaded to oasis-db will be automatically "derived" before
OCaml 4.00 release (i.e. oUnit v1.1.1 will be regenerated with this new
version as oUnit v1.1.1~oasis1).
PACKAGES not uploaded to oasis-db need to be regenerated. In order not to
break 3rd party tools that consider a tarball constant, I recommend to
create a new version.
Thanks to INRIA OCaml team for synchronizing with us on this point.
* Major changes:
* Handle the field "Pack: true" to be able to create packed libraries. It
also installs .mli files for documentation into the target directory.
The pack option is only supported for "OASISFormat: 0.3", you will need
to update the version of your _oasis file to match it.
* Introduce --[enable|disable]-[tests|docs] to disable tests and docs at
oasis level. It seems a very common pattern to have a "Flag tests" to
turn off by default the tests. This is now define as a standard var and
you should remove you previous "Flag tests" but you can continue to
use "flag(tests)" where needed.
You can now have the following example:
...
Executable test_exec
Install: false
Build$: flag(tests)
MainIs: testExec.ml
BuildDepends: oUnit
Test main
Command: $test_exec
TestTools: test_exec
...
The "Run$: flag(tests)" is implicit for the section "Test main". The
default value is "false" for tests. If all the executable for test are
flagged correctly (Build$: flag(tests)), you'll get rid of the dependency
on oUnit.
It works the same for documentation, however the default is "true".
(Closes: #866)
* Allow to define interdependent flags
In order to allow interdependent flags, we transform back lazy values
into 'unit -> string' functions. This allows to change a flag value on
the command line and to update all the dependent values.
(Closes: #827, #938)
* Deprecate the subcommand 'oasis setup-dev' in favor of
'oasis setup -setup-update {none|weak|dynamic}'
It defines different ways to manage the auto-update of setup.ml:
* 'none': this is the default mode, and the one you should use when
distributing tarballs. No update are performed at al.
* 'weak': the update is only triggered when something change in `_oasis`,
we keep all files generated
* 'dynamic': the content of 'setup.ml' is ultra small (<2kB) and we only
keep a small 'setup.ml', 'Makefile' and 'configure'.
The choice between 'weak' and 'dynamic' depends on your need with
regard to VCS and to the presence of `oasis'. The 'weak' allow to checkout
the project from VCS and be able to work on it, without the need of
installing 'oasis' as long as you don't change the file '_oasis'. But it
clutter your VCS history with changes to the build system each time you
change something in '_oasis'. The 'dynamic' mode gives you no VCS history
pollution but makes mandatory to have installed oasis libraries.
* Don't copy executable in ocamlbuild
Avoid copying executable to their real name. It helps to call ocamlbuild a
single time for the whole build rather than calling it n time (n = number
of executable sections) and copying resulting exec.
This speeds up the build process because ocamlbuild doesn't have to
compute/scan dependencies each time.
The drawback is that you have to use $foo when you want to call
"Executable foo", because $foo will be _build/.../main.byte.
* Change the way we parse command line like option (CCOpt, CCLib and the
like). We have implemented a real POSIX command line parser, except that
variables are processed by Buffer.add_substitute (except if correctly
escaped, using Buffer.add_substitute escaping).
Example:
CCOpt: -DEXTERNAL_EXP10 -L/sw/lib "-framework vecLib"
Will be parsed correctly and outputed according to target OS.
* Externalize ocamlmod in its own project, which become a dependencies.
* Minimize the dependencies of the project.
In order to ease building oasis, we have minimize the number of
dependencies. You only need to install ocamlmod, ocamlify and
ocaml-data-notation for a standard build without tests. Dependencies on
pcre, extlib and ocamlgraph has been dropped. The remaining dependencies
are hidden behind a flag "tests".
* Implement proposal for handling plugin in META, using "plugin" extra
directives
oasis now produces .cmxs file by default and add them to META.
Now a META looks like:
...
archive(byte) = "oasis.cma"
archive(byte, plugin) = "oasis.cma"
archive(native) = "oasis.cmxa"
archive(native, plugin) = "oasis.cmxs"
...
This will ultimately help to generate automatically .cmxs for all oasis
enabled projects. We hope that this new feature will improve dynamic
linking use in OCaml (esp. for project like Ocsigen).
* Other changes:
* Produce only subcommands specific helps when asked (Closes: #783)
* Use pager for long textual output (Closes: #782)
* Give the help summary directly when running just "oasis" (Closes: #781)
* Remove `pwd` filename prefix to avoid too long command line on Windows
(Closes: #1007)
* Install required .cmx when installing libraries (Closes: #686, #885)
* Retain blanks at the beginning of line in freeform (Closes: #811)
* Allow PreConfCommand to create setup.data with any variables inside
(Closes: #823)
* Allow to use setup.data in shell script and Makefile (Closes: #982)
* Fix execute permissions (Closes: #980)
* Drop extra version in ocaml version (Closes: #964, #888)
* Always output info messages on stderr (Closes: #785)
* Fix interversion in version comparator lexer (Closes: #808)
* Document the fact that setup.data is mandatory (Closes: #946)
* configure translates getopt command line to Arg (Closes: #778, #804)
* Generate valid META when there are line breaks in synopsis (Closes: #933)
* Keep owner of generated files (Closes: #793)
* Set -I +threads for ocamlfind ocamldoc in ocamlbuild (Closes: #949)
* Exclude VCS directories by default (Closes: #847)
* Print the configure summary in the "normal" order.
* Merge findlib virtual containers with the same name
* Synchronize plugin data for section
* Improve documentation
* Verify validity of input when parsing in quickstart (Closes: #797)
* Fix stack overflow when there are twice the same library (Closes: #1130)
* Parse license examples for DEP5 specification (Closes: #1102)
* Be ultra-liberal regarding version syntax (allow '_' and ' ' in the
version).
* Allow to add extra content to META files (XMETAExtraLines)
* Allow to use executable name that contains "-" as a variable (replacing
"-" by "_").
Thanks to Anil Madhavapeddy, Pierre Chambart, Christophe Troestler,
Jeremie Dimino, Ronan Le Hy, Yaron Minsky and Till Varoquaux for their help
with this release.
Also thanks to all the testers of the numerous release candidates. This
was a long work and each time a tester has downloaded oasis has helped me
to know that I was working for someone.
2010-10-16 Sylvain Le Gall <sylvain.le-gall AT ocamlcore.com>
* Version 0.2.0
* Split the project into 3 libraries and one executable:
* oasis: the core library
* oasis.base: the runtime library
* oasis.builtin-plugins: various plugins (ocamlbuild, internal, none,
custom)
* the executable 'oasis' in lowercase which was 'OASIS' before
(Closes: #769)
* Publish .mli and improve ocamldoc generated documentation (Closes: #667)
* oasis library:
* Ignore plugins even when parsing field
* Allow to redirect messages through a function and use a context to avoid
global variables. This is an OASIS-DB website requirement, but we fallback
to a global variable in oasis.base
* Use the same policy as Debian for version comparison (copied from dpkg)
(Closes: #584)
* Add MIT, CeCILL licenses and make unknown license less fatal
(Closes: #710, #557)
* Allow https, ftp, mailto, svn, svn+ssh for URL (Closes: #753)
* Replace Str by Pcre
* Don't modify package data structure through plugins, we just issue
warnings and error when something is missing. This is compensated by a
better 'quickstart' that can automatically complete required fields (e.g.
it adds 'ocamlbuild' as a BuildDependency for 'ocamlbuild' plugin).
(Closes: #552, #566)
* Set default for test type to 'custom' plugin (Closes: #562)
* Use a more simple lexer for _oasis (Closes: #579)
* Warn if the use of '\t' to indent lines is inconsistent in an _oasis file
(e.g. mix of ' ' and '\t')
* Allow to use 'flag' as environment variables in _oasis (e.g. flag test
can be used as Command: echo $test) (Closes: #619)
* ADVANCED USERS: Create a new scheme to synchronize data between the
property list used to parse and print an _oasis file and the data
structure representing it. This is a first step to avoid carrying
property lists inside the data structure. It should also allow to dump
plugin data directly inside the data structure rather than having to do
it "by hand". This allows to have a more complete quickstart support
also (i.e. handling plugins directly). It also allows to manipulate the
datastructures in a single place: with the scheme before you have to
update the property list and the rest of the datastructure. (Closes:
#705, #733)
* oasis.base library:
* Exit with an error code when tests fail
* Don't account skipped test (Closes: #624)
* Delegate the "setup-dev" actions to the executable 'oasis' rather than
embedding it into setup.ml
* Add a '-version' to setup.ml to know what version has generated the file
(Closes: #692)
* Add a '-all' target that does "-configure", "-build", "-doc" and "-test"
in one run (Closes: #551)
* Add a '-reinstall' target that 'uninstall' and 'install' (Closes: #568)
* Use the right command to delete file on Windows
* executable 'oasis':
* Use a subcommand scheme, like subversion. For example, it replaces the
former "OASIS -setup" by "oasis setup". Each subcommand can be a small
plugin
* Add a "query" subcommand to extract data of _oasis from command line
(Closes: #691)
* Add a "setup-clean" subcommand that removes generated files and helps
cleaning OASIS_START/STOP section of their content
(Closes: #564, #623, #563)
* Add a "check" subcommend that checks _oasis files
* Greatly improve the "quickstart" subcommand:
* Take into account plugins in quickstart
* Allow to have multiple choices for field Plugins in quickstart mode
* Don't display help text at each question (Closes: #586)
* Allow to create a doc (Closes: #633)
* Allow to run a pager, editor or "oasis setup-dev" at the end
(Closes: #580, #582)
* Don't accept '?' as an answer in quickstart (Closes: #587)
* Add examples and all available licenses in the help of License field
(Closes: #559)
* Keep generated files when 'oasis setup-dev' is called (Closes: #743)
* Plugin "ocamlbuild":
* Handle "Path: ." in generated _tags correctly (Closes: #570, #588)
* Quick fix to handle .h files directly in CSources field
* Include .mli in _tags (Closes: #572)
* Pass -cclib and -dllpath options to ocamlmklib (Closes: #629)
* Don't pass -dlllib and -dllpath options to ocamlopt (Closes: #628)
* Plugin "internal":
* Create parent directories when installing with InternalInstall
(Closes: #555)
* Don't install data when section is not built (Closes: #554, #556)
* Plugin "META":
* Add an exists_if field to generated META file (Closes: #694)
2010-04-08 Sylvain Le Gall <sylvain.le-gall AT ocamlcore.com>
* Initial version 0.1.0