diff --git a/am-utils-6.2-allow-autoconf-2.72.patch b/am-utils-6.2-allow-autoconf-2.72.patch new file mode 100644 index 0000000..ff2d70d --- /dev/null +++ b/am-utils-6.2-allow-autoconf-2.72.patch @@ -0,0 +1,28 @@ +am-utils-6.2 - allow autoconf 2.72 + +From: Ian Kent + +am-utils creates configure at build time and requires versions of autoconf +that are known to work ok. + +Allow autoconf version 2.72 to get a build. + +Signed-off-by: Ian Kent +--- + bootstrap | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bootstrap b/bootstrap +index d454c63..55b2084 100755 +--- a/bootstrap ++++ b/bootstrap +@@ -10,7 +10,8 @@ validateversion() { + case "$v" in + *2.69) ;; + *2.71) ;; +- *) echo "am-utils requires autoconf 2.69 or 2.71, you have:" ++ *2.72) ;; ++ *) echo "am-utils requires autoconf 2.69, 2.71 or 2.72, you have:" + echo " $v" + exit 1;; + esac diff --git a/am-utils-6.2-dont-include-linux_mount_h.patch b/am-utils-6.2-dont-include-linux_mount_h.patch new file mode 100644 index 0000000..2f8aaf5 --- /dev/null +++ b/am-utils-6.2-dont-include-linux_mount_h.patch @@ -0,0 +1,35 @@ +am-utils-6.2 - dont include linux/mount.h + +From: Ian Kent + +Updates to glibc to add support for fsconfig() et. al. have introduced +conflicts between sys/mount.h and the corresponding kernel header +linux/mount.h. + +But sys/mount.h and linux/mount.h provide very close to the same +definitions except that sys/mount.h has some additional function +declarations. + +So add a macro define to the amd include file to stop its inclusion +of linux/mount.h when including linux/fs.h so that sys/mount.h is +used instead. + +Signed-off-by: Ian Kent +--- + include/mount_headers1.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/mount_headers1.h b/include/mount_headers1.h +index 7d518a06..af9a90ee 100644 +--- a/include/mount_headers1.h ++++ b/include/mount_headers1.h +@@ -160,6 +160,9 @@ + # endif /* HAVE_LINUX_LIST_H */ + # include + # else ++# ifdef HAVE_SYS_MOUNT_H ++# define _LINUX_MOUNT_H ++# endif /* HAVE_SYS_MOUNT_H */ + # include + # endif/* (!__GLIBC__ || __GLIBC__ < 2) */ + #endif /* HAVE_LINUX_FS_H */ diff --git a/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch b/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch new file mode 100644 index 0000000..3d7c268 --- /dev/null +++ b/am-utils-6.2-fix-SEGV-on-quick-reply-error.patch @@ -0,0 +1,33 @@ +am-utils-6.2 - fix SEGV on quick reply error + +From: Ian Kent + +Clearly a programming mistake on my part, odd it hasn't been seen +before ... + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index b88a40c8..c0ca0e42 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1293,6 +1293,8 @@ nfs_quick_reply3(am_node *mp, int error) + am_post_op_attr *post_op_obj; + int ret; + ++ post_op_dir = &result.res_u.ok.dir_attributes; ++ + if (error) { + /* + * Return the error that was passed to us. +@@ -1300,7 +1302,6 @@ nfs_quick_reply3(am_node *mp, int error) + post_op_dir->attributes_follow = 0; + result.status = nfs_error(error); + } else { +- post_op_dir = &result.res_u.ok.dir_attributes; + post_op_obj = &result.res_u.ok.obj_attributes; + am_fattr3 *fattr3; + nfsfattr *fattr; diff --git a/am-utils-6.2-fix-fedora-mock-build-fail.patch b/am-utils-6.2-fix-fedora-mock-build-fail.patch new file mode 100644 index 0000000..7fb2b0c --- /dev/null +++ b/am-utils-6.2-fix-fedora-mock-build-fail.patch @@ -0,0 +1,82 @@ +am-utils-6.2 - fix fedora mock build fail + +From: Ian Kent + +NFSv4 really needs to be used here but fedora mock builds don't seem +to be able to see the kernel modules. And when NFSv4 is a module, and +has not been used yet, the test fails. + +So use the existing hack to ensure NFSv4 is seen as supported for both +check_fs_mntent.m4 and check_mount_type.m4 in m4/macros. + +Signed-off-by: Ian Kent +--- + m4/macros/check_fs_mntent.m4 | 23 +++++++++++++---------- + m4/macros/check_mount_type.m4 | 18 ++++++++++++++++++ + 2 files changed, 31 insertions(+), 10 deletions(-) + +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index 45ac4974..de3d9a91 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -141,18 +141,21 @@ do + break + fi + +- if test "$ac_fs_tmp" = "nfs3" -a "$ac_cv_header_linux_nfs_mount_h" = "yes" ++ if test $ac_fs_tmp = "nfs3" -o $ac_fs_tmp = "nfs4" + then +- # hack hack hack +- # in 6.1, which has fallback to v2/udp, we might want +- # to always use version 4. +- # in 6.0 we do not have much choice +- # +- let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" +- if test $nfs_mount_version -ge 4 ++ if test "$ac_cv_header_linux_nfs_mount_h" = "yes" + then +- eval "ac_cv_fs_$ac_fs_name=yes" +- break ++ # hack hack hack ++ # in 6.1, which has fallback to v2/udp, we might want ++ # to always use version 4. ++ # in 6.0 we do not have much choice ++ # ++ let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" ++ if test $nfs_mount_version -ge 4 ++ then ++ eval "ac_cv_fs_$ac_fs_name=yes" ++ break ++ fi + fi + fi + +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index 88f85323..69354221 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -155,6 +155,24 @@ do + break + fi + ++ if test $ac_fs_tmp = "nfs4" ++ then ++ if test "$ac_cv_header_linux_nfs_mount_h" = "yes" ++ then ++ # hack hack hack ++ # in 6.1, which has fallback to v2/udp, we might want ++ # to always use version 4. ++ # in 6.0 we do not have much choice ++ # ++ let nfs_mount_version="`grep NFS_MOUNT_VERSION /usr/include/linux/nfs_mount.h | awk '{print $''3;}'`" ++ if test $nfs_mount_version -ge 4 ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ break ++ fi ++ fi ++ fi ++ + # run a test program for bsdi3 + AC_RUN_IFELSE( + [AC_LANG_SOURCE( diff --git a/am-utils-6.2-fix-fsmount-naming-conflict.patch b/am-utils-6.2-fix-fsmount-naming-conflict.patch new file mode 100644 index 0000000..30de666 --- /dev/null +++ b/am-utils-6.2-fix-fsmount-naming-conflict.patch @@ -0,0 +1,307 @@ +am-utils-6.2 - fix fsmount naming conflict + +From: Ian Kent + +The mount API's new fsmount() system call conflicts with am-utils +struct fsmount so rename it and realted program variables from +fsmount to fs_mount. + +Signed-off-by: Ian Kent +--- + fsinfo/fsi_analyze.c | 14 +++++++------- + fsinfo/fsi_data.h | 6 +++--- + fsinfo/fsi_gram.y | 16 ++++++++-------- + fsinfo/fsi_util.c | 10 +++++----- + fsinfo/fsinfo.h | 4 ++-- + fsinfo/wr_bparam.c | 2 +- + fsinfo/wr_fstab.c | 26 +++++++++++++------------- + 7 files changed, 39 insertions(+), 39 deletions(-) + +diff --git a/fsinfo/fsi_analyze.c b/fsinfo/fsi_analyze.c +index 78598b85..0b92cfd7 100644 +--- a/fsinfo/fsi_analyze.c ++++ b/fsinfo/fsi_analyze.c +@@ -404,7 +404,7 @@ fixup_required_disk_info(disk_fs *dp) + + + static void +-fixup_required_mount_info(fsmount *fp, dict_ent *de) ++fixup_required_mount_info(fs_mount *fp, dict_ent *de) + { + if (!ISSET(fp->f_mask, FM_FROM)) { + if (de->de_count != 1) { +@@ -417,24 +417,24 @@ fixup_required_mount_info(fsmount *fp, dict_ent *de) + if (!mp) + abort(); + fp->f_ref = mp; +- set_fsmount(fp, FM_FROM, mp->m_dk->d_host->h_hostname); ++ set_fs_mount(fp, FM_FROM, mp->m_dk->d_host->h_hostname); + fsi_log("set: %s comes from %s", fp->f_volname, fp->f_from); + } + } + + if (!ISSET(fp->f_mask, FM_FSTYPE)) { +- set_fsmount(fp, FM_FSTYPE, xstrdup("nfs")); ++ set_fs_mount(fp, FM_FSTYPE, xstrdup("nfs")); + fsi_log("set: fstype is %s", fp->f_fstype); + } + + if (!ISSET(fp->f_mask, FM_OPTS)) { +- set_fsmount(fp, FM_OPTS, xstrdup("rw,nosuid,grpid,defaults")); ++ set_fs_mount(fp, FM_OPTS, xstrdup("rw,nosuid,grpid,defaults")); + fsi_log("set: opts are %s", fp->f_opts); + } + + if (!ISSET(fp->f_mask, FM_LOCALNAME)) { + if (fp->f_ref) { +- set_fsmount(fp, FM_LOCALNAME, xstrdup(fp->f_volname)); ++ set_fs_mount(fp, FM_LOCALNAME, xstrdup(fp->f_volname)); + fsi_log("set: localname is %s", fp->f_localname); + } else { + lerror(fp->f_ioloc, "cannot determine localname since volname %s is not uniquely defined", fp->f_volname); +@@ -476,10 +476,10 @@ static void + analyze_mounts(host *hp) + { + qelem *q = hp->h_mount; +- fsmount *fp; ++ fs_mount *fp; + int netbootp = 0; + +- ITER(fp, fsmount, q) { ++ ITER(fp, fs_mount, q) { + char *p; + char *nn = xstrdup(fp->f_volname); + int req; +diff --git a/fsinfo/fsi_data.h b/fsinfo/fsi_data.h +index 4cc341d8..3a190626 100644 +--- a/fsinfo/fsi_data.h ++++ b/fsinfo/fsi_data.h +@@ -47,7 +47,7 @@ typedef struct dict_data dict_data; + typedef struct dict_ent dict_ent; + typedef struct disk_fs disk_fs; + typedef struct ether_if ether_if; +-typedef struct fsmount fsmount; ++typedef struct fs_mount fs_mount; + typedef struct host host; + typedef struct ioloc ioloc; + typedef struct fsi_mount fsi_mount; +@@ -85,7 +85,7 @@ struct host { + qelem q; + int h_mask; + ioloc *h_ioloc; +- fsmount *h_netroot, *h_netswap; ++ fs_mount *h_netroot, *h_netswap; + #define HF_HOST 0 + char *h_hostname; /* The full name of the host */ + char *h_lochost; /* The name of the host with local domains stripped */ +@@ -181,7 +181,7 @@ struct fsi_mount { + * disk_fs_strings in analyze.c will + * need updating. + */ +-struct fsmount { ++struct fs_mount { + qelem f_q; + fsi_mount *f_ref; + ioloc *f_ioloc; +diff --git a/fsinfo/fsi_gram.y b/fsinfo/fsi_gram.y +index 85d19aa5..17d32401 100644 +--- a/fsinfo/fsi_gram.y ++++ b/fsinfo/fsi_gram.y +@@ -56,7 +56,7 @@ extern qelem *list_of_hosts, *list_of_automounts; + qelem *q; + char *s; + fsi_mount *m; +- fsmount *f; ++ fs_mount *f; + } + + %token tARCH +@@ -372,7 +372,7 @@ list_of_mounts : + { $$ = 0; } + + | list_of_mounts tMOUNT tSTR localinfo_list +- { set_fsmount($4, FM_VOLNAME, $3); ++ { set_fs_mount($4, FM_VOLNAME, $3); + if ($1) + $$ = $1; + else +@@ -392,22 +392,22 @@ list_of_mounts : + */ + localinfo_list : + /* empty */ +- { $$ = new_fsmount(); } ++ { $$ = new_fs_mount(); } + + | localinfo_list tDIRECT +- { $$ = $1; set_fsmount($$, FM_DIRECT, ""); } ++ { $$ = $1; set_fs_mount($$, FM_DIRECT, ""); } + + | localinfo_list tAS tSTR +- { $$ = $1; set_fsmount($$, FM_LOCALNAME, $3); } ++ { $$ = $1; set_fs_mount($$, FM_LOCALNAME, $3); } + + | localinfo_list tFROM tSTR +- { $$ = $1; set_fsmount($$, FM_FROM, $3); } ++ { $$ = $1; set_fs_mount($$, FM_FROM, $3); } + + | localinfo_list tFSTYPE tSTR +- { $$ = $1; set_fsmount($$, FM_FSTYPE, $3); } ++ { $$ = $1; set_fs_mount($$, FM_FSTYPE, $3); } + + | localinfo_list tOPTS tSTR +- { $$ = $1; set_fsmount($$, FM_OPTS, $3); } ++ { $$ = $1; set_fs_mount($$, FM_OPTS, $3); } + + | localinfo_list error '=' tSTR + { yyerror("unknown mount attribute"); } +diff --git a/fsinfo/fsi_util.c b/fsinfo/fsi_util.c +index f8ff313c..d53ff0df 100644 +--- a/fsinfo/fsi_util.c ++++ b/fsinfo/fsi_util.c +@@ -581,7 +581,7 @@ new_mount(void) + + + void +-set_fsmount(fsmount *fp, int k, char *v) ++set_fs_mount(fs_mount *fp, int k, char *v) + { + int m = 1 << k; + +@@ -623,13 +623,13 @@ set_fsmount(fsmount *fp, int k, char *v) + } + + +-fsmount * +-new_fsmount(void) ++fs_mount * ++new_fs_mount(void) + { +- fsmount *fp = CALLOC(struct fsmount); ++ fs_mount *fp = CALLOC(struct fs_mount); + + fp->f_ioloc = current_location(); +- show_new("fsmount"); ++ show_new("fs_mount"); + return fp; + } + +diff --git a/fsinfo/fsinfo.h b/fsinfo/fsinfo.h +index 7a871631..896f8bec 100644 +--- a/fsinfo/fsinfo.h ++++ b/fsinfo/fsinfo.h +@@ -63,7 +63,7 @@ extern dict *new_dict(void); + extern dict_ent *dict_locate(dict *, char *); + extern disk_fs *new_disk_fs(void); + extern ether_if *new_ether_if(void); +-extern fsmount *new_fsmount(void); ++extern fs_mount *new_fs_mount(void); + extern host *new_host(void); + extern int dict_iter(dict *, int (*)(qelem *)); + extern int errors; +@@ -94,7 +94,7 @@ extern void lwarning(ioloc *l, char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); + extern void rem_que(qelem *); + extern void set_disk_fs(disk_fs *, int, char *); +-extern void set_fsmount(fsmount *, int, char *); ++extern void set_fs_mount(fs_mount *, int, char *); + extern void set_mount(fsi_mount *, int, char *); + extern void show_area_being_processed(char *area, int n); + extern void show_new(char *msg); +diff --git a/fsinfo/wr_bparam.c b/fsinfo/wr_bparam.c +index 00befa9c..b318d5d3 100644 +--- a/fsinfo/wr_bparam.c ++++ b/fsinfo/wr_bparam.c +@@ -49,7 +49,7 @@ + * Write a host/path in NFS format + */ + static int +-write_nfsname(FILE *ef, fsmount *fp, char *hn) ++write_nfsname(FILE *ef, fs_mount *fp, char *hn) + { + int errors = 0; + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); +diff --git a/fsinfo/wr_fstab.c b/fsinfo/wr_fstab.c +index 166353eb..4daf161d 100644 +--- a/fsinfo/wr_fstab.c ++++ b/fsinfo/wr_fstab.c +@@ -48,22 +48,22 @@ + + /* forward definitions */ + static void write_aix1_dkfstab(FILE *ef, disk_fs *dp); +-static void write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_aix1_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static void write_aix3_dkfstab(FILE *ef, disk_fs *dp); +-static void write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_aix3_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static int write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *)); +-static int write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *)); ++static int write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fs_mount *)); + static void write_generic_dkfstab(FILE *ef, disk_fs *dp); +-static void write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_generic_dkrmount(FILE *ef, char *hn, fs_mount *fp); + static void write_ultrix_dkfstab(FILE *ef, disk_fs *dp); +-static void write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp); ++static void write_ultrix_dkrmount(FILE *ef, char *hn, fs_mount *fp); + + /* ----------------------------------------------- */ + + static struct os_fstab_type { + char *os_name; + void (*op_fstab) (FILE *ef, disk_fs *dp); +- void (*op_mount) (FILE *ef, char *hn, fsmount *fp); ++ void (*op_mount) (FILE *ef, char *hn, fs_mount *fp); + } os_tabs[] = { + + { +@@ -117,7 +117,7 @@ write_aix1_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_aix1_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + char *hp = xstrdup(h); +@@ -166,7 +166,7 @@ write_aix3_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_aix3_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + +@@ -200,7 +200,7 @@ write_ultrix_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_ultrix_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname); + +@@ -234,7 +234,7 @@ write_generic_dkfstab(FILE *ef, disk_fs *dp) + + + static void +-write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp) ++write_generic_dkrmount(FILE *ef, char *hn, fs_mount *fp) + { + char *h; + +@@ -291,12 +291,12 @@ write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *)) + + + static int +-write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *)) ++write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fs_mount *)) + { + int errors = 0; +- fsmount *fp; ++ fs_mount *fp; + +- ITER(fp, fsmount, q) ++ ITER(fp, fs_mount, q) + (*output) (ef, hn, fp); + + return errors; diff --git a/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch b/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch new file mode 100644 index 0000000..41c539c --- /dev/null +++ b/am-utils-6.2-fix-linux-nfs-kernel-module-search.patch @@ -0,0 +1,134 @@ +am-utils-6.2 - fix linux nfs kernel module search + +From: Ian Kent + +The configure macros AMU_CHECK_FS_MNTENT() and AMU_CHECK_MOUNT_TYPE() +haven't been updated for a log time. In particular kernel modules that +are xz compressed aren't considered. + +Also the containing subdirectory name isn't always the the same as +the module name and needs to be special cased. + +The cases I found have been fixed, there are probably more but this +is enough to get us started. + +Signed-off-by: Ian Kent +--- + amd/amfs_host.c | 1 + + configure.ac | 6 +++--- + m4/macros/check_fs_mntent.m4 | 17 +++++++++++++++-- + m4/macros/check_mount_type.m4 | 29 +++++++++++++++++++++++++---- + 4 files changed, 44 insertions(+), 9 deletions(-) + +diff --git a/amd/amfs_host.c b/amd/amfs_host.c +index a363c5cc..deaf69fa 100644 +--- a/amd/amfs_host.c ++++ b/amd/amfs_host.c +@@ -50,6 +50,7 @@ + #endif /* HAVE_CONFIG_H */ + #include + #include ++#include + + static char *amfs_host_match(am_opts *fo); + static int amfs_host_init(mntfs *mf); +diff --git a/configure.ac b/configure.ac +index ef4dab0e..408964d8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -808,8 +808,8 @@ dnl NFS related tests need to happen earlier: many things depend on them + AMU_STRUCT_FIELD_NFS_FH + AMU_STRUCT_NFS_FH + AMU_STRUCT_NFS_FH3 +-AMU_CHECK_FS_MNTENT(nfs3) +-AMU_CHECK_FS_MNTENT(nfs4) ++AMU_CHECK_FS_MNTENT(nfsv3 nfs3, nfs3) ++AMU_CHECK_FS_MNTENT(nfsv4 nfs4, nfs4) + dnl ====================================================================== + + dnl ----------------------------------------------------------------------- +@@ -1117,7 +1117,7 @@ dnl check for mount(2) type/name for filesystem (MNTTYPE_*, MOUNT_*) + AC_MSG_NOTICE(*** MOUNTING TYPES ***) + AMU_CHECK_MOUNT_TYPE(nfs) + AMU_CHECK_MOUNT_TYPE(nfs3) +-AMU_CHECK_MOUNT_TYPE(nfs4) ++AMU_CHECK_MOUNT_TYPE(nfsv4 nfs4, nfs4) + AMU_CHECK_MOUNT_TYPE(lustre) + AMU_CHECK_MOUNT_TYPE(ext4 ext3 ext2 ffs ufs 4.2 4.3 4.4 efs xfs jfs ultrix, ufs) + AMU_CHECK_MOUNT_TYPE(xfs) +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index e612b4ec..45ac4974 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -98,12 +98,25 @@ do + fi + + # look for a loadable filesystem module (linux 2.4+) +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.ko ++ ac_fs_subdir=$ac_fs_tmp ++ if test -n "$2" ++ then ++ if test "$ac_fs_tmp" = "nfsv3" -o "$ac_fs_tmp" = "nfsv4" ++ then ++ ac_fs_subdir="nfs" ++ fi ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko.xz ++ then ++ eval "ac_cv_fs_$ac_fs_name=yes" ++ break ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko + then + eval "ac_cv_fs_$ac_fs_name=yes" + break + fi +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.o ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.o + then + eval "ac_cv_fs_$ac_fs_name=yes" + break +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index c779e0bf..88f85323 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -104,14 +104,35 @@ do + fi + + # look for a loadable filesystem module (linux 2.4+) +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.ko ++ # special casing here assumes preferred option name will be ++ # first in the list. ++ ac_fs_option="$ac_fs_tmp" ++ ac_fs_subdir=$ac_fs_tmp ++ if test -n "$2" + then +- eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ if test "$ac_fs_tmp" = "nfsv3" -o "$ac_fs_tmp" = "nfsv4" ++ then ++ ac_fs_subdir="nfs" ++ ac_fs_option="$ac_fs_name" ++ fi ++ if test "$ac_fs_tmp" = "vfat" -o "$ac_fs_tmp" = "msdos" ++ then ++ ac_fs_subdir="fat" ++ fi ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko.xz ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" + break + fi +- if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_tmp/$ac_fs_tmp.o ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.ko + then +- eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" ++ break ++ fi ++ if test -f /lib/modules/$host_os_version/kernel/fs/$ac_fs_subdir/$ac_fs_tmp.o ++ then ++ eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_option\\\"" + break + fi + diff --git a/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch b/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch new file mode 100644 index 0000000..7aafc46 --- /dev/null +++ b/am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch @@ -0,0 +1,29 @@ +am-utils-6.2 - fix mountd version used when mount is nfs v4 + +From: Ian Kent + +If we are trying to mount the exports of a type host map entry and the +mounts are NFS v4 make sure mountd version 3 is used in the same way it +is used for NFS v3 mounts. + +Signed-off-by: Ian Kent +--- + amd/amfs_host.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/amd/amfs_host.c b/amd/amfs_host.c +index a3468ecd..a363c5cc 100644 +--- a/amd/amfs_host.c ++++ b/amd/amfs_host.c +@@ -346,8 +346,9 @@ amfs_host_mount(am_node *am, mntfs *mf) + host = mf->mf_server->fs_host; + sin = *mf->mf_server->fs_ip; + plog(XLOG_INFO, "amfs_host_mount: NFS version %d", (int) mf->mf_server->fs_version); +-#ifdef HAVE_FS_NFS3 +- if (mf->mf_server->fs_version == NFS_VERSION3) ++#if defined(HAVE_FS_NFS3) || defined(HAVE_FS_NFS4) ++ if (mf->mf_server->fs_version == NFS_VERSION3 || ++ mf->mf_server->fs_version == NFS_VERSION4) + mnt_version = AM_MOUNTVERS3; + else + #endif /* HAVE_FS_NFS3 */ diff --git a/am-utils-configure-c99.patch b/am-utils-configure-c99.patch new file mode 100644 index 0000000..f4f1a83 --- /dev/null +++ b/am-utils-configure-c99.patch @@ -0,0 +1,214 @@ +Fix various autoconf helper macros not to require support for implicit +ints and implicit function declarations in the compiler. These C +language features have been removed from C99, and future compilers +will not accept them by default. + +diff --git a/m4/macros/check_fs_mntent.m4 b/m4/macros/check_fs_mntent.m4 +index de3d9a918283bb1d..7800d3eff0f59e71 100644 +--- a/m4/macros/check_fs_mntent.m4 ++++ b/m4/macros/check_fs_mntent.m4 +@@ -165,15 +165,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_fs_$ac_fs_name=yes" + break +diff --git a/m4/macros/check_gnu_getopt.m4 b/m4/macros/check_gnu_getopt.m4 +index 6ac6440c47e8edd8..daa61cbaef3b09e9 100644 +--- a/m4/macros/check_gnu_getopt.m4 ++++ b/m4/macros/check_gnu_getopt.m4 +@@ -17,7 +17,7 @@ int main() + int isGNU = 0; + + rf = fopen("conftestresult", "w"); +- if (rf == NULL) exit(1); ++ if (rf == NULL) return 1; + + while ( (c = getopt(argc, argv, "x")) != -1 ) { + switch ( c ) { +@@ -25,11 +25,11 @@ int main() + isGNU=1; + break; + default: +- exit(1); ++ return 1; + } + } + fprintf(rf, isGNU ? "yes" : "no"); +- exit(0); ++ return 0; + } + ]])],[ + ac_cv_sys_gnu_getopt="`cat conftestresult`" +diff --git a/m4/macros/check_mnttab_type.m4 b/m4/macros/check_mnttab_type.m4 +index a840991e95e3ba81..398314910d80337a 100644 +--- a/m4/macros/check_mnttab_type.m4 ++++ b/m4/macros/check_mnttab_type.m4 +@@ -121,15 +121,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_mnttab_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break +diff --git a/m4/macros/check_mount_type.m4 b/m4/macros/check_mount_type.m4 +index 693542219f7aee90..1b0de6ccb0b7cafd 100644 +--- a/m4/macros/check_mount_type.m4 ++++ b/m4/macros/check_mount_type.m4 +@@ -179,15 +179,15 @@ do + [[ + #include + #include +-main() ++int main(void) + { + int i; + struct vfsconf vf; + i = getvfsbyname("$ac_fs_tmp", &vf); + if (i < 0) +- exit(1); ++ return 1; + else +- exit(0); ++ return 0; + } + ]])], [eval "ac_cv_mount_type_$ac_fs_name=\\\"$ac_fs_tmp\\\"" + break +diff --git a/m4/macros/check_varargs_macros.m4 b/m4/macros/check_varargs_macros.m4 +index 93c26ffced82fdcc..1dbd4fb59e3d1c88 100644 +--- a/m4/macros/check_varargs_macros.m4 ++++ b/m4/macros/check_varargs_macros.m4 +@@ -9,6 +9,7 @@ ac_cv_varargs_macros, + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ ++void bar(const char *, ...); + #define foo(str,size,fmt,...) bar(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__) + ]], + [[ +@@ -20,6 +21,7 @@ foo(a, sizeof(a), "%d,%d", 1, 2); + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ ++void bar(const char *, ...); + #define foo(str,size,args...) bar(__FILE__,__LINE__,(str),(size),(fmt),args) + ]], + [[ +diff --git a/m4/macros/expand_cpp_hex.m4 b/m4/macros/expand_cpp_hex.m4 +index 13c7c832b0d764fb..7b915d0431b8f688 100644 +--- a/m4/macros/expand_cpp_hex.m4 ++++ b/m4/macros/expand_cpp_hex.m4 +@@ -14,17 +14,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("0x%x", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_cpp_int.m4 b/m4/macros/expand_cpp_int.m4 +index e58649e83013265e..798e7fd7590f4ca7 100644 +--- a/m4/macros/expand_cpp_int.m4 ++++ b/m4/macros/expand_cpp_int.m4 +@@ -16,17 +16,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("%d", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_cpp_string.m4 b/m4/macros/expand_cpp_string.m4 +index e014b7e4fc9d8030..256ddee09303fde4 100644 +--- a/m4/macros/expand_cpp_string.m4 ++++ b/m4/macros/expand_cpp_string.m4 +@@ -14,17 +14,16 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + [$1] +-main(argc) +-int argc; ++int main(int argc) + { + #ifdef $2 + if (argc > 1) + printf("%s", $2); +-exit(0); ++return 0; + #else + # error no such option $2 + #endif +-exit(1); ++return 1; + }]])], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound") + , + value="notfound" +diff --git a/m4/macros/expand_run_string.m4 b/m4/macros/expand_run_string.m4 +index f9390020aa934c3e..c8c350f533f80a82 100644 +--- a/m4/macros/expand_run_string.m4 ++++ b/m4/macros/expand_run_string.m4 +@@ -8,11 +8,10 @@ AC_RUN_IFELSE( + [AC_LANG_SOURCE( + [[ + $1 +-main(argc) +-int argc; ++int main(int argc) + { + $2 +-exit(0); ++return 0; + }]])], + [ + value=`./conftest dummy 2>>config.log` diff --git a/am-utils.conf b/am-utils.conf index 388e673..ef3d7cb 100644 --- a/am-utils.conf +++ b/am-utils.conf @@ -28,6 +28,10 @@ fully_qualified_hosts = no cache_duration = 300 # Fedora doesn't support NFSv2, use the amd NFSv3 server. auto_nfs_version = 3 +# The latest Fedora kernel builds disable UDP so unless a custom build +# is done the internal amd automount server must use the autofs protocol +# not the NFS protocol. +mount_type = autofs # DEFINE AN AMD MOUNT POINT [ /net ] diff --git a/am-utils.spec b/am-utils.spec index 578d2a0..7f08678 100644 --- a/am-utils.spec +++ b/am-utils.spec @@ -2,8 +2,9 @@ Summary: Automount utilities including an updated version of Amd Name: am-utils Version: 6.2.0 %define upstream_version 6.2 -Release: 46%{?dist} -License: BSD +Release: 62%{?dist} +# Automatically converted from old format: BSD - review is highly recommended. +License: LicenseRef-Callaway-BSD Epoch: 5 URL: http://am-utils.org # Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git @@ -26,7 +27,7 @@ BuildRequires: gcc BuildRequires: m4 BuildRequires: libtirpc-devel BuildRequires: kernel-headers -BuildRequires: libnsl2-devel +#BuildRequires: libnsl2-devel BuildRequires: rpcsvc-proto-devel BuildRequires: make @@ -35,7 +36,7 @@ Requires: grep Requires: gawk Requires: findutils Requires: libtirpc -Requires: libnsl2 +#Requires: libnsl2 Requires(pre): /usr/bin/grep Requires(post): systemd-sysv @@ -94,6 +95,17 @@ Patch41: am-utils-6.2-convert-AC_TRY_RUN-to-AC_RUN_IFELSE.patch Patch42: am-utils-6.2-update-configure_ac.patch Patch43: am-utils-6.2-dont-prevent-building-with-autoconf-2_71.patch +Patch44: am-utils-6.2-fix-fsmount-naming-conflict.patch +Patch45: am-utils-6.2-fix-SEGV-on-quick-reply-error.patch +Patch46: am-utils-6.2-fix-mountd-version-used-when-mount-is-nfs-v4.patch + +Patch47: am-utils-6.2-fix-linux-nfs-kernel-module-search.patch +Patch48: am-utils-6.2-dont-include-linux_mount_h.patch +Patch49: am-utils-6.2-fix-fedora-mock-build-fail.patch +Patch50: am-utils-configure-c99.patch + +Patch51: am-utils-6.2-allow-autoconf-2.72.patch + # Not needed since autoreconf/libtool appear to do this automatically # Leaving it set doesn't appear to be a problem so leave it set in # case this changes. @@ -121,49 +133,60 @@ mounting and unmounting filesystems. %prep %setup -q -n %{name}-%{upstream_version} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 +%patch -P 7 -p1 +%patch -P 8 -p1 +%patch -P 9 -p1 +%patch -P 10 -p1 +%patch -P 11 -p1 +%patch -P 12 -p1 +%patch -P 13 -p1 +%patch -P 14 -p1 +%patch -P 15 -p1 +%patch -P 16 -p1 +%patch -P 17 -p1 +%patch -P 18 -p1 +%patch -P 19 -p1 +%patch -P 20 -p1 +%patch -P 21 -p1 +%patch -P 22 -p1 +%patch -P 23 -p1 +%patch -P 24 -p1 +%patch -P 25 -p1 +%patch -P 26 -p1 +%patch -P 27 -p1 +%patch -P 28 -p1 +%patch -P 29 -p1 +%patch -P 30 -p1 +%patch -P 31 -p1 +%patch -P 32 -p1 +%patch -P 33 -p1 +%patch -P 34 -p1 +%patch -P 35 -p1 +%patch -P 36 -p1 +%patch -P 37 -p1 +%patch -P 38 -p1 +%patch -P 39 -p1 +%patch -P 40 -p1 +%patch -P 41 -p1 +%patch -P 42 -p1 +%patch -P 43 -p1 + +%patch -P 44 -p1 +%patch -P 45 -p1 +%patch -P 46 -p1 + +%patch -P 47 -p1 +%patch -P 48 -p1 +%patch -P 49 -p1 +%patch -P 50 -p1 + +%patch -P 51 -p1 ./bootstrap @@ -175,9 +198,7 @@ chmod +x find-requires %configure \ --enable-shared \ --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ - --enable-cppflags="-I%{_includedir}/nsl" \ - --enable-ldflags="-L%{_libdir}/nsl" \ - --enable-libs="-lnsl -lresolv" \ + --enable-libs="-lresolv" \ --without-hesiod \ --enable-debug @@ -267,6 +288,61 @@ fi %{_libdir}/libamu.so* %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 5:6.2.0-62 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 5:6.2.0-61 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 5:6.2.0-60 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Aug 28 2024 Miroslav Suchý - 5:6.2.0-59 +- convert license to SPDX + +* Tue Jul 30 2024 Ian Kent - 5:6.2.0-58 +- allow autoconf 2.72. +- remove BuildRequires (and Requires) libnsl2. +- also remove references to libnsl in configure invocation. + +* Wed Jul 17 2024 Fedora Release Engineering - 5:6.2.0-57 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 5:6.2.0-56 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 5:6.2.0-55 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 5:6.2.0-54 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Feb 16 2023 Florian Weimer - 5:6.2.0-53 +- Port configure script to C99 (#2170414) + +* Wed Jan 18 2023 Fedora Release Engineering - 5:6.2.0-52 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 +- remove BuildRequires: kernel-modules for s390x. +- add hack to ensure NFSv4 is seen as supported on s390x. + +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-50 +- add BuildRequires: kernel-modules for s390x. + +* Mon Aug 15 2022 Ian Kent - 5:6.2.0-49 +- fix linux nfs kernel module search. +- dont include linux/mount.h. + +* Thu Aug 04 2022 Ian Kent - 5:6.2.0-48 +- fix fsmount naming conflict. +- fix SEGV on quick reply error. +- fix mountd version used when mount is nfs v4. +- set mount_type = autofs in default installed configuration. + +* Wed Jul 20 2022 Fedora Release Engineering - 5:6.2.0-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Wed Jan 19 2022 Fedora Release Engineering - 5:6.2.0-46 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild