mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
finish self exctracting executable
This commit is contained in:
parent
7f0c6fb103
commit
6c1d04710f
@ -45,8 +45,8 @@ int compress(int in_fd, int out_fd, int level=5)
|
|||||||
// 6402520 is size of stripped decompressor
|
// 6402520 is size of stripped decompressor
|
||||||
size_t start = 6405000ull;
|
size_t start = 6405000ull;
|
||||||
|
|
||||||
// 22550744 size of decompressor
|
// 22558008ull size of decompressor
|
||||||
// size_t start = 22550780ull;
|
// size_t start = 22558008ull;
|
||||||
|
|
||||||
/// As experiments showed, size of compressed file is 4 times less than clickhouse executable
|
/// As experiments showed, size of compressed file is 4 times less than clickhouse executable
|
||||||
/// Get a little bit more memory to prevent errors with size.
|
/// Get a little bit more memory to prevent errors with size.
|
||||||
|
@ -31,7 +31,7 @@ int decompress(int in_fd, int out_fd)
|
|||||||
fstat(in_fd, &info_in);
|
fstat(in_fd, &info_in);
|
||||||
|
|
||||||
/// NOTE: next parametrs depend on binary size
|
/// NOTE: next parametrs depend on binary size
|
||||||
// 22550780ull for full, 6405000ull for stripped;
|
// 22558008ull for full, 6405000ull for stripped;
|
||||||
off_t in_offset = 6405000ull /*size of decompressor*/, out_offset = 0;
|
off_t in_offset = 6405000ull /*size of decompressor*/, out_offset = 0;
|
||||||
|
|
||||||
/// mmap files
|
/// mmap files
|
||||||
@ -82,16 +82,16 @@ int decompress(int in_fd, int out_fd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main(int /*argc*/, char* argv[])
|
||||||
{
|
{
|
||||||
int input_fd = open("decompressor", O_RDONLY);
|
int input_fd = open(argv[0], O_RDONLY);
|
||||||
if (input_fd == -1)
|
if (input_fd == -1)
|
||||||
{
|
{
|
||||||
perror(nullptr);
|
perror(nullptr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int output_fd = open("clickhouse_decompressed", O_RDWR | O_CREAT, 0775);
|
int output_fd = open("clickhouse.decompressed", O_RDWR | O_CREAT, 0775);
|
||||||
if (output_fd == -1)
|
if (output_fd == -1)
|
||||||
{
|
{
|
||||||
perror(nullptr);
|
perror(nullptr);
|
||||||
@ -103,7 +103,12 @@ int main()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
close(input_fd);
|
fsync(output_fd);
|
||||||
close(output_fd);
|
close(output_fd);
|
||||||
|
close(input_fd);
|
||||||
|
|
||||||
|
/// NOTE: This command should not depend from any variables.
|
||||||
|
/// It should be changed if file changes.
|
||||||
|
execl("/usr/bin/bash", "bash", "-c", "mv ./clickhouse.decompressed ./clickhouse", NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
# Put this script near compressor and decompressor
|
# Put this script near compressor and decompressor
|
||||||
|
|
||||||
strip decompressor
|
cp decompressor clickhouse
|
||||||
|
strip clickhouse
|
||||||
|
|
||||||
# TODO use env variables
|
# TODO use env variables
|
||||||
./compressor ../../programs/clickhouse decompressor
|
./compressor ../../programs/clickhouse clickhouse
|
||||||
|
|
Loading…
Reference in New Issue
Block a user