32 lines
900 B
Python
32 lines
900 B
Python
import os, errno, stat
|
|
from entropy.const import etpUi
|
|
etpUi['quiet'] = True
|
|
from entropy.server.interfaces import Server
|
|
|
|
srv = Server()
|
|
repos = srv.repositories()
|
|
atom_cache = set()
|
|
|
|
for repo_id in repos:
|
|
repo = srv.open_repository(repo_id)
|
|
pkg_ids = repo.listAllPackageIds(order_by="atom")
|
|
for pkg_id in pkg_ids:
|
|
atom = repo.retrieveAtom(pkg_id)
|
|
if atom in atom_cache:
|
|
continue
|
|
content = repo.retrieveContent(pkg_id)
|
|
for path in content:
|
|
try:
|
|
st = os.lstat(path)
|
|
except OSError as err:
|
|
if err.errno != errno.ENOENT:
|
|
raise
|
|
continue
|
|
if stat.S_ISREG(st.st_mode) and (st.st_nlink > 1) and (st.st_size == 0):
|
|
# hard link !
|
|
print(atom)
|
|
atom_cache.add(atom)
|
|
break
|
|
|
|
srv.shutdown()
|