package tar-unix
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=f3d6b0d677fd40fd1eb80bccc60bb613220358be58f66c5fa8bf0257f3e5eb96
sha512=be23a0337f1334b9ead1516745f1397afd240787bb983f037ea33434eea7f0c9dedf2e53ebd1b47a076220cac9d926370d1b8d2b329d1e16d02b9b0e517dd162
doc/CHANGES.html
v3.3.0 (2025-03-06)
- Deprecate
Tar.( let* )
in favor of the newTar.Syntax
module (@kit-ty-kate, #167) - tar-mirage: remove mirage-clock dependency in favor of mirage-ptime (@hannesm, #168)
v3.2.0 (2025-01-20)
- Fix the Tar monad with Tar_gz and allow the
read
operation (@dinosaure, @BChabanne, @reynir, #161) - Add
x-maintenance-intent
field into opam files (@hannesm, #162) - Defaults level per entries to the global level (@reynir, #157)
- Update
Tar_eio
with the last version oftar
(@patricoferris, #159)
v3.1.2 (2024-09-20)
- Fix a wrong assumption in
Tar_lwt_unix.run
forTar.Really_read _
that one tar block was always read. This meant that usingTar.Really_read
with a size different from 512 would fail. (Reported by @jonahbeckford, review by @hannesm, @reynir, #153) - Document better the actual behavior of
Tar_unix.extract
andTar_lwt_unix.extract
(@reynir, #155)
v3.1.1 (2024-09-13)
- Expose
Tar_lwt_unix.run
as we do withTar_unix.run
andTar_eio.run
. This was an oversight in v3.0.0. (Reported by @jonahbeckford, @reynir, #150)
v3.0.0 (2024-08-05)
- Fix
Header.marshal
and the checksum and the length (@reynir, #145) - Delete a mutable field about the level into the header (@hannesm, #141)
BREAKING: de-functorize the package (@hannesm, @reynir, @dinosaure, #140, #143, #146)
These PRs attempt to de-functorize
Tar
so that users can implement I/O themselves, usingTar
's own element serialization/deserialization functions to take advantage of read/write methods. This avoids imposing on the user the implementation of a module that is too rigid in his/her case (which could have performance implications).Tar
offers functions for serializing/deserializing tar-specific elements fromstring
. It is then up to the user to know how to obtain or write thesestrings
.To this, these PRs add "logics" (see
'a Tar.t
) requiring read and/or write implementations and describing how to extract all entries from a tar file or how to write a tar file according to a "dispenser" (likeSeq.to_dispenser
) of entries.These logics do not depend on a particular "scheduler", and these PRs propose a derivation of these logics with
tar-unix
,tar-eio
andtar-mirage
. These latter derivations mean that the API for these packages has only been extended, and there are no breaking changes as such.These logics also make it easy to offer a compression/decompression layer with
decompress
, so you can easily manipulate and/or create a .tar.gz file.
v2.6.0 (2023-09-07)
- Add eio backend for tar in tar-eio (@patricoferris, review by @talex5, @reynir, #132)
- Also apply backwards compatibility fix when GNU LongName is used. The compatibility fix is unfortunately also applied for unknown-to-ocaml-tar link indicators (reported by @gravicappa in #129, @reynir, #133)
tar
: support pax Global Extended Headers. This adds state to tar parsing. (#119, #120, @MisterDA)- Support GNU LongLink and LongName. Prior,
Tar.HeaderWriter
andTar.HeaderReader
supported both, butTar.Header.Link
only hadLongLink
and (de)serialized to (from) GNU LongName (#127) - Compatibility level when reading / parsing is removed. Only GNU LongLink/LongName extensions were affected by the compatibility level when reading (#127)
- Add module types
Tar.HEADERREADER
andTar.HEADERWRITER
describing the output ofTar.HeaderReader
andTar.HeaderWriter
respectively (#127) - Types
Tar.READER.t
andTar.WRITER.t
are renamed toio
(#127) - Add
write_global
function for writing a global PAX extended header (#127) - Rework IO-specific modules (tar-unix etc.) harmonizing them (#127)
- Avoid exceptions in tar and use result instead. The exceptions
End_of_stream
andChecksum_mismatch
are removed (#127) - Remove the
Tar_cstruct
module as it was unused (#127) - Remove debug printers (#127)
- Finally remove the unused camlp-streams dependency (#127)
v2.5.1 (2023-06-20)
- Treat headers with link indicator '0' or '\000' (
Normal
) as directories for backward compatibility (reported in #129, fix by @reynir)
v2.5.0 (2023-06-06)
- File names and link names are used from PAX headers when parsing (reported by @gravicappa, fixed in #128 by @reynir)
v2.4.0 (2023-03-30)
- Switch to alcotest for tests (@MisterDA, review by @reynir, #121)
- BREAKING: fix ustar magic version. Previously, the version "0\000" was serialized instead of the correct version "00". This means tar archives may not be reproducable with older versions. (@reynir, @hannesm, #117 and #122)
- Remove
ppx_cstruct
dependency (@hannesm, review by @reynir, #117) - Properly skip Pax GlobalExtendedHeaders (@MisterDA, @reynir, #116 and #118)
v2.3.0 (2023-02-09)
tar-mirage
: implement mirage-kv.6.0.0 (@reynir, @hannesm)
v2.2.2 (2022-12-12)
tar-mirage
: fix writing of data when data+tar header is a multiple ofsector_size
greater than 1 (@reynir, review by @hannesm, #100)
v2.2.1 (2022-10-28)
tar-mirage
: fix writing of data, previously the end_of_archive was set 512 bytes short (#99 @hannesm @reynir)
v2.2.0 (2022-10-19)
tar-mirage
requires and implementsmirage-kv.5.0.0
(@hannesm, #96)tar-mirage
implementsMirage_kv.RW
(append-only) (@hannesm, @reynir, @dinosaure, review by @MisterDA, #93)- Update usage of
cstruct
intar
: unnecessary memsets removed, useCstruct.of_string
(@hannesm, #93) - Fix
tar-mirage
read buffer allocation error (@reynir, review by @hannesm, #94) tar
andtar-mirage
do not requirere
anymore,tar-mirage
doesn't depend oniopage
and works with solo5 and other improvements (@hannesm, review by @reynir, #90)
v2.1.0 (2022-08-31)
tar-mirage
requiresmirage-block.2.0.0
(@kit-ty-kate, #86)- Remove
io-page-unix
dependency (@hannesm, #87) - Add GZip support (@dinosaure, #88)
v2.0.1 (2022-03-09)
- Set
O_CLOEXEC
on opened files and be sure to close opened files (@MisterDA, @talex5, #83) - OCaml 5.00 support (add a new dependecy
camlp-stream
) (@Sudha247, #84) - Missing padding in LongLing 'L' case (@dra27, #82)
v2.0.0 (2021-09-23)
- Bump lower-bound on Cstruct to 6.0.0 (@MisterDA, @djs55, @dinosaure, #74)
- Update to Dune 2.9 and generate opam files (@MisterDA, @djs55, @dinosaure, #74)
- Support only OCaml versions 4.08 and higher. (@MisterDA, @dinosaure, #77)
- Don't print any logging to stdout or stderr (@MisterDA, @djs55, @dinosaure, #74)
Remove
Tar.Make.Header
,Tar_cstruct.Header
,Tar_unix.Header
, andTar_lwt_unix.Header
to keep only Tar.Header and use it everywhere.Tar.Make.Header.get_next_header
becomesTar.Make.get_next_header
;Tar_cstruct.Header.get_next_header
becomesTar_cstruct.get_next_header
;Tar_lwt_unix.Header.get_next_header
becomesTar_lwt_unix.get_next_header
;Tar_lwt_unix.Header.of_file
becomesTar_lwt_unix.header_of_file
;Tar_unix.Header.get_next_header
becomesTar_unix.get_next_header
;Tar_unix.Header.of_file
becomesTar_unix.header_of_file
;- All the
Tar_*.Header.t
values have to be changed toTar.Header.t
. (@MisterDA, @dinosaure, #77)
- Fix parsing of pax Extended Header File Times with sub-second granularity. (@MisterDA, @dinosaure, #77)
- Add
Tar_unix.transform
andTar_lwt_unix.transform
to help transforming headers of a streamed tar archive between two file descriptors. (@MisterDA, @dinosaure, #77) - Remove
{build}
tag on thedune
dependency (@CraigFe, @hannesm, #72) - Adapt
ocaml-tar
to newer MirageOS interfaces (@hannesm, @dinosaure, #73) - Update gnu.org link (@reynir, @dinosaure, #79)
file_mode
defaults to0o400
(@reynir, @MisterDA, @dinosaure, #78)
v1.1.0 (2019-04-08)
- Do not depend on mirage-types, use mirage-kv instead (@hannesm)
- Support mirage-kv 2.0.0 (@hannesm)
- Do not suppress "unused value" warning (@emillon)
- Represent link indicator as a char. This transforms comments into actual code (@emillon)
v1.0.1 (2019-02-04)
- fix tar-unix build with modern cstruct.lwt (@avsm)
v1.0.0 (2019-02-03)
- port build to dune from builder (@avsm)
- upgrade opam metadata to 2.0 (@avsm)
- remove topkg in favour of dune-release (@avsm)
- use modern
ppx_cstruct
instead ofcstruct.ppx
(#65 @avsm @djs55) - test with OCaml 4.07 as well (@avsm)
v0.9.0 (2017-11-25)
- preliminary support for Cstruct.t-backed tar processing (#54 by @hcarty)
- fix build with OCaml 4.06.0 (and
-safe-string
)
v0.8.0 (2017-05-09)
- split into 3 packages:
tar
,tar-unix
,tar-mirage
- use jbuilder for building
- add support for reading @LongLink headers
- mark deprecated functions with @@ocaml.deprecated
- fix some warnings
v0.7.1 (2017-02-03)
- convert build system to topkg (#43, @hannesm)
v0.7.0 (2017-01-19)
- Build against MirageOS version 3, and drop support for earlier versions.
- Support only OCaml versions 4.03 and higher.
v0.6.1 (2016-09-30)
- fix a bug in the key=value interface when the archive isn't a multiple of 4KiB in size
v0.6.0 (2016-09-19)
- support for pax headers
- removed Tar.Archive.fold: please use HeaderReader instead
v0.5.1 (2016-08-30)
- handle EINTR and short writes properly (@ivg)
- avoid a warning catching
Failure
exceptions fromint_of_string
v0.5.0 (2016-04-24)
- now requires cstruct >= 1.9.0 and OCaml 4.02+
v0.4.2 (2016-04-22)
- test: only run tests if mirage-block-unix is present
- improve the opam file
- travis: simplify the configuration
v0.4.1 (2015-07-21)
- fix Tar_mirage when using block devices with < 4096 byte sectors
v0.4.0 (2015-07-19)
- add tar.mirage in ocamlfind, containing Tar_mirage which exposes a BLOCK device as a KV_RO
v0.3.0 (2015-04-06)
- add Tar.Make functor which allows easier integration with camlzip
- always initialise tar header unused bytes to 0 (previously would use uninitialised data)
- modernise Travis CI scripts to use OPAM 1.2 workflow.
v0.2.1 (2013-11-15)
- Re-add some old deprecated functions
v0.2.0 (2013-10-13)
- Add 'Tar.Archive.fold' for folding over entries in an archive
v0.1.1 (2013-10-03)
- Rename ocamlfind package from 'ocaml-tar' to simply 'tar'
v0.1.0 (2013-10-03)
- Initial release
- v3.2.0 (2025-01-20)
- v3.1.2 (2024-09-20)
- v3.1.1 (2024-09-13)
- v3.0.0 (2024-08-05)
- v2.6.0 (2023-09-07)
- v2.5.1 (2023-06-20)
- v2.5.0 (2023-06-06)
- v2.4.0 (2023-03-30)
- v2.3.0 (2023-02-09)
- v2.2.2 (2022-12-12)
- v2.2.1 (2022-10-28)
- v2.2.0 (2022-10-19)
- v2.1.0 (2022-08-31)
- v2.0.1 (2022-03-09)
- v2.0.0 (2021-09-23)
- v1.1.0 (2019-04-08)
- v1.0.1 (2019-02-04)
- v1.0.0 (2019-02-03)
- v0.9.0 (2017-11-25)
- v0.8.0 (2017-05-09)
- v0.7.1 (2017-02-03)
- v0.7.0 (2017-01-19)
- v0.6.1 (2016-09-30)
- v0.6.0 (2016-09-19)
- v0.5.1 (2016-08-30)
- v0.5.0 (2016-04-24)
- v0.4.2 (2016-04-22)
- v0.4.1 (2015-07-21)
- v0.4.0 (2015-07-19)
- v0.3.0 (2015-04-06)
- v0.2.1 (2013-11-15)
- v0.2.0 (2013-10-13)
- v0.1.1 (2013-10-03)
- v0.1.0 (2013-10-03)