Add porttix-create support for a secondary tarball.

This functionality is needed for ports such as perl that needs
perl-cross extracted on top of it.
This commit is contained in:
Jonas 'Sortie' Termansen 2021-07-21 14:01:06 +02:00
parent 9a20f8cc37
commit c28667fdf7
1 changed files with 44 additions and 3 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2015, 2016 Jonas 'Sortie' Termansen.
* Copyright (c) 2013, 2015, 2016, 2021 Jonas 'Sortie' Termansen.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -63,6 +63,7 @@ int main(int argc, char* argv[])
{
char* input_normalized_path = NULL;
char* input_tarball_path = NULL;
char* input_tarball2_path = NULL;
char* output_directory = strdup(".");
char* output = NULL;
char* tmp = strdup(getenv_def("TMPDIR", "/tmp"));
@ -95,6 +96,7 @@ int main(int argc, char* argv[])
else if ( GET_OPTION_VARIABLE("--output-directory", &output_directory) ) { }
else if ( GET_OPTION_VARIABLE("--output", &output) ) { }
else if ( GET_OPTION_VARIABLE("--tarball", &input_tarball_path) ) { }
else if ( GET_OPTION_VARIABLE("--tarball2", &input_tarball2_path) ) { }
else if ( GET_OPTION_VARIABLE("--tmp", &tmp) ) { }
else
{
@ -149,7 +151,10 @@ int main(int argc, char* argv[])
initialize_tmp(tmp, "porttix");
const char* tarball_basename = non_modify_basename(input_tarball_path);
const char* tarball_basename =
input_tarball_path ? non_modify_basename(input_tarball_path) : NULL;
const char* tarball2_basename =
input_tarball2_path ? non_modify_basename(input_tarball2_path) : NULL;
char* rel_srctix_path = print_string("%s.srctix", package_name);
char* rel_normalized_path = print_string("%s.normalized", package_name);
@ -253,10 +258,26 @@ int main(int argc, char* argv[])
execvp(cmd_argv[0], (char* const*) cmd_argv);
err(127, "%s", cmd_argv[0]);
}
if ( input_tarball2_path && fork_and_wait_or_death() )
{
const char* cmd_argv[] =
{
"tar",
"--extract",
"--directory", normalized_path,
"--file", input_tarball2_path,
"--strip-components=1",
NULL,
};
execvp(cmd_argv[0], (char* const*) cmd_argv);
err(127, "%s", cmd_argv[0]);
}
}
// Copy the tarball into the port tix.
char* porttix_tarball_path = print_string("%s/%s", porttix_path, tarball_basename);
char* porttix_tarball_path =
print_string("%s/%s", porttix_path, tarball_basename);
if ( fork_and_wait_or_death() )
{
const char* cmd_argv[] =
@ -272,6 +293,26 @@ int main(int argc, char* argv[])
}
fprintf(porttixinfo_fp, "tar_extract %s\n", tarball_basename);
if ( input_tarball2_path )
{
char* porttix_tarball2_path =
print_string("%s/%s", porttix_path, tarball2_basename);
if ( fork_and_wait_or_death() )
{
const char* cmd_argv[] =
{
"cp",
"--",
input_tarball2_path,
porttix_tarball2_path,
NULL,
};
execvp(cmd_argv[0], (char* const*) cmd_argv);
err(127, "%s", cmd_argv[0]);
}
fprintf(porttixinfo_fp, "tar_extract %s\n", tarball2_basename);
}
// Create the normalization patch.
int normalized_fd = open(normalized_path, O_RDONLY | O_DIRECTORY);
if ( normalized_fd < 0 )