#12935 Scripts Directory Restructuring Research - Build & Release Processes (Part 2/2)
Closed: Fixed by jnsamyak. Opened by jnsamyak.

Objective

Research and categorize scripts related to package management, quality assurance, sync operations, and infrastructure for the upcoming scripts directory restructuring initiative.

Scope - Scripts to Research

Your assigned scripts (approximately 37 items):

Root Level Scripts:

  • block_retired.py, check_epel_deps.py, check_epel_deps.sh, check-latest-build.py, check-testing-pre-GA.py, check-upgrade-paths.py
  • clean-amis.py, clean-overrides.py, close-old-ftbfs-bugz.sh, critpath.py, distgit-branch-unused.py
  • fedmsg-functions.sh, fedora-messaging-logger, fedora-messaging.sh, fedora-torrent-ini.py
  • find_failures.py, find_FTBFS.py, find_tagged_retired_epel_builds.py, find_unblocked_orphans.py, find-bad-builds.py, find-hidden-packages.py
    ftbfs_weekly_reminder.py, get_retired_packages.sh, isolate-tag.py, mass-tag.py, need-rebuild.py, prune-tag.py
  • secondary-mash-updates, secondary-sync.py, srpm-excluded-arch.py
  • sync-blocked-primary.py, sync-tagged-primary, sync-tagged-primary.py

Directories:

  • distgit/ (all contents), fesco/ (all contents), ftbfs-fti/ (all contents), misc/ (all contents), odcs/ (all contents), orphaned-packages-process/ (all contents)
  • branching/ (all contents), branching-epel/ (all contents), torrent-generator/ (all contents)

Target Directory Structure

Look at the ticket for reference: https://pagure.io/releng/issue/12925

Instructions

Please respond directly in this ticket by commenting for each script/directory using the following format:

Script Name: [script_name]
๐Ÿ“ Proposed Location: [path in new structure]
๐Ÿ”„ Alternative: [alternative path if unsure]
๐ŸŽฏ Purpose: (Check if it is written within the script - Yes/No)
๐Ÿ”— Dependencies:
- External repos: [list or "None"]
- Other releng scripts: [list or "None"]
- External services: [Koji, Bodhi, etc. or "None"]
- Special permissions: [signing keys, etc. or "None"]
๐Ÿ’ญ Additional Notes: 
[any concerns or questions]
Breaking changes: [describe potential issues]
Example Response:
Script Name: find_FTBFS.py
๐Ÿ“ Proposed Location: quality-assurance/ftbfs/
๐Ÿ”„ Alternative: packages/maintenance/
๐ŸŽฏ Purpose: Yes, (Identifies packages that fail to build from source and generates reports for maintainer action._
๐Ÿ”— Dependencies:
External repos: None
Other releng scripts: None
External services: Koji, Bugzilla API
Special permissions: Bugzilla API access
๐Ÿ’ญ Additional Notes: 
Part of FTBFS workflow, should be grouped with related scripts
Breaking changes: Cron job paths need updating

Timeline

Research completion: [Date: 10th September, 2025]
Review discussion: [Date: 10th September, 2025]

Questions

Post any questions as comments on this ticket. If you can't determine a script's purpose, mark it in your response and we'll discuss.


Response Guidelines
- One comment per script/directory - keeps discussion organized
- Use the exact format above - makes review easier
- Be specific about dependencies - helps plan migration order
- Flag unclear items - better to ask than guess
- Consider grouping - if multiple scripts serve the same purpose, mention in notes

Also, I would suggest checking if the script is still relevant for today's scenarios.

Metadata Update from @jnsamyak:
- Issue tagged with: investigation, medium-gain, medium-trouble

Metadata Update from @jnsamyak:
- Custom field blocking adjusted to 12925,12931
- Issue marked as blocking: #12925
- Issue marked as blocking: #12931

Metadata Update from @humaton:
- Issue assigned to amedvede

Script Name: block_retired.py
๐Ÿ“ Proposed Location: package/lifecycle
๐Ÿ”„ Alternative: misc or removed
๐ŸŽฏ Purpose: No (it is used to block retired package for specific tags on koji)
๐Ÿ”— Dependencies:
- External repos: https://docs.fedoraproject.org/en-US/infra/releng_misc_guide/sop_package_blocking/ it mentioned in doc
- Other releng scripts: build-functions.sh, find_tagged_retired_epel_builds.py
- External services: PDC, Koji
- Special permissions: Koji Permission to block package on tag.
๐Ÿ’ญ Additional Notes: 
Script is still using PDC endpoint to get retired packages, probably we not using it and should remove it.
Breaking changes: Since it uses PDC we probably didn't use this script since PDC decomition

It's not clear what external repos are in particular. Can we define a list? For now, I'm usingthe following list of repos as External repos, some of the repos weren't without commits for ages but still:

ansible
ci-resultsdb-listener
compose-tracker
compose-utils
container-blacklist
distgit-bugzilla-sync
failed-composes
fedora-atomic
fedora-comps
fedora-infrastructure
fedora-kickstarts
fedora-kiwi-descriptions
fedora-lorax-templates
fedora-modular-repos
fedora-module-defaults
fedora-packager
fedora-release
fedora-repos
fedora-scm-requests
fedpkg-minimal
flr
forgejo-deployment
generate_changelog
howtos
infra-docs
infra-docs-fpo
ipsilon-fedora
koji-fedmsg-plugin
koji-shadow-configs
koji-site
mailman-stack-maint
mark-atomic-bad
mash
multiboot-media-creator
pagure
pagure-dist-git
pungi
pungi-fedora
python-multilib
python-munch
releng-automation
review_stats
rpmautospec
tag2distrepo
toddlers
workstation-ostree-config
zuul

Also, do we understand under external services the services that depend on the script, or the opposite, because in the previous example. The script uses the Koji module, but Koji does not depend on this script. So, should I write Koji as an external service in that case?

@jnsamyak clarified that external services is the list of services used within the script; on the other hand, external repos is a list of repos where the script is used

koji-fedmsg-plugin
koji-shadow-configs
koji-site
container-blacklist
rpmautospec
python-multilib
python-munch
ci-resultsdb-listener
mailman-stack-maint
zuul
tag2distrepo
mark-atomic-bad
fedpkg-minimal
flr
mash
ipsilon-fedora
multiboot-media-creator
fedora-modular-repos

these are some of the repos i don't thing releng scripts have dependency on

Script Name: check_epel_deps.py
๐Ÿ“ Proposed Location: packages/epel/
๐Ÿ”„ Alternative: misc
๐ŸŽฏ Purpose: No (Identify Epel packages with broken dependencies and notify maintainers through email)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: check_epel_deps.sh
- External services: None
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
It generates a config header only for "epel-6" tree name. 
Script Name:  check_epel_deps.sh
๐Ÿ“ Proposed Location: packages/epel
๐Ÿ”„ Alternative: misc
๐ŸŽฏ Purpose:  No (It's a wrapper that calls check_epel_deps.py for specific use case with treename=epel-6 )
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: None
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
It won't work without check_epel_deps.py, because it's just a wrapper.
Breaking changes: [describe potential issues]

I think those two can be removed, or they need to be modified, since it mainly dedicated to identify broken dependencies for epel-6 packages

Script Name: check-latest-build.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (Find packages where latest and highest NVR are different in a tag.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: Kerberos auth
๐Ÿ’ญ Additional Notes: 
Should be renamed to use underscores instead of hyphens
Breaking changes: Renaming or moving won't break anything
Script Name: check-testing-pre-GA.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (Find builds tagged in both fX-updates-testign and fX tags)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None (working with kojihub api)
๐Ÿ’ญ Additional Notes: 
Need to be renamed
Breaking changes: Everything will be fine
Script Name: check-upgrade-paths.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities or remove
๐ŸŽฏ Purpose: Yes (A utility to examine a set of tags to verify upgrade paths for all the packages)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None (kerberos)
๐Ÿ’ญ Additional Notes: 
Need to be renamed. Also seems to be outdated, the functionality is close to check-latest-build.
Breaking changes: Nothing
Script Name: clean-amis.py
๐Ÿ“ Proposed Location: infrastructure/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to remove the nightly AMIs every 5 days.)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo, also mentioned that script is running as a cron job in fedora infrastructure, but I didn't find where
- Other releng scripts: None
- External services: Datagrepper, Pagure, AWS, fedfind
- Special permissions: Pagure access token, aws secret access key
๐Ÿ’ญ Additional Notes: 
Should be renamed, also it says that it runs as a cron job within Fedora Infra
Breaking changes: Potential cron job failure
UPD:
This script can be removed, now it handled by cloud-image-uploader
Script Name: clean-overrides.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to examine a buildroot override tag and compare contents to an updates tag.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None (kerberos)
๐Ÿ’ญ Additional Notes: 
Need to be renamed
Breaking changes: Nothing
Script Name: close-old-ftbfs-bugz.sh
๐Ÿ“ Proposed Location: misc/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: No (It closes bugzilla tickets with status NEW, if package in ticket has latest build date later that ticket creation)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji, Bugzilla
- Special permissions: Need access to modify bugzilla tickets
๐Ÿ’ญ Additional Notes: 
need to be renamed
Breaking changes: Nothing
Script Name: critpath.py
๐Ÿ“ Proposed Location: quality-assurance/critpath
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: No (Identify which packages are part of Fedora critpath and generate output with different options)
๐Ÿ”— Dependencies:
- External repos: ansible, pungi-fedora, infra-docs-fpo
- Other releng scripts: build-functions.sh
- External services: Bodhi, DL fedora, coreOS, dnf
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
This is an important script, so refactoring must be carefull
Breaking changes: Cron job path and pungi-fedora/nightly.sh path needs to be updated
Script Name: distgit-branch-unused.py
๐Ÿ“ Proposed Location: packages/distgit/
๐Ÿ”„ Alternative: packages/maintenance/, misc/, 
๐ŸŽฏ Purpose: Yes (This script checks if a branch may be deleted.)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo, howtos
- Other releng scripts: None
- External services: Koji, Bodhi
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. 
Breaking changes: requires updating the path in the doc
Script Name: fedmsg-functions.sh (can be removed since fedora-messaging.sh is implementing the same functionality, but with the modern fedora-messaging module)
๐Ÿ“ Proposed Location: infrastructure/messaging/
๐Ÿ”„ Alternative: utilities
๐ŸŽฏ Purpose: Yes (This is a bash shell script that is meant to be sourced by other scripts and aims to deliver functions common to sending messages to fedmsg[0] in rel-eng shell scripts.)
๐Ÿ”— Dependencies:
- External repos: pungi-fedora
- Other releng scripts: build-functions.sh, fedora-messaging-logger
- External services: fedmsg
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. Last time was updated 9 years ago, and it uses fedmsg so it might be outdated.
Breaking changes: Paths in pungi-fedora and some other releng scripts need to be changed.
Script Name: fedora-messaging-logger
๐Ÿ“ Proposed Location: infrastructure/messaging/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (fedora-messaging replacement for fedmsg-logger)
๐Ÿ”— Dependencies:
- External repos: ansible
- Other releng scripts: fedora-messaging.sh
- External services: fedora-messaging
- Special permissions: None (might be the ability to send messages to the message bus, but the script itself does not require anything in terms of permissions)
๐Ÿ’ญ Additional Notes: 
Needs to be added file extension, in that case .py. It's a Fedora messaging compatibility wrapper
Breaking changes: Paths need to be changed.
Script Name: fedora-messaging.sh
๐Ÿ“ Proposed Location: infrastructure/messaging/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (This is a bash shell script that is meant to be sourced by other scripts
and aims to deliver functions common to sending messages to fedora-messaging[0] in rel-eng shell scripts.)
๐Ÿ”— Dependencies:
- External repos: pungi-fedora
- Other releng scripts: None
- External services: fedora-messaging
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. It's a copy of fedmsg-functions.sh, but it uses fedora-messaging-logger  as a logger instead of fedmsg-logger
Breaking changes: Paths need to be changed in pungi-fedora
Script Name: fedora-torrent-ini.py
๐Ÿ“ Proposed Location: release_process/torrents/
๐Ÿ”„ Alternative: misc/
๐ŸŽฏ Purpose: No (Torrent metadata generator for Fedora)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: None
- External services: None
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. It runs on a torrent server to generate torrent metadata
Breaking changes: Nothing, but need to fix typo https://pagure.io/infra-docs-fpo/blob/master/f/modules/release_guide/pages/sop_torrent_releases.adoc#_91

```
I think those two can be removed, or they need to be modified, since it mainly dedicated to identify broken dependencies for epel-6 packages

check with Carl or Diego from epel team about this if stuck we can discuss more about this in our discussion call!

Script Name: clean-amis.py

๐Ÿ“ Proposed Location: infrastructure/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to remove the nightly AMIs every 5 days.)

๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo, also mentioned that script is running as a cron job in fedora infrastructure, but I didn't find where

Look for that in ansible repository all crons are defined there, otherwise I would recommend asking Kevin!

  • Other releng scripts: None
  • External services: Datagrepper, Pagure, AWS, fedfind
  • Special permissions: Pagure access token, aws secret access key

๐Ÿ’ญ Additional Notes:
Should be renamed, also it says that it runs as a cron job within Fedora Infra
Breaking changes: Potential cron job failure
```

Script Name: find_failures.py
๐Ÿ“ Proposed Location: release_process/mass_rebuilds/
๐Ÿ”„ Alternative: None
๐ŸŽฏ Purpose: Yes (A utility to discover failed builds in a given tag)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: mass_rebuild_file_bugs.py
- External services: Koji
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Breaking changes: Paths change within releng repo
Script Name: find_FTBFS.py
๐Ÿ“ Proposed Location: utilities/
๐Ÿ”„ Alternative: builds/koji/
๐ŸŽฏ Purpose: Yes (Find FTBFS packages)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None (kerberos)
๐Ÿ’ญ Additional Notes: 
Just a script to find FTBFS packages
Breaking changes: Nothing
Script Name: find_tagged_retired_epel_builds.py
๐Ÿ“ Proposed Location: utilities/
๐Ÿ”„ Alternative: misc or removed since it uses block_retired.py functionality, which using PDC 
๐ŸŽฏ Purpose: Yes (Check if there are EPEL builds from retired packages still in the buildroot.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
It might be outdated, last update 7 years ago, and it is still using block_retired.py functions that use PDC.
Breaking changes: Nothing
Script Name: find_unblocked_orphans
๐Ÿ“ Proposed Location: packages/orphaned/
๐Ÿ”„ Alternative: release_process/mass_branching because it is mentioned in mass branching SOP and requires adoption
๐ŸŽฏ Purpose: Yes (A utility to find orphaned packages in pagure that are unblocked in koji and to show what may require those orphans)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: everything inside orphaned-package-process dir
- External services: Koji, dnf
- Special permissions: Kerberos, but this script is part of bigger dir, where is also retire.py script which requires 
๐Ÿ’ญ Additional Notes: 
Now in the releng repo, this script is a link to the script which is placed in a different location, so it should definitely be fixed.
Breaking changes: Needs to move the whole dir
Script Name: find-bad-builds.py
๐Ÿ“ Proposed Location: builds/koji/utils
๐Ÿ”„ Alternative: utilities
๐ŸŽฏ Purpose: Yes (template for finding builds that meet some time/buildroot component critera. Edit to suit.) Needs to fix typo in description.
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None (kerberos)
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. It's a template to get builds by specific criteria. Not sure if it's used or not, last update was 2 years ago, but it's just adding gssapi_login as a part of koji authentication.
Breaking changes: Nothing
Script Name: find-hidden-packages.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: No (The name does not say much about this script, but basically it checks the difference in package versions between builds in parent and child tags)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji, rpm
- Special permissions: None (Kerberos)
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. We have a lot of scripts that are doing close enough functionality, so I guess part of them can be grouped up inside 1 script with different behavior based on arguments. Otherwise, it is difficult to follow all the scripts with close functionality, especially when most of them are not used anywhere else and are not even mentioned in the documentation.
Breaking changes: Nothing
Script Name: ftbfs_weekly_reminder.py
๐Ÿ“ Proposed Location: utilities/
๐Ÿ”„ Alternative: misc/
๐ŸŽฏ Purpose: No (Identify Bugzilla FYBFS bugs and notify maintainers as a part of cron job)
๐Ÿ”— Dependencies:
- External repos: ansible
- Other releng scripts: None
- External services: Bugzilla
- Special permissions: Bugzilla API key
๐Ÿ’ญ Additional Notes: 
This script is running on the server as a cron job, so moving it won't break anything.
Breaking changes: Nothing.
Script Name: get_retired_packages.sh
๐Ÿ“ Proposed Location: packages/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: No (But name saying exactly what it does.)
๐Ÿ”— Dependencies:
- External repos: ansible, infra-docs-fpo
- Other releng scripts: None
- External services: pkgs machine
- Special permissions: access to the packages machine since it is fetching packages from /stv/git/rpms
๐Ÿ’ญ Additional Notes: 
Breaking changes: Paths need to be modified in the cron job and in the documentation for the final freeze
Script Name: isolate-tag.py
๐Ÿ“ Proposed Location: builds/koji/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes  (A utility to tag all inherited builds into a specific koji tag)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: kerberos
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing
Script Name: mass-tag.py
๐Ÿ“ Proposed Location: builds/koji
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to tag rebuilt packages)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: None
- External services: Koji, rmp
- Special permissions: koji admin permissions
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing, maybe update in mass rebuild doc
Script Name: need-rebuild.py
๐Ÿ“ Proposed Location: release_process/mass_rebuilds/
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: Yes (A utility to discover packages that need a rebuild)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: None
- External services: Koji
- Special permissions: None (kerberos)
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. 
Breaking changes: Change paths in mass rebuild doc
Script Name: prune-tag.py
๐Ÿ“ Proposed Location: builds/koji/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to prune all but the latest build in a given tag)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: Kerberos
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing
Script Name: secondary-mash-updates
๐Ÿ“ Proposed Location: builds/compose
๐Ÿ”„ Alternative: sync/secondary/
๐ŸŽฏ Purpose: No (Creation and synchronization of update repositories for non-x86 architectures.)
๐Ÿ”— Dependencies:
- External repos: fedora-comps
- Other releng scripts: None
- External services: Koji
- Special permissions: Access to the Koji compose machine.
๐Ÿ’ญ Additional Notes: 
Miss file extension, in that case .sh
Breaking changes: Nothing
Script Name: secondary-sync.py
๐Ÿ“ Proposed Location: sync/secondary/
๐Ÿ”„ Alternative: [alternative path if unsure]
๐ŸŽฏ Purpose: Yes (A command line tool to sync all fedora secondary arches  from the hubs to a central mirror)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji, fedmsg, rpm
- Special permissions: Access to the compose machine
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. Also it uses fedmsg for notifying so it seems to be outdated. Not sure what permissions it requires.
Breaking changes: Nothing
Script Name: srpm-excluded-arch.py
๐Ÿ“ Proposed Location: utilities/
๐Ÿ”„ Alternative: packages/
๐ŸŽฏ Purpose: Yes (is a tool to give you a list of package names that are excluded on the given arches.  access to a srpm tree is needed)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: build-functions.sh, build-current.py
- External services: rpm
- Special permissions: access to pkgs machine
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Needs to modify path in build-functions.sh script
Script Name: sync-blocked-primary.py
๐Ÿ“ Proposed Location: sync/secondary/
๐Ÿ”„ Alternative: sync/primary/
๐ŸŽฏ Purpose: Yes (A utility to sync blocked packages in primary koji to a secondary arch for a given tag)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: Koji admin rights to block unblock pacakges.
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing
Script Name: sync-tagged-primary.py
๐Ÿ“ Proposed Location: sync/secondary/
๐Ÿ”„ Alternative: sync/primary
๐ŸŽฏ Purpose: Yes (A utility to sync tagged packages in primary koji to a secondary arch)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: sync-tagged-primary (bash script that runs this script with specific options)
- External services: Koji, rpm
- Special permissions: Koji admin (kerberos)
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing.
Script Name: sync-tagged-primary
๐Ÿ“ Proposed Location: sync/secondary
๐Ÿ”„ Alternative: sync/primary
๐ŸŽฏ Purpose: No (It's a outdated wrapper for sync-tagged-primary.py script)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: None
- Special permissions: same as Python script
๐Ÿ’ญ Additional Notes: 
Needs to be renamed. File extension needs to be added.
Breaking changes: Nothing needs to be updated if it is still in use.
Script Name: distgit/give-package.py
๐Ÿ“ Proposed Location: packages/distgit
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: Yes (Give a package in pagure-on-dist-git from one user to another)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: pagure distgit
- Special permissions: pagure api token
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: When move should be moved with distgit/utilities.py
Script Name: distgit/orphan-all-packages.py
๐Ÿ“ Proposed Location: packages/distgit/
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: Yes (Orphan all packages of a given set of users.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Pagure distgit
- Special permissions: Pagure api token
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: When move should be moved with distgit/utilities.py. It will be rewritten during the forge move.
Script Name: distgit/orphan-listed-packages.py
๐Ÿ“ Proposed Location: packages/distgit/
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: Yes (This script is useful to bulk orphan listed packages.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Pagure distgit
- Special permissions: Pagure API token
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: It will be rewritten during the forge move since it works with pagure.
Script Name: distgit/retire_packagers.py
๐Ÿ“ Proposed Location: packages/distgit/
๐Ÿ”„ Alternative:
๐ŸŽฏ Purpose: Yes (This script queries dist-git for all the packages a given packager maintains,
has commit or watches.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Pagure distgit
- Special permissions: Pagure api token
๐Ÿ’ญ Additional Notes: 
Breaking changes: Might be rewritten during the forge move.
Script Name: distgit/utilities.py
๐Ÿ“ Proposed Location: packages/distgit/
๐Ÿ”„ Alternative: 
๐ŸŽฏ Purpose: Yes (Utilities for manipulating dist-git (pagure).)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: distgit/give-package.py, distgit/orphan-all-packages.py
- External services: Pagure distgit
- Special permissions: pagure api token
๐Ÿ’ญ Additional Notes: 
It's a utility module, which does not run as a script but is imported into other scripts instead.
Breaking changes: needs to be in the same directory with other distgit scripts.
Script Name: fesco/sig-policy/sig_policy.py
๐Ÿ“ Proposed Location: infrastructure/fesco/sig-policy/
๐Ÿ”„ Alternative:
๐ŸŽฏ Purpose: Yes (This script enacts the FESCo SIG Policy as documented here: https://docs.fedoraproject.org/en-US/fesco/SIG_policy/)
๐Ÿ”— Dependencies:
- External repos: ansible, infra-docs-fpo
- Other releng scripts: None
- External services: fedpq, pagure
- Special permissions: pagure api token
๐Ÿ’ญ Additional Notes: 
I'm not sure if the directory name should follow the same convention as a Python script name.
Breaking changes: Paths in Ansible repos need to be adjusted.
Script Name: ftbfs-fti/follow-policy.py
๐Ÿ“ Proposed Location: packages/maintenance/ftbfs-fti/
๐Ÿ”„ Alternative: infrastructure/ftbfs-fti/
๐ŸŽฏ Purpose: No (Automatically detects packages with installation issues, creates Bugzilla tickets, and follows FESCo's policy for handling unmaintained packages.)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Bugzilla
- Special permissions: bugzilla token
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: It uses Jinja templates that are in same folder and should be moved with the script.
Script Name: misc/failed_composes_cleanup
๐Ÿ“ Proposed Location: misc/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to clean all the older issues in the releng/failed-compose tracker.)
๐Ÿ”— Dependencies:
- External repos: infra-docs=fpo
- Other releng scripts: None
- External services: Pagure
- Special permissions: Pagure API token.
๐Ÿ’ญ Additional Notes: 
Breaking changes: Paths in SOP doc need to be modified.
Script Name: misc/ga-cleanup
๐Ÿ“ Proposed Location: misc/
๐Ÿ”„ Alternative: builds/koji/
๐ŸŽฏ Purpose: Yes (script to print builds that are tagged both into the GA tag and updates-testing)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
File extension needs to be added, in that case .sh. Needs to be renamed.
Breaking changes: Nothing
Script Name: misc/rebuild
๐Ÿ“ Proposed Location: misc/
๐Ÿ”„ Alternative: builds/koji
๐ŸŽฏ Purpose: Yes (Script to build re-bootstrap pkgs for eg. glibc ABI changes and prepare substitution list for koji-shadow)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: Koji, rpm, fedpkg
- Special permissions: build permission
๐Ÿ’ญ Additional Notes: 
File extension needs to be added, in that case .sh. Not sure if it's still in use
Breaking changes: Nothing
Script Name: odcs/odcs-private-copose.py
๐Ÿ“ Proposed Location: builds/compose/odcs/
๐Ÿ”„ Alternative: infrastructure/odcs/
๐ŸŽฏ Purpose: Yes (This is used to generate private composes using ODCS)
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: ODCS
- Special permissions: odcs token, sigkey
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: Nothing.
UPD:
should be removed
Script Name: odcs/odcs-token.py
๐Ÿ“ Proposed Location: builds/compose/odcs/
๐Ÿ”„ Alternative: infrastructure/odcs/
๐ŸŽฏ Purpose: Yes (This is used to generate a token needed to run odcs composes )
๐Ÿ”— Dependencies:
- External repos: None
- Other releng scripts: None
- External services: openidc
- Special permissions: None
๐Ÿ’ญ Additional Notes: 
Needs to be renamed.
Breaking changes: It'd be better to put it in the same directory as the previous script.
UPD:
Should be removed
Script Name: orphaned-packages-process/all_files
๐Ÿ“ Proposed Location: packages/lifecycle/orphaned-packages-process/
๐Ÿ”„ Alternative: packages/orphaned/orphaned-packages-process/
๐ŸŽฏ Purpose: No (All scripts and files inside this dir is a part of one SOP, which identifies orphaned packages and retires them afterward.)
๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo
- Other releng scripts: all inside orphaned-packages-process dir
- External services: bugzilla, koji, dnf
- Special permissions: access to the machine where koji and python-fedora are installed. Also need access to modify bugzilla tickets.
๐Ÿ’ญ Additional Notes: 
This dir should be moved as it is under a new dir. Also this functionality can be implemented as a toddler plugin, so it triggers automatically.
Breaking changes: Paths in documentation.

```
I think those two can be removed, or they need to be modified, since it mainly dedicated to identify broken dependencies for epel-6 packages

check with Carl or Diego from epel team about this if stuck we can discuss more about this in our discussion call!

I will update the comment associated with the script when I get a response.

Script Name: clean-amis.py

๐Ÿ“ Proposed Location: infrastructure/
๐Ÿ”„ Alternative: utilities/
๐ŸŽฏ Purpose: Yes (A utility to remove the nightly AMIs every 5 days.)

๐Ÿ”— Dependencies:
- External repos: infra-docs-fpo, also mentioned that script is running as a cron job in fedora infrastructure, but I didn't find where

Look for that in ansible repository all crons are defined there, otherwise I would recommend asking Kevin!

This script can be removed, I updated comment

  • Other releng scripts: None
  • External services: Datagrepper, Pagure, AWS, fedfind
  • Special permissions: Pagure access token, aws secret access key

๐Ÿ’ญ Additional Notes:
Should be renamed, also it says that it runs as a cron job within Fedora Infra
Breaking changes: Potential cron job failure
```

Metadata Update from @amedvede:
- Issue untagged with: medium-gain, medium-trouble
- Issue tagged with: high-gain, high-trouble

for branching/ and torrent-generator/ dirs, my +1 to Patrik's investigation

Oh, please know that in the recent PRs, the odcs is also retired, there are no need to have them in the new structure they should be considered as remove

Oh, please know that in the recent PRs, the odcs is also retired, there are no need to have them in the new structure they should be considered as remove

Updated comments! Thanks for clarification

Metadata Update from @jnsamyak:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

Metadata