@@ -35,7 +35,8 @@ func writeTemplates(dir, gopkg, debsrc, debLib, debProg, debversion string,
3535 return err
3636 }
3737
38- if err := writeDebianWatch (dir , gopkg , debsrc , u .hasRelease ); err != nil {
38+ var repack bool = len (u .vendorDirs ) > 0 || u .hasGodeps
39+ if err := writeDebianWatch (dir , gopkg , debsrc , u .hasRelease , repack ); err != nil {
3940 return err
4041 }
4142
@@ -295,7 +296,7 @@ func writeDebianGbpConf(dir string, dep14, pristineTar bool) error {
295296 return nil
296297}
297298
298- func writeDebianWatch (dir , gopkg , debsrc string , hasRelease bool ) error {
299+ func writeDebianWatch (dir , gopkg , debsrc string , hasRelease bool , repack bool ) error {
299300 // TODO: Support other hosters too
300301 host := "github.com"
301302
@@ -314,16 +315,29 @@ func writeDebianWatch(dir, gopkg, debsrc string, hasRelease bool) error {
314315 }
315316 defer f .Close ()
316317
318+ filenamemanglePattern := `s%%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%%%s-$1.tar.gz%%`
319+ uversionmanglePattern := `s/(\d)[_\.\-\+]?(RC|rc|pre|dev|beta|alpha)[.]?(\d*)$/\$1~\$2\$3/`
320+
317321 if hasRelease {
318322 log .Printf ("Setting debian/watch to track release tarball" )
319323 fmt .Fprintf (f , "version=4\n " )
320- fmt .Fprintf (f , `opts="filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/%s-\$1\.tar\.gz/, \` + "\n " , debsrc )
321- fmt .Fprintf (f , ` uversionmangle=s/(\d)[_\.\-\+]?(RC|rc|pre|dev|beta|alpha)[.]?(\d*)$/\$1~\$2\$3/" \` + "\n " )
324+ fmt .Fprintf (f , `opts="filenamemangle=` + filenamemanglePattern + `,\` + "\n " , debsrc )
325+ fmt .Fprintf (f , ` uversionmangle=` + uversionmanglePattern )
326+ if repack {
327+ fmt .Fprintf (f , `,\` + "\n " )
328+ fmt .Fprintf (f , ` dversionmangle=s/\+ds\d*$//,repacksuffix=+ds1` )
329+ }
330+ fmt .Fprintf (f , `" \` + "\n " )
322331 fmt .Fprintf (f , ` https://%s/%s/%s/tags .*/v?(\d\S*)\.tar\.gz debian` + "\n " , host , owner , repo )
323332 } else {
324333 log .Printf ("Setting debian/watch to track git HEAD" )
325334 fmt .Fprintf (f , "version=4\n " )
326- fmt .Fprintf (f , `opts="mode=git, pgpmode=none" \` + "\n " )
335+ fmt .Fprintf (f , `opts="mode=git, pgpmode=none` )
336+ if repack {
337+ fmt .Fprintf (f , `,\` + "\n " )
338+ fmt .Fprintf (f , ` dversionmangle=s/\+ds\d*$//,repacksuffix=+ds1` )
339+ }
340+ fmt .Fprintf (f , `" \` + "\n " )
327341 fmt .Fprintf (f , ` https://%s/%s/%s.git \` + "\n " , host , owner , repo )
328342 fmt .Fprintf (f , " HEAD debian\n " )
329343
@@ -332,8 +346,13 @@ func writeDebianWatch(dir, gopkg, debsrc string, hasRelease bool) error {
332346 fmt .Fprintf (f , "# Use the following when upstream starts to tag releases:\n " )
333347 fmt .Fprintf (f , "#\n " )
334348 fmt .Fprintf (f , "#version=4\n " )
335- fmt .Fprintf (f , `#opts="filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/%s-\$1\.tar\.gz/, \` + "\n " , debsrc )
336- fmt .Fprintf (f , `# uversionmangle=s/(\d)[_\.\-\+]?(RC|rc|pre|dev|beta|alpha)[.]?(\d*)$/\$1~\$2\$3/" \` + "\n " )
349+ fmt .Fprintf (f , `#opts="filenamemangle=` + filenamemanglePattern + `,\` + "\n " , debsrc )
350+ fmt .Fprintf (f , `# uversionmangle=` + uversionmanglePattern )
351+ if repack {
352+ fmt .Fprintf (f , `,\` + "\n " )
353+ fmt .Fprintf (f , `# dversionmangle=s/\+ds\d*$//,repacksuffix=+ds1` )
354+ }
355+ fmt .Fprintf (f , `" \` + "\n " )
337356 fmt .Fprintf (f , `# https://%s/%s/%s/tags .*/v?(\d\S*)\.tar\.gz debian` + "\n " , host , owner , repo )
338357 }
339358
0 commit comments