Skip to content
This repository was archived by the owner on Sep 17, 2023. It is now read-only.

Commit a9de18f

Browse files
authored
Merge pull request #105 from bitgopatmcl/pack-from-relative-dir
fix: use pack source instead of hardlink
2 parents 602826d + 4383106 commit a9de18f

File tree

3 files changed

+10
-19
lines changed

3 files changed

+10
-19
lines changed

src/make_depend.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::fs;
44
use std::path::PathBuf;
55

66
use askama::Template;
7+
use pathdiff::diff_paths;
78

89
use crate::configuration_file::ConfigurationFile;
910
use crate::lerna_manifest::LernaManifest;
@@ -18,7 +19,6 @@ struct MakefileTemplate<'a> {
1819
package_directory: &'a str,
1920
scoped_package_name: &'a str,
2021
unscoped_package_name: &'a str,
21-
pack_archive_filename: &'a str,
2222
internal_dependency_package_json_filenames_inclusive: &'a Vec<String>,
2323
create_pack_target: &'a bool,
2424
npm_pack_archive_dependencies: &'a HashMap<String, String>,
@@ -47,17 +47,19 @@ pub fn make_dependency_makefile(opts: crate::opts::MakeDepend) -> Result<(), Box
4747
let npm_pack_archive_dependencies = &internal_dependencies_exclusive
4848
.iter()
4949
.map(|dependency| {
50-
let target = package_manifest
50+
let target_directory = package_manifest
5151
.directory()
52-
.join(".internal-npm-dependencies")
52+
.join(".internal-npm-dependencies");
53+
let target = target_directory
5354
.join(dependency.npm_pack_file_basename())
5455
.to_str()
5556
.expect("npm pack filename is not UTF-8 encodable")
5657
.to_owned();
57-
let source = dependency
58-
.npm_pack_filename()
58+
let source_package_directory = dependency.directory();
59+
let source = diff_paths(source_package_directory, target_directory)
60+
.expect("no relative path to source package")
5961
.to_str()
60-
.expect("npm pack filename is not UTF-8 encodable")
62+
.expect("source package path is not UTF-8 encodable")
6163
.to_owned();
6264
(target, source)
6365
})
@@ -79,10 +81,6 @@ pub fn make_dependency_makefile(opts: crate::opts::MakeDepend) -> Result<(), Box
7981
.expect("Package directory is not UTF-8 encodable"),
8082
scoped_package_name: &package_manifest.contents.name,
8183
unscoped_package_name: package_manifest.unscoped_package_name(),
82-
pack_archive_filename: package_manifest
83-
.npm_pack_filename()
84-
.to_str()
85-
.expect("npm pack filename is not UTF-8 encodable"),
8684
internal_dependency_package_json_filenames_inclusive:
8785
&internal_dependency_package_json_filenames_inclusive
8886
.iter()

src/package_manifest.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,6 @@ impl PackageManifest {
181181
)
182182
}
183183

184-
pub fn npm_pack_filename(&self) -> PathBuf {
185-
self.directory().join(&self.npm_pack_file_basename())
186-
}
187-
188184
pub fn unscoped_package_name(&self) -> &str {
189185
match &self.contents.name.rsplit_once("/") {
190186
Some((_scope, name)) => name,

templates/makefile

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,15 @@ $({{ unscoped_package_name.replace("-", "_").to_uppercase() }}_INTERNAL_DEPENDEN
2727
# a .PHONY target and let the compiler's built-in logic determine whether or not to
2828
# re-compile its input sources. Since we don't have the list of sources available here,
2929
# let's invoke pack only when the file does not exist.
30-
{{ pack_archive_filename }}:
31-
cd {{ package_directory }}; npm pack --force
3230

3331
{{ unscoped_package_name.replace("-", "_").to_uppercase() }}_INTERNAL_NPM_DEPENDENCIES_EXCLUSIVE = {{ internal_npm_dependencies_exclusive.join(" \\\n") }}
3432

3533
{{ package_directory }}/.internal-npm-dependencies:
3634
mkdir $@
3735

3836
{% for (target, source) in npm_pack_archive_dependencies.iter() %}
39-
{{ target }}: {{ source }} | {{ package_directory }}/.internal-npm-dependencies
40-
rm -f $@
41-
ln $< $@
37+
{{ target }}: | {{ package_directory }}/.internal-npm-dependencies
38+
cd {{ package_directory }}/.internal-npm-dependencies; npm pack {{ source }}
4239
{% endfor %}
4340

4441
.PHONY: {{ unscoped_package_name }}-docker-dependencies

0 commit comments

Comments
 (0)