Skip to content

Commit e3b02db

Browse files
committed
add umask support and use 022 in RB mode
1 parent 53f6d2a commit e3b02db

File tree

6 files changed

+70
-2
lines changed

6 files changed

+70
-2
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111

1212
<artifactId>plexus-archiver</artifactId>
13-
<version>4.6.4-SNAPSHOT</version>
13+
<version>4.7.0-SNAPSHOT</version>
1414
<name>Plexus Archiver Component</name>
1515

1616
<scm>

src/main/java/org/codehaus/plexus/archiver/AbstractArchiver.java

+23-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ protected Logger getLogger()
8989

9090
private int defaultDirectoryMode = -1; // Optionally used if a value is needed
9191

92+
private int umask = -1;
93+
9294
private boolean forced = true;
9395

9496
private List<ArchiveFinalizer> finalizers;
@@ -440,14 +442,19 @@ private ArchiveEntry updateArchiveEntryAttributes( ArchiveEntry entry )
440442
}
441443

442444
protected ArchiveEntry asArchiveEntry( @Nonnull final PlexusIoResource resource, final String destFileName,
443-
final int permissions, PlexusIoResourceCollection collection )
445+
int permissions, PlexusIoResourceCollection collection )
444446
throws ArchiverException
445447
{
446448
if ( !resource.isExisting() )
447449
{
448450
throw new ArchiverException( resource.getName() + " not found." );
449451
}
450452

453+
if ( umask > 0 )
454+
{
455+
permissions &= ~umask;
456+
}
457+
451458
ArchiveEntry entry;
452459
if ( resource.isFile() )
453460
{
@@ -1264,6 +1271,18 @@ public String getOverrideGroupName()
12641271
return overrideGroupName;
12651272
}
12661273

1274+
@Override
1275+
public void setUmask( int umask )
1276+
{
1277+
this.umask = umask;
1278+
}
1279+
1280+
@Override
1281+
public int getUmask()
1282+
{
1283+
return umask;
1284+
}
1285+
12671286
/**
12681287
* @deprecated Use {@link #configureReproducibleBuild(FileTime)} instead.
12691288
*/
@@ -1288,6 +1307,9 @@ public void configureReproducibleBuild( FileTime lastModifiedTime )
12881307
setOverrideUserName( "root" ); // is it possible to avoid this, like "tar --numeric-owner"?
12891308
setOverrideGid( 0 );
12901309
setOverrideGroupName( "root" );
1310+
1311+
// 4. set umask to 022 to avoid environment umask value particularly on group write
1312+
setUmask( 0_022 );
12911313
}
12921314

12931315
/**

src/main/java/org/codehaus/plexus/archiver/Archiver.java

+10
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,16 @@ ResourceIterator getResources()
470470
*/
471471
String getOverrideGroupName();
472472

473+
/**
474+
* @since 4.7.0
475+
*/
476+
void setUmask( int umask );
477+
478+
/**
479+
* @since 4.7.0
480+
*/
481+
int getUmask();
482+
473483
/**
474484
* This method is obsolete and will just call {@link #configureReproducibleBuild(FileTime)}
475485
* with the Date transformed into FileTime.

src/main/java/org/codehaus/plexus/archiver/diags/DelgatingArchiver.java

+12
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,18 @@ public String getOverrideGroupName()
420420
return target.getOverrideGroupName();
421421
}
422422

423+
@Override
424+
public void setUmask( int umask )
425+
{
426+
target.setUmask( umask );
427+
}
428+
429+
@Override
430+
public int getUmask()
431+
{
432+
return target.getUmask();
433+
}
434+
423435
/**
424436
* @deprecated Use {@link #configureReproducibleBuild(FileTime)} instead.
425437
*/

src/main/java/org/codehaus/plexus/archiver/diags/NoOpArchiver.java

+12
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,18 @@ public String getOverrideGroupName()
435435
return null;
436436
}
437437

438+
@Override
439+
public void setUmask( int umask )
440+
{
441+
442+
}
443+
444+
@Override
445+
public int getUmask()
446+
{
447+
return 0;
448+
}
449+
438450
/**
439451
* @deprecated Use {@link #configureReproducibleBuild(FileTime)} instead.
440452
*/

src/main/java/org/codehaus/plexus/archiver/diags/TrackingArchiver.java

+12
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,18 @@ public String getOverrideGroupName()
496496
return null;
497497
}
498498

499+
500+
@Override
501+
public void setUmask( int umask )
502+
{
503+
}
504+
505+
@Override
506+
public int getUmask()
507+
{
508+
return 0;
509+
}
510+
499511
/**
500512
* @deprecated Use {@link #configureReproducibleBuild(FileTime)} instead.
501513
*/

0 commit comments

Comments
 (0)